我希望能夠運行一個VBA模塊來操作我當前所在的表格(即光標位於該表格的某處)。 VBA代碼將在您運行時所在的每個表上執行相同的操作。例如,假設我有一個需要加粗每個表格(標題)頂部行的模塊。它需要找到您當前所在的表格對象(稱爲whatever
),以便它可以操作whatever.rows(0)
。如何獲取MS Word VBA中的當前表格?
如何從光標位置獲取表格對象?我還需要在表格中檢測我是不是而不是,並且什麼都不做(或引發錯誤對話框)。
我希望能夠運行一個VBA模塊來操作我當前所在的表格(即光標位於該表格的某處)。 VBA代碼將在您運行時所在的每個表上執行相同的操作。例如,假設我有一個需要加粗每個表格(標題)頂部行的模塊。它需要找到您當前所在的表格對象(稱爲whatever
),以便它可以操作whatever.rows(0)
。如何獲取MS Word VBA中的當前表格?
如何從光標位置獲取表格對象?我還需要在表格中檢測我是不是而不是,並且什麼都不做(或引發錯誤對話框)。
此答案底部的VBA子例程顯示瞭如何執行此操作。
它使用當前的選擇,它崩潰的起點第一,從而不必擔心多段選擇:
Selection.Collapse Direction:=wdCollapseStart
然後檢查選擇,以確保它是一個表裏面
If Not Selection.Information(wdWithInTable) Then
MsgBox "Can only run this within a table"
Exit Sub
End If
該表可以通過參考Selection.Tables(1)
訪問。下面
該代碼是概念的一個簡單的證明,其簡單地切換每個起始細胞的表的每一行要麼插入或刪除一條豎線標記英寸
Sub VertBar()
' Collapse the range to start so as to not have to deal with '
' multi-segment ranges. Then check to make sure cursor is '
' within a table. '
Selection.Collapse Direction:=wdCollapseStart
If Not Selection.Information(wdWithInTable) Then
MsgBox "Can only run this within a table"
Exit Sub
End If
' Process every row in the current table. '
Dim row As Integer
Dim rng As Range
For row = 1 To Selection.Tables(1).Rows.Count
' Get the range for the leftmost cell. '
Set rng = Selection.Tables(1).Rows(row).Cells(1).Range
' For each, toggle text in leftmost cell. '
If Left(rng.Text, 2) = "| " Then
' Change range to first two characters and delete them. '
rng.Collapse Direction:=wdCollapseStart
rng.MoveEnd Unit:=wdCharacter, Count:=2
rng.Delete
Else
' Just insert the vertical bar. '
rng.InsertBefore ("| ")
End If
Next
End Sub
我意識到這是一個相當古老的問題,但我碰到一些代碼,可以幫助誰正面臨着類似的問題,旁邊的人絆倒。
ActiveDocument.Range(0, Selection.Tables(1).Range.End).Tables.count
這將返回表光標在指數然後可以用來改變或檢索信息:
dim numberOfColumnsInCurrentTable as Integer
dim currentTableIndex as Integer
currentTableIndex = ActiveDocument.Range(0, Selection.Tables(1).Range.End).Tables.count
numberOfColumns = ActiveDocument.Tables(currentTableIndex).Columns.count
顯然應加檢查,以確保光標內一張桌子。
完美!這正是我所需要的@enifeder:ActiveDocument.Range(0,Selection.Tables(1).Range.End).Tables.count – DRC