2013-07-18 107 views
0

我需要獲取表格的選定單元格。在表格powerpoint 2007中獲取選定的單元格vb.net

我嘗試下面的代碼

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使用下面的代碼

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 
IM創建VSTO和它的顏色完全表

請幫助

感謝

樂華中號

+0

您可能想描述您遇到的問題。你不會給我們任何錯誤的提示。但對於初學者來說,看起來你的邏輯錯誤。您的For/Next循環選擇幻燈片上的第一個形狀並退出。它可能會或可能不會保留對所選形狀的活動引用,並且如果當前所選形狀不是表格,則代碼將在oTable = oShape.Table –

+0

處失敗。您好史提夫,我會選擇一張桌子,可以嗎?請將Dim i和j中的代碼作爲整數。請注意,此代碼僅用於從按鈕運行演示。稍後將處理它,如果它的表或不。邏輯是好的,運行良好,只需使用vba中的初始代碼作爲powerpoint,然後使用vb.net vsto中的第二個代碼作爲powerpoint,您將發現區別 – user1753985

+0

您的第一塊代碼'For Each oShape In .ShapeRange。 ..'改變選擇。您正在選擇整個形狀。之前選擇什麼並不重要,因爲您在代碼中更改了選擇,所以當然它會選擇整個表格。 – BrainSlugs83

回答

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 
+0

嗨史蒂夫,是的,這是工作使用VBA,這是前面提到的,但我想在vb.net – user1753985

+0

它可能會在VB.NET中被破壞...我不知道。由於我不使用它,所以我無法幫助你。抱歉。還有誰? –

0

在VB.NET你的代碼第一塊,改變選擇:

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

其含有完整的表,並且是選擇的一部分的形狀,是由重新選擇這個塊 - 這會導致在代碼開始時選擇整個形狀和表格。

刪除此代碼塊,其餘應該工作。