2017-05-12 178 views
1

我需要創建一個消息框,它將顯示3個不同的Excel範圍。VBA Excel中的MessageBox

這是我的數據:
this is my data

,我需要有應該是這樣的一個消息框:
this is my data

點擊確定後,應該顯示B1:B6是這樣的:
this is my date

然後當您再次單擊確定時,它應顯示範圍C1:C6。

這是到目前爲止我的代碼:

Sub Message_Box() 

Dim a As Range 
Dim sTxt As String 

For Each a In ThisWorkbook.Sheets("Sheet1").Range("a1:a6") 
sTxt = sTxt & vbLf & a.Value 
Next a 

MsgBox sTxt 

End Sub 
+2

目前,您擁有的代碼確實能夠正確顯示A列,對嗎?爲什麼不只是添加兩個循環? – BruceWayne

+0

使用帶3列表框的用戶表單會更好嗎?或者只有一個列表框3列? –

+0

現在工作正常。感謝大家。 –

回答

4
Sub Message_Box() 

Dim a As Range 
Dim t As Integer 
Dim sTxt As String 

For t = 1 To 3 
    For Each a In ThisWorkbook.Sheets("Sheet1").Range(Cells(1, t), Cells(6, t)) 
    sTxt = sTxt & vbLf & a.Value 
    Next a 

    MsgBox sTxt 
    sTxt = "" 

Next t 


End Sub 
+0

哇!很酷,這對我很有用。非常感謝。 –

+0

哈哈,比我的大腦去哪裏更簡潔。做得好! – BruceWayne

3

這裏的另一種方式,你可以這樣做:

Sub Message_Box2() 
Dim a  As Range 
Dim sTxt As String 
Dim myData() As Variant 

Dim numCols As Long, numRows As Long 

With Sheets("Sheet1") 
    numCols = .Cells(1, .Columns.Count).End(xlToLeft).Column 
    numRows = .Cells(.Rows.Count, 1).End(xlUp).Row 

    ReDim myData(numCols, numRows) 
    myData() = Range("A1:C" & numRows) 
End With 
Dim i As Long, k As Long, numTimes As Long 
For k = 1 To numCols 
    For i = 1 To numRows 
     sTxt = sTxt & vbLf & myData(i, k) 
     Debug.Print sTxt 
    Next i 
    MsgBox sTxt 
    sTxt = "" 
Next k 
End Sub 

編輯:這是一個有點矯枉過正,但我​​只是想知道有一個可以使用一個數組來完成它,所以在我意識到它已經被回答之前就已經做好了。

+0

工作得很好!十分感謝大家!! :) –

+2

@christinaG - 謝謝! ......如果DarrelHarrie也適合你,那麼無需改變我的答案。他更簡單直接(海事組織),所以如果你願意,你可以將他標記爲答案。 – BruceWayne