VB一个无法赋值的问题

pzxzhy 2018-01-05 10:26:57
第一次遇见无法赋值的奇怪情况,该情况只发生在特定属性,在此求助,并供大家研讨。
————————————————————————分割线————————————————————————
我们先看一组常规情况:
Sub Test1()
A = 1
MsgBox A
End Sub
提示框弹出的内容是什么?对,1,没错,太简单了
————————————————————————分割线————————————————————————
现在看下一组,我们新建一个PPT,在第1页里,把所有东西都删了,然后插入一个文本框(系统自动认为这个文本框叫Shapes(1)),在里面随便写点什么东西,按ALT+F11。
Sub Test2()
With ActivePresentation.Slides(1).Shapes(1).TextFrame2.TextRange.Font
With .Line
.ForeColor.RGB = RGB(250, 0, 0)
.Weight = 1
MsgBox .ForeColor.RGB
MsgBox .Weight
End With
End With
End Sub
这时提示框弹出的内容是啥?并没有什么异常,和你想的一样,第一次弹出250,第二次弹出1,而且我们看到,文本框里的字被描了个边。
(注:为啥我要用两个with?是想让各位看得清楚些,有利于做对比,后面会用到)
————————————————————————分割线————————————————————————
再来一组,在刚才的PPT里,插入一张表(系统自动认为这个文本框叫Shapes(2)),在第一个单元格cell(1,1)里随便写点什么东西,按ALT+F11。
Sub Test3()
With ActivePresentation.Slides(1).Shapes(2).Table.Cell(1, 1).Shape.TextFrame2.TextRange.Font
With .Fill
.ForeColor.RGB = RGB(0, 0, 0)
MsgBox .ForeColor.RGB
End With
End With
End Sub
还是正常的,提示框弹出0,单元格cell(1,1)里的字变成黑色。
————————————————————————分割线————————————————————————
下面开始第4组:
Sub Test4()
With ActivePresentation.Slides(1).Shapes(2).Table.Cell(1, 1).Shape.TextFrame2.TextRange.Font
With .Line
.ForeColor.RGB = RGB(250, 0, 0)
.Weight = 6
MsgBox .ForeColor.RGB
MsgBox .Weight
End With
End With
End Sub
现在弹出的提示框是啥?分别弹出两次莫明其妙的数,反正不是我们刚才赋值的250和6,这是什么鬼啊?而且,单元格cell(1,1)里的字没有任何变化。
—————————————————————最后的分割线—————————————————————
之所以列这么多组,是想表明代码的格式没有问题,没有错误提示,然而却出现了第4组赋值不能生效的情况,无法理解,供各位研讨。
求解释!求解释!求解释!
...全文
999 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
已经确认,在ppt 2016中无法实现表格中文字描边. 因此楼主你可能遇到了一个假操作bug而不是vba的问题。
赵4老师 2018-01-15
  • 打赏
  • 举报
回复
通读MSDN在线文档中PowerPoint开发相关章节。
pzxzhy 2018-01-12
  • 打赏
  • 举报
回复
引用 11 楼 WallesCai 的回复:
[quote=引用 5 楼 pzxzhy 的回复:] [quote=引用 3 楼 Chen8013 的回复:] 这有什么好奇怪的,那是因为“表格中的文字” 不支持设置“描边”吧! 这些“对象”都相当于“控件”,它的哪些属性允许你修改、哪些属性不允许你修改, 是它说了算…………
表格中的对象支持描边!在PPT中直接操作,没有问题,你可以试试。 如果直接操作能够实现,那么,实现这个操作的代码是什么?[/quote] "描边"能录个宏看到代码么?[/quote] PPT里不能,我在WORD里试了一下(WORD能录宏),然而关于 “描边” 这个操作,什么也没录出来,是一片空白。 感觉OFFICE的运行机制很奇怪。
pzxzhy 2018-01-12
  • 打赏
  • 举报
回复
引用 13 楼 zhao4zhong1 的回复:
VBA for PPT不是要被.NET for PPT代替了吗?
有时间表吗? 目前还需要用VBA干活 T.T
赵4老师 2018-01-08
  • 打赏
  • 举报
回复
VBA for PPT不是要被.NET for PPT代替了吗?
熊孩子开学喽 2018-01-06
  • 打赏
  • 举报
回复
引用 5 楼 pzxzhy 的回复:
[quote=引用 3 楼 Chen8013 的回复:] 这有什么好奇怪的,那是因为“表格中的文字” 不支持设置“描边”吧! 这些“对象”都相当于“控件”,它的哪些属性允许你修改、哪些属性不允许你修改, 是它说了算…………
表格中的对象支持描边!在PPT中直接操作,没有问题,你可以试试。 如果直接操作能够实现,那么,实现这个操作的代码是什么?[/quote] "描边"能录个宏看到代码么?
舉杯邀明月 2018-01-06
  • 打赏
  • 举报
回复
引用 11 楼 WallesCai 的回复:
[quote=引用 5 楼 pzxzhy 的回复:] [quote=引用 3 楼 Chen8013 的回复:] 这有什么好奇怪的,那是因为“表格中的文字” 不支持设置“描边”吧! 这些“对象”都相当于“控件”,它的哪些属性允许你修改、哪些属性不允许你修改, 是它说了算…………
表格中的对象支持描边!在PPT中直接操作,没有问题,你可以试试。 如果直接操作能够实现,那么,实现这个操作的代码是什么?[/quote] "描边"能录个宏看到代码么?[/quote] 呵呵,你可以试一下能不能“录制宏”啊……  你也可以看看别人的讨论啊(我在9楼的回复)。
X-i-n 2018-01-05
  • 打赏
  • 举报
回复
With语句块不要嵌套 With语句块不要嵌套 With语句块不要嵌套
pzxzhy 2018-01-05
  • 打赏
  • 举报
回复
补充:这种情况只针对【表格里的字】的【line方法】出现,其他测试都没有问题
pzxzhy 2018-01-05
  • 打赏
  • 举报
回复
引用 9 楼 Chen8013 的回复:
查不到。 找不到其它“相关”的属性、成员。 感觉PPT的VBA还真只是个半成品…… 手里没有这方面的资料,又无法“录制宏”。
舉杯邀明月 2018-01-05
  • 打赏
  • 举报
回复
查不到。 找不到其它“相关”的属性、成员。 感觉PPT的VBA还真只是个半成品…… 手里没有这方面的资料,又无法“录制宏”。
pzxzhy 2018-01-05
  • 打赏
  • 举报
回复
引用 7 楼 Chen8013 的回复:
好吧,发现还真可以手工设置。 但目前你发出来的那种代码却“无效”。 一直没玩过PPT,不清楚是怎么回事, 等会儿有空看看…………
多谢!辛苦大佬。
舉杯邀明月 2018-01-05
  • 打赏
  • 举报
回复
好吧,发现还真可以手工设置。 但目前你发出来的那种代码却“无效”。 一直没玩过PPT,不清楚是怎么回事, 等会儿有空看看…………
舉杯邀明月 2018-01-05
  • 打赏
  • 举报
回复
引用 5 楼 pzxzhy 的回复:
[quote=引用 3 楼 Chen8013 的回复:] 这有什么好奇怪的,那是因为“表格中的文字” 不支持设置“描边”吧! 这些“对象”都相当于“控件”,它的哪些属性允许你修改、哪些属性不允许你修改, 是它说了算…………
表格中的对象支持描边!在PPT中直接操作,没有问题,你可以试试。 如果直接操作能够实现,那么,实现这个操作的代码是什么?[/quote] 你能把表格中的文字设置上“描边”的?
pzxzhy 2018-01-05
  • 打赏
  • 举报
回复
引用 3 楼 Chen8013 的回复:
这有什么好奇怪的,那是因为“表格中的文字” 不支持设置“描边”吧! 这些“对象”都相当于“控件”,它的哪些属性允许你修改、哪些属性不允许你修改, 是它说了算…………
表格中的对象支持描边!在PPT中直接操作,没有问题,你可以试试。 如果直接操作能够实现,那么,实现这个操作的代码是什么?
pzxzhy 2018-01-05
  • 打赏
  • 举报
回复
引用 2 楼 Runnerchin 的回复:
With语句块不要嵌套 With语句块不要嵌套 With语句块不要嵌套
两个with只是让大伙看得清晰一些,弄成一个with结果也是一样,在文中括号已经说了-__- 而且,其他SUB里的两层嵌套也没有问题。
舉杯邀明月 2018-01-05
  • 打赏
  • 举报
回复
这有什么好奇怪的,那是因为“表格中的文字” 不支持设置“描边”吧! 这些“对象”都相当于“控件”,它的哪些属性允许你修改、哪些属性不允许你修改, 是它说了算…………

2,462

社区成员

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

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