2017-05-12 10 views
1

3つの異なるExcelの範囲を表示するメッセージボックスを作成する必要があります。VBA ExcelのMessageBox

これが私のデータです:
this is my data

と私は次のようになります。メッセージボックス持っている必要があります:OK、それはB1が表示されますクリックした後
this is my data

を:このようなB6:
this is my date

そして、もう一度[OK]をクリックすると、範囲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列ですか?なぜ2つ以上のループを追加しないのですか? – BruceWayne

+0

3リストボックスのあるuserformを使用する方が良いでしょうか?または、ただ1つのリストボックスウィット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 

編集:それはちょっとやり過ぎだが、私はどれだけ1思っていましたそれを行うために配列を使うことができたので、私はそれが既に答えられたことに気付く前にそれを作った。

+0

それもうまくいった!本当にありがとう! :) –

+2

@christinaG - ありがとう! DarrelHarrieさんがあなたのために働くのであれば、私の答えを変える必要はありません。彼ははるかにシンプルで簡単です(IMO)ので、あなたが望むなら、彼を答えとしてマークすることができます。 – BruceWayne