欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 自定义一个取光标数值的函数 但是通不过

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2896人关注过本帖树形打印复制链接

主题:自定义一个取光标数值的函数 但是通不过

帅哥哟,离线,有人找我吗?
qq代人发帖
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:18691 积分:0 威望:0 精华:0 注册:2013/7/15 9:22:16
自定义一个取光标数值的函数 但是通不过  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2020/3/2 13:50:25 [只看该作者]

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

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

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

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

 

 

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


 回到顶部
帅哥哟,离线,有人找我吗?
小心翼翼
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:3 积分:0 威望:0 精华:0 注册:2020/3/2 11:46:45
  发帖心情 Post By: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

这样行不行?

 回到顶部
帅哥哟,离线,有人找我吗?
小心翼翼
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:3 积分:0 威望:0 精华:0 注册:2020/3/2 11:46:45
  发帖心情 Post By:2020/3/3 0:33:55 [只看该作者]

取光标的数值用 sub可以做到  为啥用function个就不行呢?

 回到顶部
帅哥哟,离线,有人找我吗?
yukizzc
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2020/3/3 13:24:20 [只看该作者]

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

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


 回到顶部
帅哥哟,离线,有人找我吗?
小心翼翼
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:3 积分:0 威望:0 精华:0 注册:2020/3/2 11:46:45
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By: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的字符串数据.

 

这样做交互试试。

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


 回到顶部