У меня есть лист, который добавляет таблицу для каждого проекта, который я получил в списке.
Но я не могу найти код для редактирования заголовков таблицы после добавления таблицы. Возможно, есть простое решение, но я не могу его найти.
Sub getAllProjectsTest()
Dim totalSheet As Worksheet
Set totalSheet = ThisWorkbook.Sheets("Total Overview")
totalSheet.Range("A2:Z4000").Clear
For Each project In Sheets("Projects-Tasks").Range("Projects")
Dim LastRow As Long
LastRow = totalSheet.Cells(Rows.Count, 1).End(xlUp).Row
With totalSheet.Range("A" & LastRow).Offset(3, 0)
.Value = project
.Font.Size = 16
.Font.Bold = True
End With
Dim ListStart As String
ListStart = totalSheet.Range("A" & LastRow).Offset(4, 0).Address
Dim TableWidth As String
TableWidth = totalSheet.Range("A" & LastRow).Offset(4, 3).Address
totalSheet.ListObjects.Add(xlSrcRange, Range(ListStart & ":" & TableWidth), , xlYes).Name = "Table" & project
Range(ListStart & ":" & TableWidth).HorizontalAlignment = xlCenter
Next project
End Sub
2 ответа
Становится проще, если работать с объектами. См. Этот пример
'
'~~> Rest of the code
'
Dim tbl As ListObject
Set tbl = totalSheet.ListObjects.Add(xlSrcRange, _
Range(ListStart & ":" & TableWidth), , xlYes)
With tbl
.Name = "Table" & project
Debug.Print .HeaderRowRange.Address
End With
'
'~~> Rest of the code
'
Еще один более интересный способ сделать это.
Sub trimHeaders()
Dim wlistobj As ListObject
Dim wlistcol As ListColumn
Set wlistobj = ThisWorkbook.Sheets(1).ListObjects(1)
For Each wlistcol In wlistobj.ListColumns
wlistobj.HeaderRowRange.Cells(wlistcol.DataBodyRange.Column) = Trim(wlistobj.HeaderRowRange.Cells(wlistcol.DataBodyRange.Column))
Next wlistcol
End Sub
Похожие вопросы
Новые вопросы
vba
Visual Basic для приложений (VBA) - это управляемый событиями объектно-ориентированный язык программирования для написания макросов, используемый для всего пакета Office, а также для других приложений. VBA не эквивалентен VB.NET или VBS; если вы работаете в Visual Studio, используйте [vb.net]. Если ваш вопрос конкретно касается программирования любого приложения MS Office, также используйте соответствующий тег: [excel], [ms-access], [ms-word], [outlook] или [ms-project].
tbl.HeaderRowRange.Cells(1, 1).Value = "Blah Blah"
?