VBA甚至在添加或删除行和列后仍引用同一单元格

时间:2019-06-19 03:52:34

标签: excel vba

我正在使用VBA代码写入excel中的单元格。例如。

Range("C3") = code

Cells(3,3) = code

如果在工作表中插入了一行,则代码不会相应地更新,并且仍会写入Range("C3")等。因此,代码随后将写入错误的单元格。

有没有更好的方法来组织代码,以便代码会相应地更新?也许使用表格代替单元格?

2 个答案:

答案 0 :(得分:1)

一种解决方案是使用Named Ranges。您可以通过单击“名称管理器”在“公式”选项卡中定义“命名范围”。

然后您要写。

Range("Name of the Range") = code

我相信,当插入行或列时,命名范围会自动更新,因此您的代码将在正确的单元格中打印该值。

答案 1 :(得分:0)

谢谢,好主意。我最终定义了填充有值的列作为范围,然后使用for循环搜索定义的字符串。这样,只要名称和字符串没有变化,它位于哪一行都没有关系(出于确切的原因,使用命名范围可能会更好。)

Worksheets("Sheet1").Select
        Set WS = ActiveSheet
            With WS
                LastRow = .Cells(.Rows.Count, 2).End(xlUp).Row       'Determine the last row number with data in it for column B
                    For Each acell In .Range("B1:B" & LastRow)       'Defines the search range from B1 to last row

                        If acell.Value = "String Searched For" Then
                            'Do stuff based on found cell location
                        End If

                        If acell.Value = "String Searched For#2" Then
                            'Do stuff based on found cell location#2
                        End If
                    Next
            End With