我有以下简单的Excel扩展名:
A B C D E
1 2019-01 2019-02 2019-03
2 Product A 50 40 30
3 Product B 80 100 120
4
5 Product A
6
我在名称管理器中将Row 2:2
定义为变量名:
First_Row = "2:2"
对于Cell B5
中的值,我使用以下VBA插入它在First_Row
中找到的第一个值,在本例中为Product A
:
Sub Row_Number()
Row = Sheet1.Range("First_Row")
Sheet1.Range("B5").Value = First_Row
End Sub
到目前为止,所有这些都工作正常。
但是,现在我想在First_Row
中插入2:2
作为值,而不是Cell B5
中的第一个值。因此,我尝试使用以下方法:
Sub Row_Number()
Row = Sheet1.Range(Range("First_Row").Value)
Sheet1.Range("B5").Value = Row
End Sub
但是,有了这个我
运行时错误1004。
您知道要更改代码才能使其正常工作吗?
答案 0 :(得分:0)
Option Explicit
Public Sub Row_Number()
Dim RowAddress As String
RowAddress = Sheet1.Range("First_Row").Address(RowAbsolute:=False, ColumnAbsolute:=False)
Sheet1.Range("B5").Value = RowAddress
End Sub
请注意,您应该使用Option Explicit
来确保正确声明了所有变量。
如果地址为2:2
并且Excel将其作为时间02:02
写入单元格的问题可以通过在地址前面添加'
来解决。这将强制Excel将其作为文本处理,'
不会显示在单元格中。
RowAddress = "'" & Sheet1.Range("First_Row").Address(RowAbsolute:=False, ColumnAbsolute:=False)
答案 1 :(得分:-1)
尝试此宏 不要使用行作为范围,因为 Row 是关键字文字
最好是使用Row_或其他任何方式
Option Explicit
Sub Row_Number()
Dim Row_ As Range
Set Row_ = Sheet1.Rows("2:2")
Sheet1.Range("B5").Value = Row_.Cells(1)
End Sub