Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [VBA] dare un termine ad un loop

    codice:
    Sub reale()
    
    '
    
    ' reale Macro
    
    '
    
    '
    
        Do
    
        Selection.TypeText Text:="', '"
    
        Selection.MoveLeft Unit:=wdCharacter, Count:=4
    
        Selection.MoveDown Unit:=wdLine, Count:=1
    
        Selection.TypeText Text:="', '"
    
        Selection.MoveLeft Unit:=wdCharacter, Count:=4
    
        Selection.MoveDown Unit:=wdLine, Count:=1
    
        Loop
    
    End Sub
    Praticamente mi aggiunge ', ' davanti a ogni riga.

    Esempio:

    Pane
    Latte
    Gatto
    Beve
    Mangia

    diverrà

    ', 'Pane
    ', 'Latte
    ', 'Gatto
    ', 'Beve
    ', 'Mangia

    Il problema è che continua anche a fine documento.
    Qualcuno sa come far fermare automaticamente la macro arrivata alla fine, oppure metterla in loop per sole 279893 volte?
    Ho provato anche con la funzione EOF ma non so se son io che non la so usare oppure se non va bene per ciò che voglio fare

    Grazie mille in anticipo

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237
    Quote Originariamente inviata da un dissennatore Visualizza il messaggio
    codice:
    Sub reale()
    
    '
    
    ' reale Macro
    
    '
    
    '
    
        Do
    
        Selection.TypeText Text:="', '"
    
        Selection.MoveLeft Unit:=wdCharacter, Count:=4
    
        Selection.MoveDown Unit:=wdLine, Count:=1
    
        Selection.TypeText Text:="', '"
    
        Selection.MoveLeft Unit:=wdCharacter, Count:=4
    
        Selection.MoveDown Unit:=wdLine, Count:=1
    
        Loop
    
    End Sub
    Praticamente mi aggiunge ', ' davanti a ogni riga.

    Esempio:

    Pane
    Latte
    Gatto
    Beve
    Mangia

    diverrà

    ', 'Pane
    ', 'Latte
    ', 'Gatto
    ', 'Beve
    ', 'Mangia

    Il problema è che continua anche a fine documento.
    Qualcuno sa come far fermare automaticamente la macro arrivata alla fine, oppure metterla in loop per sole 279893 volte?
    Ho provato anche con la funzione EOF ma non so se son io che non la so usare oppure se non va bene per ciò che voglio fare

    Grazie mille in anticipo
    Devi porre una condizione di verifica vicino alla keyword loop.
    Se quindi si verifica una certa condizione il ciclo si interrompe e prosegue con l'esecuzione delle istruzioni successive.
    Qui trovi degli esempi
    http://www.ozgrid.com/VBA/do-while-loop.htm

  3. #3
    Non è che ci abbia capito molto ^^'
    Invece che fine documento, si può fare un loop per un tot di volte che gli dico io?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237
    Quote Originariamente inviata da un dissennatore Visualizza il messaggio
    Non è che ci abbia capito molto ^^'
    Invece che fine documento, si può fare un loop per un tot di volte che gli dico io?
    Certo che si può.. é la condizione più banale.
    codice:
    Dim contatore as Integer 'variabile contatore
    Contatore = 0
    Do
       .... Le tue istruzioni
       contatore = contatore+1
    
    Loop Until contatore >9
    In questo caso il blocco istruzioni tra do e loop viene eseguito 10 volte (da 0 a 9).
    La variabile contatore viene infatti incrementata di 1 a ogni ciclo. La condizione >9 è vera finché contatore è inferiore a 9. Quando viene incrementato fino a 10 la condizione specifica da until si verifica e il ciclo termina. Facile no?

  5. #5
    Quote Originariamente inviata da renygade Visualizza il messaggio
    Certo che si può.. é la condizione più banale.
    codice:
    Dim contatore as Integer 'variabile contatore
    Contatore = 0
    Do
       .... Le tue istruzioni
       contatore = contatore+1
    
    Loop Until contatore >9
    In questo caso il blocco istruzioni tra do e loop viene eseguito 10 volte (da 0 a 9).
    La variabile contatore viene infatti incrementata di 1 a ogni ciclo. La condizione >9 è vera finché contatore è inferiore a 9. Quando viene incrementato fino a 10 la condizione specifica da until si verifica e il ciclo termina. Facile no?
    quindi nel mio caso diverrà
    codice:
    Dim contatore as Integer 
    Contatore = 0
    Do
       
        Selection.TypeText Text:="', '"
    
        Selection.MoveLeft Unit:=wdCharacter, Count:=4
    
        Selection.MoveDown Unit:=wdLine, Count:=1
    
        Selection.TypeText Text:="', '"
    
        Selection.MoveLeft Unit:=wdCharacter, Count:=4
    
        Selection.MoveDown Unit:=wdLine, Count:=1
    
        contatore = contatore+1
    
    Loop Until contatore >279892
    End sub
    giusto?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237
    Quote Originariamente inviata da un dissennatore Visualizza il messaggio
    quindi nel mio caso diverrà
    codice:
    Dim contatore as Integer 
    Contatore = 0
    Do
       
        Selection.TypeText Text:="', '"
    
        Selection.MoveLeft Unit:=wdCharacter, Count:=4
    
        Selection.MoveDown Unit:=wdLine, Count:=1
    
        Selection.TypeText Text:="', '"
    
        Selection.MoveLeft Unit:=wdCharacter, Count:=4
    
        Selection.MoveDown Unit:=wdLine, Count:=1
    
        contatore = contatore+1
    
    Loop Until contatore >279892
    End sub
    giusto?
    Si prova.. Esegue il ciclo e poi esce.
    Però non so se sia il caso di eseguire 280 mila volte quelle istruzioni..

  7. #7
    Quote Originariamente inviata da renygade Visualizza il messaggio
    Si prova.. Esegue il ciclo e poi esce.
    Però non so se sia il caso di eseguire 280 mila volte quelle istruzioni..
    Grazie mille, te ne sono grato.
    Non prendermi per pazzo, mi serve per davvero

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237
    Quote Originariamente inviata da un dissennatore Visualizza il messaggio
    Grazie mille, te ne sono grato.
    Beh prego.
    Quote Originariamente inviata da un dissennatore Visualizza il messaggio
    Non prendermi per pazzo, mi serve per davvero
    Ah sisi, mi fido. Buon lavoro!

  9. #9
    Quote Originariamente inviata da renygade Visualizza il messaggio
    Beh prego.

    Ah sisi, mi fido. Buon lavoro!
    Grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.