我是Excel VBA的新手,所以请耐心等待我。感谢。
我的工作簿中有2张。 Sheet1和Sheet2都具有相同的行数。我在Sheet2中有一个名为SITE的列,在Sheet1上有一个名为REMARK的列。我需要的是每当我在SITE栏中选择单元格时,它应该从Sheet1显示一条消息(即;消息应该包含REMARK列的单元格值)。
例如:如果选择了SITE列单元格3,则显示的消息应包含REMARK列单元格3的值。
答案 0 :(得分:2)
因为我很无聊:
'in Sheet1
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = Application.Match("SITE", Target.Parent.Rows(1), 0) Then MsgBox Sheets("Sheet2").Cells(Target.Row, Application.Match("REMARK", Sheets("Sheet2").Rows(1), 0)).Value2
End Sub
'in Sheet2
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = Application.Match("REMARK", Target.Parent.Rows(1), 0) Then MsgBox Sheets("Sheet1").Cells(Target.Row, Application.Match("SITE", Sheets("Sheet1").Rows(1), 0)).Value2
End Sub
修改强>
问题中你的“... SITE栏......”告诉我标题是在第1行...但是如果你知道它们在哪里,并且pos没有变化,那么你可以像这样使用它(我假设“SITE”的第一个值在P8中,第一个“REMARK”在Q9中显示如何偏移):
'in Sheet1
'the "Target.Row + 1" need the row offset because it starts 1 row later
'if they start at the same row, the "+ 1" can be deleted
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = Range("P1").Column And Target.Row >= 8 Then MsgBox Sheets("Sheet2").Range("Q" & Target.Row + 1).Value2
End Sub
'---------------------------------------------------------------------
'in Sheet2
'because the offset must be the opposite, the "+ 1" becomes "- 1" here
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = Range("Q1").Column And Target.Row >= 9 Then MsgBox Sheets("Sheet1").Range("P" & Target.Row - 1).Value2
End Sub