【问题标题】:How to use the row number of a named cell in Excel VBA如何在 Excel VBA 中使用命名单元格的行号
【发布时间】:2015-10-26 09:01:43
【问题描述】:

我有一个工作表,我想在其中使用一个按钮来添加行。我在多行上有多个按钮,每个按钮都应在其位置添加一行。

问题是,每当添加新行时,我想要添加行的位置就会发生变化。因此,我命名了要为每个按钮添加新行的单元格。

我无法获取单元格的行号,因此我可以选择添加新行的位置。 Atm 我试过这个:

Sub Button2_Click()

Dim RowNum As Variant

Set RowNum = WorksheetFunction.Index(cell, 1, 0)
Rows(RowNum & ":" & RowNum).Insert Shift:=xlDown
Rows(RowNum - 1 & ":" & RowNum - 1).Copy Range("A" & RowNum)
Range("D" & 7, "L" & 7).ClearContents

End Sub

其中单元格是我要添加新行的单元格。

我无法使用索引函数将行作为数字返回。当我在调试中将鼠标悬停在“单元格”上时,它显示单元格=空。

希望这很清楚,因为您可能会说我对这些东西不是很有经验。

谢谢:)

【问题讨论】:

  • a) cell 是工作表上的命名范围吗?它是否有工作簿或工作表范围? b) 如果cell 为 A3 且包含值 12,您要在第 3 行还是第 12 行插入新行?
  • cell 是一个命名范围,它具有工作表范围(我认为),但所有内容都在一个工作表中。如果cell 是 A3,我想在第 3 行插入一行。

标签: vba excel worksheet-function


【解决方案1】:

当您使用Set 将变体分配给返回的Application.Index 时,您实际上是在设置一个范围。您可以将其简化为仅返回单元格的行号,但您必须引用命名范围,就好像它是 Range object 中的单元格地址一样。

Sub Button2_Click()
    Dim RowNum As Long

    With ActiveSheet
        RowNum = .Range("cell").Row
        .Rows(RowNum).Insert Shift:=xlDown
        .Rows(RowNum - 1).Copy .Range("A" & RowNum)
        .Range("D" & 7, "L" & 7).ClearContents   'not really sure where the 7 comes in here
    End With
End Sub

【讨论】:

  • 嗨,非常感谢。 7 只是一个测试,我还没有改回来
【解决方案2】:

试试这个找到你命名的单元格:

rowToInsertIn=Application.WorksheetFunction.Match("MyCellName", Range("A:A"), 0)

【讨论】:

  • 谢谢,这行得通,但我更愿意引用一个命名的单元格并将单元格的内容留空。我希望这很清楚
猜你喜欢
  • 1970-01-01
  • 2018-02-24
  • 1970-01-01
  • 2016-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多