У меня проблема с Excel vba, что я хочу напечатать значение диапазона в окне сообщения, как

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

Я знаю, что это возможно с петлей, как с клеткой, как

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

Есть ли способ, которым я могу выполнить эту операцию без цикла в VBA

Спасибо

2 ответа2

0

Если вам нужно окно сообщения для каждой ячейки в диапазоне, лучшее, что вы можете сделать , это цикл.

Предоставленный вами цикл будет работать, но может быть лучше следующее, поскольку он также обрабатывает диапазоны, состоящие из нескольких строк:

Dim var As Variant

For Each var In Sheets("sheet1").Range("A1:D2")
    MsgBox var
Next var
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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .