首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何将循环编程到VBA上的DDEPoke调用中?

如何将循环编程到VBA上的DDEPoke调用中?
EN

Stack Overflow用户
提问于 2015-11-24 10:46:31
回答 1查看 1.4K关注 0票数 0

我正在尝试将一个循环编程到一个DDEPoke调用中,这个函数是由VBA支持的,称为OPC。这将使我能够从excel电子表格写入PLC (RSLogix 500)数据库。

这是代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Private Function Open_RsLinx()

On Error Resume Next
Open_RsLinx = DDEInitiate(RsLinx, C1)

If Err.Number <> 0 Then
    MsgBox "Error Connecting to topic", vbExclamation, "Error"
    OpenRSLinx = 0 'Return false if there was an error
End If


End Function

Sub CommandButton1_Click()

RsLinx = Open_RsLinx()
For i = 0 To 255

    DDEPoke RsLinx, "N16:0", Cells(1 + i, 2)

Next i
DDETerminate RsLinx

End Sub

如果与OPC服务器建立了链接(在本例中是通过RSLinx),则此代码可以工作,并将向PLC写入数据。

问题是,我无法让部分DDEPoke RsLinx, "N16:0", Cells(1 + i, 2)按顺序将数据从一个excel单元写入到PLC数据数组的一个元素。

我试着做DDEPoke RsLinx, "N16:i", Cells(1 + i, 2)DDEPoke RsLinx, "N16:0+i", Cells(1 + i, 2),但是两者都没有效果,程序根本没有写任何东西。

如何设置代码以使N16:0一直递增到N16:255,然后停止?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-24 10:52:44

将变量i从字符串中断开。但是,要注意隐式类型转换,但取决于哪种类型转换(Str()或CStr()),您将得到一个前导空间。因此,转换数字Str(i),然后用Trim()包装以确保没有额外的空格,并将结果连接回"N“字符串:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
RsLinx = Open_RsLinx()
For i = 0 To 255

    DDEPoke RsLinx, "N16:" & Trim(Str(i)), Cells(1 + i, 2)

Next i

i在字符串中不能工作的原因是,在VBA中,一组引号中的任何内容都被认为是文字字符串。与其他一些语言不同(想到的是PHP),在这样的字符串中可以解析变量,VBA必须将变量连接在一起。请考虑以下几点:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Dim s As String
s = "world"
Debug.Print "Hello s!"

这会将Hello s!的文字输出到即时窗口,因为s不是作为变量,而是作为文字字符串的一部分。正确的方法是通过连接:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Dim s As String
s = "world"
Debug.Print "Hello " & s & "!"

这会将预期的Hello World!输出到即时窗口,因为s现在被视为变量,并被解析和连接。

如果不是这样,可能很难处理以下问题:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Dim i As Integer
For i = 0 to 9
  Debug.Print "this" & i
Next i  

这样你就可以:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
th0s0
th1s1
th2s2
th3s3
th4s4
'etc

在很多情况下这会让事情变得很难处理。

尽管如此,还是有一些语言--尤其是PHP --在使用特定的引号集( ""'' --我不记得是哪一种)时,实际上在将变量嵌入字符串本身时会解析变量:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$i = 5;
echo "this is number $i";

VBA没有此特性。

希望能帮上忙..。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33902862

复制
相关文章
Android 必知必会 - 隐藏烦人的 JAVA 图标
当你在项目中运行 ./gradlew 是,有时需要调用一些 JAVA 工具。在 OS X 上,这会伴随着 Java 图标在 Docker 上的显示,并且永远不会消失,影响你对项目的关注。
他叫自己MR.张
2019/07/01
7450
Android 必知必会 - 隐藏烦人的 JAVA 图标
DRF三级视图
所谓DRF三级视图,是指DRF对于GenericAPIView和Mixin的直接封装。在DRF的文档中,可以看到有非常的多的“三级视图”可供使用。在此不做一一展示使用,只是选择几个来再一次重新实现DRF二级视图GenericAPIView中的方法。
zy010101
2021/12/17
4510
DRF三级视图
Android开发-Listview中显示不同的视图布局
在重写ListView的BaseAdapter时,我们常常在getView()方法中复用convertView,以提高性能。convertView在Item为单一的同种类型布局时,能够回收并重用,但是多个Item布局类型不同时,convertView的回收和重用会出现问题。比如有些行为纯文本,有些行则是图文混排,这里纯文本行为一类布局,图文混排的行为第二类布局。单一类型的ListView很简单,下面着重介绍一下ListView包含多种类型视图布局的情形。
他叫自己MR.张
2019/07/01
2.3K0
DRF一级视图APIView
APIView是Django REST framework提供的所有视图的基类,继承自Django的View类。使用方式:
zy010101
2021/12/15
9240
DRF二级视图GenericAPIView
GenericAPIView继承自APIView,增加了对于列表视图和详情视图可能用到的通用支持方法。通常使用时,可搭配一个或多个Mixin扩展类。
zy010101
2021/12/17
7060
DRF二级视图GenericAPIView
配置不同二级域名访问不同端口的应用
一,简单配置方法: 1、记录类型选择隐形URL 2、记录值解析到一级域名对应的端口 (阿里云的好像不太灵) 二、Apache配置代理: 1、http.conf: NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin liang.top ServerName www.ccc.top ServerAlias ccc </VirtualHost> #<VirtualHost *:80> # S
JQ实验室
2022/02/11
3.5K0
配置不同二级域名访问不同端口的应用
Android必知必会-App 常用图标尺寸规范汇总
版权声明:本文为[他叫自己Mr.张]的原创文章,转载请注明出处,否则禁止转载。 https://micro.blog.csdn.net/article/details/51910874
他叫自己MR.张
2019/07/01
1.4K0
Android必知必会-App 常用图标尺寸规范汇总
Phoenix Framework对于Tree该方法节点设置不同的图标,每个[通俗易懂]
在包Javax Swing的Tree对象。我们需要设置不同的图标为每个节点。它封装了一个通用的方法:
全栈程序员站长
2022/07/06
3210
Phoenix Framework对于Tree该方法节点设置不同的图标,每个[通俗易懂]
让知更鸟主题的分类图标支持二级分类
今天,突然想启用知更鸟主题的分类图标功能,之前是怕影响速度,现在开了静态缓存,安心了一点。 参照鸟哥的方法在主题选项里面开启后,发现图片的超链接打不开!检查后发现路径不对,比如玛思阁的 Batch 分类的地址应该是 http://zhangge.net/script/batch,而分类图标链接却是 http://zhangge.net/batch(Ps:本来路径中默认会有个 category 的,玛思阁用插件屏蔽了)。这样出来的链接的目的地就变成 404 了。。。看来,知更鸟主题的分类图标默认不支持 2 级
张戈
2018/03/26
1.1K0
让知更鸟主题的分类图标支持二级分类
不同语言操作符的优先级
fliter
2023/09/05
1200
不同语言操作符的优先级
干货!7个设计师必知的图标设计原理,收藏了!
创建高质量的图标套组需要合适的方法,训练有素的眼睛,一些迭代和大量实践。下面,我将通过7个原则和大量实际示例来说明。最终目标是让你了解设计出优质图标的关键细节。
用户5009027
2020/02/19
1.3K0
第一季 | view 视图的不同用法-APIView
Django REST框架构建Web API。Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
小团子
2020/04/13
1.3K0
Android开发必知--几种不同对话框的实现
  在开发过程中,与用户交互式免不了会用到对话框以实现更好的用户体验,所以掌握几种对话框的实现方法还是非常有必要的。在看具体实例之前先对AlertDialog做一个简单介绍。AlertDialog是功
codingblock
2017/12/28
2.4K0
Android开发必知--几种不同对话框的实现
Nginx为多个不同的静态资源配置不同的二级域名
有多个域名: dog.aimiter.com cat .aimiter.com … 需要映射到不同的静态资源目录: /var/www/html/dog /var/www/html/cat
Spaceack
2020/11/04
2.7K0
Nginx为多个不同的静态资源配置不同的二级域名
访问控制protected是不同包中对子类可见,什么意思?
System.out.println("in B i=" + i);//protected是不同包中对子类(Test)可见,马 克-t o-w i n
马克java社区
2021/03/24
6650
访问控制protected是不同包中对子类可见,什么意思?
如何使用Sentry通过视图实现Impala的行级授权
温馨提示:要看高清无码套图,请使用手机打开并单击图片放大查看。 Fayson的github:https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢 1.文档编写目的 ---- 在CDH中要实现表的行级授权,可以使用Cloudera的产品RecordService,但是该组件尚处于开发中,Beta版,并不建议上生产,参考: https://www.cloudera.com/downloads/beta/record-service.html 在CDH中,S
Fayson
2018/04/18
2.4K0
如何使用Sentry通过视图实现Impala的行级授权
深度学习在语音识别上的应用
我今天演讲主要分四个部分,第一个是分享语音识别概述,然后是深度神经网络的基础;接下来就是深度学习在语音识别声学模型上面的应用,最后要分享的是语音识别难点以及未来的发展方向。
腾讯云AI
2018/10/11
7.6K2
深度学习在语音识别上的应用
荣耀手环5自定义详解
荣耀手环5发布时就表明会开启自定义,经历了这么长时间,终于官方表示要开始自定义操作了,目前还在内测中,工具会在9月中旬放出,已经有华为主题负责人讲解了过程,本文章在此对其进行介绍和详解。
KINDYEAR
2022/07/12
1.3K0
荣耀手环5自定义详解
点击加载更多

相似问题

必须在“回收”视图上滚动,使项目变得可见。

10

地图视图标记不总是可见的

17

Google在不同的缩放级别上设置数据层的可见性

12

视图元素在不同API级别上的不同外观-Android

10

在视图已可见时更改uitabbar图标

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文