Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA-添加具有特定标题名称的新表列_Vba_Excel_For Loop - Fatal编程技术网

Excel VBA-添加具有特定标题名称的新表列

Excel VBA-添加具有特定标题名称的新表列,vba,excel,for-loop,Vba,Excel,For Loop,我有一个简单的vba问题。我想要一个宏,它将在我的表对象(“Table1”)中恰好添加4个新列。我还希望按照从左到右的顺序命名: AHT,目标AHT,传输,目标传输 下面的代码添加了一些列,但我不知道如何单独命名。另外,有人能告诉我如何循环这段代码吗。谢谢 Sub insertTableColumn() Dim lst As ListObject Dim currentSht As Worksheet Set currentSht = ActiveWorkbook.Sheets("Sheet1

我有一个简单的vba问题。我想要一个宏,它将在我的表对象(“Table1”)中恰好添加4个新列。我还希望按照从左到右的顺序命名:

AHT,目标AHT,传输,目标传输

下面的代码添加了一些列,但我不知道如何单独命名。另外,有人能告诉我如何循环这段代码吗。谢谢

Sub insertTableColumn()
Dim lst As ListObject
Dim currentSht As Worksheet

Set currentSht = ActiveWorkbook.Sheets("Sheet1")
Set lst = ActiveSheet.ListObjects("Table1")

'below is the code that I would like to have looped
    lst.ListColumns.Add
    lst.ListColumns.Add
    lst.ListColumns.Add
    lst.ListColumns.Add

End Sub

变量数组是以循环序列存储变量的好地方

Sub insertTableColumn()
    Dim lst As ListObject
    Dim currentSht As Worksheet
    Dim h As Long, hdrs As Variant

    hdrs = Array("AHT", "Target AHT", "Transfers", "Target Transfers")

    Set currentSht = ActiveWorkbook.Sheets("Sheet1")
    Set lst = ActiveSheet.ListObjects("Table1")

    With lst 'ActiveSheet.ListObjects("Table1")
        For h = 0 To 3
            .ListColumns.Add
            .ListColumns(.ListColumns.Count).Name = hdrs(h)
        Next h
    End With

End Sub

以这种方式创建字符串数组时,请记住变量数组的索引默认为零。

下面的代码创建一个包含要添加的列名的数组,然后在有要添加的标题时循环多次并同时设置名称

Sub insertTableColumn()
Dim lst As ListObject
Dim currentSht As Worksheet

Set currentSht = ActiveWorkbook.Sheets("Sheet1")
Set lst = ActiveSheet.ListObjects("Table1")
ColumnNames = Array("AHT", "Target AHT", "Transfers", "Target Transfers")

' below is the code that I would like to have looped
For iLoop = 0 to UBound(ColumnNames)
    Set oLC = lst.ListColumns.Add
    oLC.Name = ColumnNames(iLoop)
Next

End Sub

非常感谢您对UBound函数的介绍。我以前从未遇到过这种情况。只是一个简单的问题-如果我想声明您的“ColumnNames”变量,我将如何声明?我试图将其声明为字符串,但我的代码生成了一个错误。声明要用作数组的变量的最佳实践是什么?再次感谢!您可以将
Dim ColumnNames用作Variant
(老实说,我应该添加这一行),但如果您不指定变量类型,VBA将自动将其定义为Variant,它实际上可以接受几乎任何类型,因此,您可以简单地使用
暗淡的列名
:)感谢您提供的关于零基索引的内容。我肯定会质疑0。