Excel VBA如何获取目标单元格所在行的首个单元格值
问题原因
你获取行头的代码参数顺序写错了。VBA 中 Cells 方法的参数顺序为 Cells(行号, 列号):
- 你写的
RowHeader = Cells(1, Target.Row)实际是读取第1行、第Target.Row列的单元格值,属于列头的取值逻辑,自然无法得到预期的行头结果。 - 你要取修改行的第一个单元格(A列对应单元格)作为行头,需要将行号设为
Target.Row、列号设为1,对应写法为RowHeader = Cells(Target.Row, 1)。
修正后完整代码
Private Sub Worksheet_Change(ByVal Target As Range) Dim KeyCells As Range Dim ColumnHeader As String Dim RowHeader As String ' 定义触发变更提醒的单元格范围 Set KeyCells = Range("A1:G106") If Not Application.Intersect(KeyCells, Range(Target.Address)) _ Is Nothing Then ' 监测到目标范围单元格变更时执行的逻辑 MsgBox "Cell " & Target.Address & " 已被修改。" ColumnHeader = Cells(1, Target.Column) ' 仅修改此行取值逻辑即可 RowHeader = Cells(Target.Row, 1) MsgBox ColumnHeader MsgBox RowHeader End If End Sub
以你给出的修改C3单元格的场景为例,修正后Target.Row值为3,Cells(3,1)读取的就是A3单元格的值222,和预期结果一致。
内容的提问来源于stack exchange,提问作者BlackCat
相关产品推荐
相关产品推荐

