使用VBA将行号插入单元格

时间:2019-07-22 07:06:16

标签: excel vba

我有以下简单的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。

您知道要更改代码才能使其正常工作吗?

2 个答案:

答案 0 :(得分:0)

您可以使用Range.Address property

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
相关问题