Valor do intervalo de impressão dentro de MsgBox sem loop no VBA

0

Eu tenho um problema com o Excel vba que eu quero imprimir o valor do intervalo dentro da caixa de mensagem como

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

Eu sei que é possível com loop como com celular como

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

Existe alguma maneira que eu possa ser capaz de realizar esta operação sem loop no VBA

obrigado

    
por Dheeraj Kumar 18.02.2017 / 06:30

2 respostas

0

Você não precisa de um loop:

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

Ou:

Subtest()DimrAsRange,arySetr=Sheets("Sheet1").Range("A1:D1")
    With Application
         MsgBox Join(.Transpose(.Transpose(r)), " ")
    End With
End Sub
    
por 18.02.2017 / 19:16
0

Se você quiser uma caixa de mensagem para cada célula no intervalo, o melhor que você pode fazer é um loop.

O loop que você forneceu funcionaria, mas o seguinte pode ser melhor, pois ele também processa intervalos que consistem em várias linhas:

Dim var As Variant

For Each var In Sheets("sheet1").Range("A1:D2")
    MsgBox var
Next var
    
por 18.02.2017 / 13:16