【问题标题】:Cells property - Run-time error 91单元格属性 - 运行时错误 91
【发布时间】:2018-05-05 01:15:07
【问题描述】:

所以,我正在尝试创建子过程,其中一个参数是列名。

然后将列名转换为列号。

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)

我被困在那里了。

谢谢。

【问题讨论】:

  • 试试Set rngTA = wsTA.Range(wsTA.Cells(24, ColNum),wsTA.Cells(24, ColNum))
  • @Shai Rado 相同的 91 错误
  • @Shai Rado我不知道发生了什么,当我创建新的子时,你的行只有必需品才能工作,但是在原始代码调试器中停止设置 rngTA 范围,我必须重新检查整个代码。对不起,谢谢。
  • 没问题,不客气:)

标签: excel vba range runtime-error cells


【解决方案1】:

您不需要RangeCells() 是一个范围对象:

Dim rngTA As Range: Set rngTA = wsTA.Cells(24, ColNum)

Range 中使用范围对象时,它需要有两个开头和结尾。既然你只想要一个,那就直接参考吧。

【讨论】:

    【解决方案2】:

    你不需要模块,你可以使用 match,不过,这里有一个函数:

    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
    

    这里的Name是你的列标题的名字,oSheet是工作表的名字,如果你搜索的行不是1,有一个可选变量可以用作数字。如果你去掉引号你可以得到字母,而不是数字。

    【讨论】:

    猜你喜欢
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-25
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多