excel - HeaderRowRange 循环遍历所有标题并更改其值的问题
问题描述
我试图遍历 Excel 表格中的所有标题以更改它们的值,除非有更好的方法。
这个想法是检查表是否已经存在,如果不存在,则创建一个新表,但是,由于(据我所知)不可能创建表并在创建之前为标题命名,我必须更改它们的名称后。为此,我试图使用.HeaderRowRange.Address循环该范围内的所有单元格并更改标题的值,但未触发With tCells
这是我的代码:
Sub novaLinha()
Dim iRow As Long
Dim ws As Worksheet
Dim tbl As ListObject
Dim tCells As Ranges
Dim tCell As Range
On Error Resume Next
Set ws = Worksheets("Dados")
If ws.ListObjects.count Then
Else
Set tbl = ws.ListObjects.Add(xlSrcRange, Range(cells(1, 1), cells(1, 5)), , xlYes)
With tbl
.Name = "TabelaDados"
.TableStyle = "TableStyleMedium2"
Set tCells = Range(.HeaderRowRange.Address)
Debug.Print Range(.HeaderRowRange.Address)
With tCells
Debug.Print tCells
For Each tCell In tCells
Debug.Print tCell
Next tCell
End With
End With
End If
'iRow = ws.Cells(Rows.count, 1).End(xlUp).Row
'ws.Cells(iRow, 1).Value = ws.ListObjects.count
Exit Sub
If Err.Number > 0 Then
Debug.Print Err.Number & ":" & Err.Description
End If
End Sub
提前致谢
解决方案
试试这个直接迭代tbl.HeaderRowRange.Cells
:
With tbl
.Name = "TabelaDados"
.TableStyle = "TableStyleMedium2"
For Each tCell In tbl.HeaderRowRange.Cells
Debug.Print tCell
Next tCell
End With
注意上面的评论:错误处理:
- 您
Exit Sub
在错误处理程序之前使用。因此,即使Err.Number > 0
,您也不会打印错误。 On Error Resume Next
只是告诉 IDE忽略所有错误。这意味着错误可能会加剧并导致进一步的错误,从而使故障排除变得更加困难。通常不赞成使用它,On Error Resume Next
尤其是当您将子例程的整个可执行主体包装在那种处理程序中时。有一些有限的/一次性使用的函数可以使用这个构造,但在这种情况下实现这不是一个好主意。
(据我所知)不可能在创建表之前创建表并为标题命名
如果您首先填充将构成范围的单元格,然后添加一个表格,则这是可能的:
Dim hdrRange As Range
Set hdrRange = Range("A1:E1")
Const HEADERS As String = "Alpha,Beta,Gamma,Delta,Epsilon"
hdrRange.Value = Application.Transpose(Application.Transpose(Split(HEADERS, ",")))
' Creates table with the headers already in place:
Set tbl = ws.ListObjects.Add(xlSrcRange, Range(Cells(1, 1), Cells(1, 5)), , xlYes)
With tbl
.Name = "TabelaDados"
.TableStyle = "TableStyleMedium2"
For Each tCell In tbl.HeaderRowRange.Cells
Debug.Print tCell
Next tCell
End With
推荐阅读
- mysql - 如果该组中没有记录,如何使计数在 5 分钟后返回 0?
- java - 双变量中的大值在 TextView 中显示不同
- c# - IDataReader 为 20m 条记录消耗大量内存
- git - Gitlab合并本地分支
- javascript - Fetch API:请求完成后“await res.json()”会失败吗?
- python - Popen 的意外输出
- php - 未发送到 office365 邮件客户端的电子邮件
- javascript - 为什么在设置 JS 的功能时我的引导切换没有改变?
- php - 如何在 url 不变的情况下获取 Laravel 中的当前语言,
- java - vaadin 8 更改网址