|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
我用API函数GetWindowText调用在VBA程序中定义的一个字符串变量, 在调试过程中发现, 对字符串变量定义的方法会影响函数GetWindowText的返回值.
在以下的例子是试图读取当前活动窗口的标题值,并把值存到变量k. 当我采用 Dim k, d as String 形式定义两个字符串变量,函数返回的k值为空串,无比的郁闷之下在网上搜刮了相关资料,发现调用方法都没问题,最后在几乎绝望的时候尝试把定义字符串变量的方法改一下,分成两行,
由
Dim k, d as String
改为
Dim k as String
Dim d as String
修改后程序运行成功了,狂喜之中又有点郁闷,然后又尝试把定义语句改为
Dim d, k as String
也运行成功了。
问题是解决了,但我还是想搞清楚这两种定义方法到底有什么区别,在同一行定义多个字符串变量,写在前面的和写在后面的在VBA里会有什么区别呢?? 如果你也有类似的经历,请分享一下心得体会。
附程序:
Option Explicit
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare Function GetForegroundWindow Lib "user32" () As Long
Sub Test()
Dim a, c As Long
Dim d, k As String
c = 256
a = GetForegroundWindow()
k = Space$(c)
Call GetWindowText(a, k, c)
'//...
'//...
End Sub |
|