根据偏移单元格文本信息设置命名范围

问题描述 投票:0回答:1

我有一张名为“Sales”的工作表。此工作表具有A2列:A1500,带有项目名称。 A2至A1500行中的每一行都在每个项目的相邻列上具有销售信息。我有一个Web API,用于更新每行的项目销售信息,并且它是与新数据相邻的列(始终覆盖同一行)。

我正在尝试创建一个代码来创建基于相邻单元格文本的命名范围,以及是否创建了一个新项目名称来为添加的新项目创建命名范围。

1。我想在每行的每个Item名称中创建命名范围。意思是Cell A2文本将是“ItemName1”范围,A3文本将是“ItemName2”范围。这个函数我将需要遍历整个列A的最后一行。

第2位。如果Web API在列A中创建了新的Itemname,则将api设置为在列A的最后一个已知行创建新的项目名称。

这就是我到目前为止所拥有的。但我想到了新项目的变量,我没有解决方案。

Sub NamedRanges()
Dim rngCell As Range
Dim intLstRow As Integer

intLstRow = ActiveSheet.UsedRange.Rows.Count

For Each rngCell In Range("B2:B" & intLstRow)
    ActiveWorkbook.Names.Add Name:=rngCell.Offset(0, -1).Value, RefersTo:=Range("Sales!$B$" & rngCell.Row)
Next
End Sub

我现在正在接受

应用程序或对象定义错误

ActiveWorkbook.Names.Add Name:=

我确实在RefersTo:=Range("Sales"!$A$" & rngCell.Row)上看到了我的第一个单元名称。

提前致谢。

excel vba excel-vba
1个回答
2
投票

请尝试以下方法。它使用正确的语法连接命名范围的名称,并使用不同的方法查找最后一行。使用UsedRange的方法可能会产生意外结果。我还将最后一行的名称更改为LstRow,因为您不需要在VBA中使用Hungarian表示法,也可以将其设置为Long以避免溢出。

Option Explicit

Sub NamedRanges()

Dim rngCell As Range
Dim LstRow As Long

With ActiveSheet

    LstRow = .Cells(.Rows.Count, "A").End(xlUp).Row

End With


For Each rngCell In Range("B2:B" & LstRow)
    ActiveWorkbook.Names.Add Name:=rngCell.Offset(0, -1).Value, RefersTo:=Range("Sales!$B$" & rngCell.Row)
Next

End Sub
© www.soinside.com 2019 - 2024. All rights reserved.