有谁了解VB中CallByName这个函数?若能解决高分相送!

nfsxy 2005-10-11 09:16:20
问题是这样的,我在VBA中测试一个对象的一个属性,这个属性是可写的布尔型。例如设对象名为oObjToTest,要测的属性名是sPropName。我先通过CallByName oObjToTest, sPropName, VbLet, bValue这个语句改变sPropName的值。其中bValue是布尔类型,其值为Non-COM compliant True,就是赋给它一个非零值,而不是赋给它一个True。运行上面的语句后oObjToTest.sPropName=False。然后我又用这个赋值语句:oObjToTest.sPropName=bValue,运行后oObjToTest.sPropName=True。就是说两次赋值结果竟然是不同的!有哪位大虾知道原因吗?不排除这个对象本身有bug的可能性。
...全文
403 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
nfsxy 2005-10-11
  • 打赏
  • 举报
回复
楼上CBOL是什么意思?看不懂
samwzhang 2005-10-11
  • 打赏
  • 举报
回复
CBOL
nfsxy 2005-10-11
  • 打赏
  • 举报
回复
bValue的值一直不变。我就像最后这样把两句话放一前一后,而且也改变过两句话的顺续,结果仍然一样。另外,在VB6中这个问题不存在,两次运行后sPropName都是True。还有,如果给bValue赋值时用bValue=True or bValue=False,既给bValue赋予合法的布尔值,也没有这种问题。

CallByName oObjToTest, sPropName, VbLet, bValue'result: sPropName=False
oObjToTest.sPropName=bValue'result: sPropName=True
winehero 2005-10-11
  • 打赏
  • 举报
回复
有代码能否贴出来?
按道理这两种处理应该一样,是不是用CallByName时,你的代码前面有些处理将这个bValue变为0。。。
northwolves 2005-10-11
  • 打赏
  • 举报
回复
没发现你说的现象.

Dim bvalue As Boolean
Private Sub CommandButton1_Click()
Sheet1.Range("a1").Characters.Insert "xxx"
Sheet1.Range("a1").Characters.Font.Color = vbRed
End Sub

Private Sub CommandButton2_Click()

Dim f As Font
Set f = Sheet1.Range("a1").Characters.Font
bvalue = True
CallByName f, "Bold", VbLet, bvalue
MsgBox "Sheet1.Range(""a1"").Characters.Font.Bold=" & Sheet1.Range("a1").Characters.Font.Bold
bvalue = False
CallByName f, "Bold", VbLet, bvalue
MsgBox "Sheet1.Range(""a1"").Characters.Font.Bold=" & Sheet1.Range("a1").Characters.Font.Bold
End Sub

Private Sub CommandButton3_Click()

bvalue = True
Sheet1.Range("a1").Characters.Font.Bold = bvalue
MsgBox "Sheet1.Range(""a1"").Characters.Font.Bold=" & Sheet1.Range("a1").Characters.Font.Bold
bvalue = False
Sheet1.Range("a1").Characters.Font.Bold = bvalue
MsgBox "Sheet1.Range(""a1"").Characters.Font.Bold=" & Sheet1.Range("a1").Characters.Font.Bold
End Sub

2,462

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧