按列号索引数组

Indexing through an array by column number

我查找了有关列属性的信息。我正在尝试在数组中执行一些信息的插入和复制。我的问题的关键是我想在循环中嵌套一些操作,所以我需要用数字而不是字母来索引列。

我做的第一件事是根据 header 名称找到起点:

Dim EnvCondCol As String
Dim EnvCondColN As Long
Dim lColVVS As Integer
lColVVS = VET_VS.UsedRange.Columns.Count ' finds last column
For n = 1 To lColVVS
    If UCase(VET_VS.Cells(3, n).Value) Like "*ENVIRONMENTAL CONDITION*" Then ' All Caps when using "like"
        EnvCondCol = Split(VET_VS.Cells(3, n).Address, "$")(1)
        EnvCondColN = Range(EnvCondCol & 1).Column
        Exit For
    End If
Next n

这有效,当我观看 EnvCondCol 和 EnvCondColN 时,可以看到 EnvCondCol = "I" 和 EnvCondColN = "9" 最后,我想插入一个新列,而这一行产生语法错误:

VET_VS.Range(Columns.(EnvCondColN)).EntireColumn.Insert

我看EnvCondColN是一个数字,我试过把dim改成其他类型,比如integer

此外,我想在一个循环中将信息从一个单元格复制到另一个单元格。这会产生语法错误。

VET_VS.Range(Columns.(EnvCondColN + i)).Copy VET_VS.Range(Columns.(EnvCondColN + j))

如果我将 EnvCondColN 替换为 5 之类的值,则此方法有效。示例:VET_VS.Range(Columns.(5)).EntireColumn.Insert

为什么变量不能用作列引用?

谢谢大家的观看!

改变

 VET_VS.Range(Columns.(EnvCondColN)).EntireColumn.Insert

 VET_VS.Columns(EnvCondColN).EntireColumn.Insert