选定的单元格应显示另一个工作表上的单元格上的消息

时间:2016-06-30 18:46:48

标签: excel excel-vba vba

我是Excel VBA的新手,所以请耐心等待我。感谢。

我的工作簿中有2张。 Sheet1和Sheet2都具有相同的行数。我在Sheet2中有一个名为SITE的列,在Sheet1上有一个名为REMARK的列。我需要的是每当我在SITE栏中选择单元格时,它应该从Sheet1显示一条消息(即;消息应该包含REMARK列的单元格值)。

例如:如果选择了SITE列单元格3,则显示的消息应包含REMARK列单元格3的值。

1 个答案:

答案 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