Valeur de la plage d'impression dans MsgBox sans boucle dans VBA


0

J'ai un problème avec Excel vba que je veux imprimer la valeur de la plage dans la boîte de message comme

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

Je sais que c'est possible avec une boucle comme avec une cellule comme

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

Est-il possible que je puisse effectuer cette opération avec une boucle out dans VBA?

Merci

Réponses:


0

Vous n'avez pas besoin d'une boucle:

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

entrez la description de l'image ici

Ou:

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

Si vous souhaitez une boîte de message pour chaque cellule de la plage, le mieux que vous puissiez faire est une boucle.

La boucle que vous avez fournie fonctionnerait, mais ce qui suit pourrait être préférable, car elle traite également des plages composées de plusieurs lignes:

Dim var As Variant

For Each var In Sheets("sheet1").Range("A1:D2")
    MsgBox var
Next var
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.