所以,我正在尝试创建子过程,其中一个参数是列名。
然后将列名转换为列号。
Dim ColNum As Integer: ColNum = Range(ColumnNM & 1).Column
但是当我尝试在范围内使用列号时,使用单元格属性我得到91运行时错误。这里的大多数解决方案都是为了不正确设置范围。
运行时错误91
这里给我的错误:
Dim rngTA As Range: Set rngTA = wsTA.Range(Cells(24, ColNum))
和这个(实验,不确定这是否是用字符串地址设置范围的正确方法)
Dim addr As String: addr = Cells(24, ColNum).Address(RowAbsolute:=False, ColumnAbsolute:=False)
Dim rngTA As Range: Set rngTA = wsTA.Range(addr)
我被困在那里。
感谢。
答案 0 :(得分:3)
您不需要Range
。 Cells()
是范围对象:
Dim rngTA As Range: Set rngTA = wsTA.Cells(24, ColNum)
在Range
中使用范围对象时,需要有两个开头和一个结尾。由于您只想要一个,所以请直接参考。
答案 1 :(得分:2)
你不需要一个模块,你可以只使用匹配,不过,这里有一个函数:
Function Letter(oSheet As Worksheet, name As String, Optional num As Integer)
If num = 0 Then num = 1
Letter = Application.Match(name, oSheet.Rows(num), 0)
'Letter = Split(Cells(, Letter).Address, "$")(1)
End Function
此处的名称是列标题的名称,oSheet是工作表的名称,如果您搜索的行不是1,则有一个可选变量可用作数字。如果删除引号,则可以得到这封信,而不是数字。