【发布时间】:2020-07-12 03:50:40
【问题描述】:
我查找了有关列属性的信息。我正在尝试在数组中执行一些信息的插入和复制。我的问题的症结在于我想在循环中嵌套一些操作,所以我需要用数字而不是字母来索引列。
我做的第一件事是根据标题名称找到一个起点:
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改成其他类型,比如整数
在其他地方,我想从一个循环中将信息从一个单元格复制到另一个单元格中。这会产生语法错误。
VET_VS.Range(Columns.(EnvCondColN + i)).Copy VET_VS.Range(Columns.(EnvCondColN + j))
如果我将 EnvCondColN 替换为 5 之类的值,则此方法有效。示例:VET_VS.Range(Columns.(5)).EntireColumn.Insert
为什么该变量不能用作列引用??
感谢大家观看!
【问题讨论】:
-
试试
VET_VS.Columns(EnvCondColN).EntireColumn.Insert -
试试
Range(EnvCondCol & 1).EntireColumn.Insert -
HTH 改变有效。我很困惑,因为我之前成功使用了 Sheet.range(x).copy sheet.range(y) 方法,除了 x 和 y 是使用列字母(例如 C:C 或 C2 等)的引用......为什么范围不再工作?
-
FaneDuru - 你的答案涉及使用列字母,所以这是我试图避免的。使用 F+1 时会出错。
-
HTH - 我没有看到将您的答案标记为好的复选框。非常感谢。
标签: vba columnsorting