如何创build超过160行的消息框(10836),根据选中的行显示多列中的文本?

我使用下面的代码来创build一个消息框,它显示单元格A1,A2,A3 …直到A9被选中,然后显示引号中的文本以及单元格V1(+21),W1 (+22)和X1(+23),例如当selectA1时,selectA2时,将显示下面代码中的文本string以及单元格V2,W2和X2等中的文本。 我需要为所有的10836行这样做,但似乎160个案件是使用这种方法的限制。 有没有更有效的方法来做到这一点? 任何帮助,将不胜感激

Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Target.Column = 1 Then Select Case Target.Row Case 1, 2, 3, 4, 5, 6, 7, 8, 9 MsgBox "Changes : " & Cells(Target.Row, Target.Column + 22) & vbNewLine & " ABC Comments: " & Cells(Target.Row, Target.Column + 23) & vbNewLine & "XYZ Comments: " & Cells(Target.Row, Target.Column + 21), vbInformation, "Comments" Case Else: End Select End If End Sub 

我的想法和达伦·巴特库普一样, 这里是完整的:

  Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim LastRow As Integer LastRow = 10836 If Target.Count > 1 Then Exit Sub If Target.Column = 1 Then Select Case Target.Row Case 1 To LastRow MsgBox "Changes : " & Cells(Target.Row, Target.Column + 22) & vbNewLine & " ABC Comments: " & Cells(Target.Row, Target.Column + 23) & vbNewLine & "XYZ Comments: " & Cells(Target.Row, Target.Column + 21), vbInformation, "Comments" Case Else: End Select End If End Sub 

你的代码已经快到了。 我会build议使用IF语句,而不是case语句。

 ' Event fired when the user changes the selected cells. Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' Has user selected a single cell in row A, between 1 to A10836? If Target.Cells.Count = 1 And Target.Column = 1 And Target.Row <= 10836 Then MsgBox "Changes: " & Cells(Target.Row, 23) & vbCrLf & _ "ABC Comments: " & Cells(Target.Row, 24) & vbCrLf & _ "XYZ Comments: " & Cells(Target.Row, 22) & vbCrLf End If End Sub