พิมพ์ช่วงค่าภายใน MsgBox โดยไม่วนซ้ำใน VBA


0

ฉันมีปัญหากับ Excel vba ที่ฉันต้องการพิมพ์ค่าช่วงในกล่องข้อความเช่น

MsgBox "Sheets("sheet1").Range("A1:D1")

ฉันรู้ว่ามันเป็นไปได้ด้วยลูปเช่นเดียวกับเซลล์เช่น

for i=1 to 4
MsgBox "Sheets("Sheet1").Cells(1,i)
next i

มีวิธีใดบ้างที่ฉันสามารถใช้การดำเนินการนี้โดยไม่ต้องวนซ้ำใน VBA

ขอบคุณ

คำตอบ:


0

คุณไม่จำเป็นต้องวนซ้ำ:

Sub test()
    Dim r As Range, ary
    Set r = Sheets("Sheet1").Range("A1:D1")
    ary = Application.Transpose(Application.Transpose(r.Value))
    MsgBox Join(ary, " ")
End Sub

ป้อนคำอธิบายรูปภาพที่นี่

หรือ:

Sub test()
    Dim r As Range, ary
    Set r = Sheets("Sheet1").Range("A1:D1")
    With Application
         MsgBox Join(.Transpose(.Transpose(r)), " ")
    End With
End Sub

0

หากคุณต้องการกล่องข้อความสำหรับแต่ละเซลล์ในช่วงที่ดีที่สุดที่คุณสามารถทำได้คือการวนซ้ำ

การวนซ้ำที่คุณระบุจะใช้งานได้ แต่ต่อไปนี้อาจดีกว่าเนื่องจากมันยังประมวลผลช่วงที่ประกอบด้วยหลายแถว:

Dim var As Variant

For Each var In Sheets("sheet1").Range("A1:D2")
    MsgBox var
Next var
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.