【发布时间】:2013-07-18 07:04:07
【问题描述】:
我需要获取表格的选定单元格。
我尝试了以下代码
Set oTbl = .ShapeRange(1).Table
For x = 1 To oTbl.Rows.Count
For y = 1 To oTbl.Columns.Count
If oTbl.Cell(x, y).Selected Then
With oTbl.Cell(x, y).Shape
.Fill.ForeColor.RGB = RGB(255, 0, 0)
.Fill.Visible = True
End With
End If
Next
Next
如果您使用的是 vba,这可以正常工作,但是我使用 vb.net 创建了一个 vsto,它使用下面的代码为整个表格着色
Dim oShape As PowerPoint.Shape = Nothing
Dim oTable As PowerPoint.Table
With Globals.ThisAddIn.Application.ActiveWindow.Selection
For Each oShape In .ShapeRange
oShape.Select()
Exit For
Next
oTable = oShape.Table
Dim i As Integer = 0
Dim j As Integer = 0
For i = 1 To oTable.Rows.Count
For j = 1 To oTable.Columns.Count
If oTable.Cell(i, j).Selected = True Then
With oTable.Cell(i, j).Shape
.Fill.ForeColor.RGB = RGB(255, 0, 0)
.Fill.Visible = Microsoft.Office.Core.MsoTriState.msoTrue
End With
End If
Next
Next
End With
请帮忙
谢谢
乐华M
【问题讨论】:
-
您可能想要描述您遇到的问题。你没有给我们任何关于出了什么问题的暗示。但对于初学者来说,看起来你的逻辑是错误的。 For/Next 循环选择幻灯片上的第一个形状并退出。它可能会或可能不会给您留下对所选形状的活动引用,如果当前所选形状不是表格,您的代码将在 oTable=oShape.Table 处失败
-
您好史蒂夫,我将选择一张桌子,请您将 Dim i 和 j 中的代码作为整数。请注意,此代码只是从按钮运行演示。稍后会处理它是否是一张桌子。逻辑很好,运行良好,只需将 vba 中的初始代码用于 powerpoint,然后将 vb.net vsto 中的第二个代码用于 powerpoint,您会发现不同之处
-
您的第一个代码块
For Each oShape In .ShapeRange ...更改了选择。您正在选择整个形状。之前选择了什么并不重要,因为你在代码中改变了选择,所以它当然会选择整个表格。
标签: vb.net macros powerpoint visual-studio-macros