以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  自定义一个取光标数值的函数 但是通不过  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=174681)

--  作者:qq代人发帖
--  发布时间:2020/3/2 13:03:33
--  自定义一个取光标数值的函数 但是通不过
请教:我想自定义一个取光标数值的函数 但是通不过  请帮忙看看 谢谢
Function SYSPARAM(6)(Grid, Index, x, y)
SYSPARAM(6)=0
    \'防止公式逐周期模式时调用
    If Formula.WorkMode = 0 Then
        Exit Function 
    End If
    
    dim Date
    dim Values
    call Grid.ValueByPoint(x,y,Date,Values,true)
    SYSPARAM(6)=Values
End Function

--  作者:yukizzc
--  发布时间:2020/3/2 13:50:25
--  

http://www.weistock.com/WeisoftHelp/visualbasiczidingyihanshu.htm

可以通过两种方法添加自定义函数:

1、在公式编辑器界面中,鼠标在“函数”解释定义区单击右键,然后选择“添加自定义函数”。

2、在Visual Basic工程管理器中选择Function模块,进入Visual Basic编辑界面,然后选择“插入”菜单中的“过程”。

 

 

必须要按照这种格式去定义,另外看下例子。还有光标数值这种做不到,传入的Formula这个对象是公式对象没法再去获取你grid对象。vba和pel交互传递的只能是公式对象其他不行


--  作者:小心翼翼
--  发布时间:2020/3/3 0:27:38
--  
Function SYSPARAM(6)(Grid, Index, x, y)
SYSPARAM(6)=0
    dim Date
    dim Values
    call Grid.ValueByPoint(x,y,Date,Values,true)
    SYSPARAM(6)=Values
End Function

这样行不行?

--  作者:小心翼翼
--  发布时间:2020/3/3 0:33:55
--  
取光标的数值用 sub可以做到  为啥用function个就不行呢?
--  作者:yukizzc
--  发布时间:2020/3/3 13:24:20
--  

自定义函数是pel公式和vba之间交互,pel公式里是没有当前光标这个对象的。

你如果要光标读取就不要用这种交互方式,自己直接在vba里面写不要传递给pel使用


--  作者:小心翼翼
--  发布时间:2020/3/12 19:34:32
--  
那怎么用在指标公式里面呢?

Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
    Private Type POINTAPI             \'定义点(Point)结构
        X As Long        \'点在X坐标(横坐标)上的坐标值
        Y As Long        \'点在Y坐标(纵坐标)上的坐标值
    End Type


 Dim MyPoint As POINTAPI
\'    dl&= GetCursorPos(MyPoint)        \'调用函数,获取屏幕鼠标坐标
 Dim Ypos As Long
\'    Ypos=MyPoint.Y

--  作者:yukizzc
--  发布时间:2020/3/14 15:54:15
--  

GetPrivateProfileFloat

INI文件中读取单精度浮点数变量

 

WritePrivateProfileFloat

写单精度浮点数变量到INI文件

vba里把坐标位置通过ini文件方式写到文件里,然后pel里也有读取ini文件的函数

读取INI文件字符串。用法:GETINIFILESTRING(PATH,APP,KEYNAME);PATH为INI文件的路径名,APP为节点名,KEYNAME为数据项名称
例如:GETINIFILESTRING(\'C:\\TESTNINFILE.INI\',\'SETTING\',\'MYDATA\');表示在C:\\TESTNINFILE.INI文件中读取SETTING节点的,项名称为MYDATA的字符串数据.

 

这样做交互试试。

你是的这样操作的目的是什么??本身图上十字光标能看到值的,如果用这个来控制程序太不现实