【问题标题】:Insert row number into cell using VBA使用VBA将行号插入单元格
【发布时间】:2019-07-22 07:06:16
【问题描述】:

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

到目前为止,这一切都很好。


但是,现在我想插入2:2 作为Cell B5 中的值,而不是First_Row 中的第一个值。因此,我尝试使用以下方法:

Sub Row_Number()
    Row = Sheet1.Range(Range("First_Row").Value)
    Sheet1.Range("B5").Value = Row
End Sub

但是,我得到了

运行时错误 1004。

您知道我需要对代码进行哪些更改才能使其正常工作吗?

【问题讨论】:

  • 您的意思是Sheet1.Range("B5").Value = Sheet1.Range("A2").Value
  • 不,我想要的结果是单元格 B5 = "2:2"
  • 然后Sheet1.Range("B5").Value = "2:2"
  • 是的,这基本上就是我想要的结果。但是,我不想直接使用 Value ="2:2" 插入它,而是想将它存储在 VBA 中的一个变量中,然后插入它。
  • 那么请为此展示一个真实代码示例,并更好地解释您的问题。每次我回答你都会改变你的问题:试试Range("2:2").Address

标签: excel vba


【解决方案1】:

您可以使用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)

【讨论】:

  • 当我将它插入B5时,是否还有一种方法可以消除2之前的0?
  • @Michi 之前没有0。检查您在 B5 中的数字格式并确保它是 GeneralText
  • 奇怪的是,如果我将其定义为“标准”,然后我运行 VBA,它会将其格式从标准更改为自定义的 hh:mm。
  • @Michi 因为2:2 被识别为时间值(Excel 试图在这里思考并失败)。在您的地址前使用',例如RowAddress = "'" & …
【解决方案2】:

试试这个宏 不要使用 Row 作为范围,因为 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-05
    • 2019-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    相关资源
    最近更新 更多