0

我需要获取表格的选定单元格。

我尝试了以下代码

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

4

2 回答 2

0

这适用于VBA;我不使用.Net,所以对此无能为力。

Sub TableTest()

    Dim oSh As Shape
    Dim oTbl As Table
    Dim lRow As Long ' your i
    Dim lCol As Long ' your j
    Set oSh = ActiveWindow.Selection.ShapeRange(1)
    Set oTbl = oSh.Table

    With oTbl
        For lRow = 1 To .Rows.Count
            For lCol = 1 To .Columns.Count
                If .Cell(lRow, lCol).Selected Then
                    With .Cell(lRow, lCol).Shape
                        .Fill.ForeColor.RGB = RGB(255, 0, 0)
                        .Fill.Visible = True
                    End With
                End If
            Next
        Next
    End With

End Sub
于 2013-07-21T18:38:53.663 回答
0

您在 VB.NET 中的第一个代码块更改了选择:

For Each oShape In .ShapeRange
    oShape.Select()
    Exit For
Next

包含整个表格并且是选择的一部分的形状正在被此块重新选择——这会导致在代码开始时选择整个形状和表格。

删除这段代码,其余的应该可以工作。

于 2016-05-23T22:25:14.070 回答