Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[Excel2003] Inserimento colonna se

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[Excel2003] Inserimento colonna se

Postdi enrico43 » 22/11/14 11:38

Buongiorno,
avrei bisogno di un aiuto per far girare come dovrebbe il file allegato, la cui macro va in mano ad altri colleghi ed è inserita in un file su cui debbono lavorare. Si tratta di inserire una colonna dopo la colonna C quando nelle D1:D3 non compare il termine UM. Se invece UM compare, o nella D1 o nella D2 o nella D3 si ferma. Queste istruzioni sono propedeutiche all’attivazione di molte altre macro già compilate sulla base di un file dove le intestazioni erano sulla riga A. Poi le righe d’intestazione sono diventate due A:B ed in alcuni casi sono sulle righe B:C.
http://www.filedropper.com/eliporto
Le prima macro nel file funziona bene, ma se trova UM sulla riga B inserisce un'altra colonna, non cosi se UM è sulla riga A. La seconda macro inserisce sempre una colonna sia che trovi o no UM.
Nonostante abbia provato con due vie diverse non riesco proprio a risolvere.
Grazie dell’aiuto e buona giornata
Enrico
enrico43
Utente Senior
 
Post: 138
Iscritto il: 13/09/14 15:33
Località: Fiumicino

Sponsor
 

Re: [Excel2003] Inserimento colonna se

Postdi Zer0Kelvin » 22/11/14 12:19

Caio.
La logica della seconda macro è sbagliata; così come è scritta, funzionerebbe solo se il valore "UM" viene trovato in D1, altrimenti inserisce la colonna ed esce.
Una versione funzionante è questa
Codice: Seleziona tutto
Sub InsCol1()
Dim CL As Object
    For Each CL In Sheets(1).range("D1:D3").Cells
        If CL.Value = "UM" Then Exit Sub
    Next CL
    Application.ScreenUpdating = False
    Columns("D:D").Insert Shift:=xlToRight
    Columns("D:D").ColumnWidth = 4
    range("D2") = "UM"
    Application.ScreenUpdating = True
End Sub
[Win7,Office2010]
Condividere la conoscenza aumenta la ricchezza di tutti(Z0°K)
Dai ad un uomo un pesce e lo avrai sfamato per un giorno;insegnagli a pescare e lo avrai sfamato per sempre(Confucio)
Il sonno della ragione genera mostri(Francisco Goya)
Avatar utente
Zer0Kelvin
Utente Senior
 
Post: 305
Iscritto il: 08/04/12 11:23

Re: [Excel2003] Inserimento colonna se

Postdi enrico43 » 22/11/14 12:33

Perfetto. Risposta più veloce della luce. Grazie a te ed a tutti Voi che Vi adoperate solo per passione per aiutare noi poveri VBnauti.
Grazie mille
Enrico
enrico43
Utente Senior
 
Post: 138
Iscritto il: 13/09/14 15:33
Località: Fiumicino

Re: [Excel2003] Inserimento colonna se

Postdi enrico43 » 22/11/14 13:08

Scusa se rompo, funziona ma se trova UM, cioè se c'è già la colonna D, non attiva le macro che si trovano sotto questa verifica.
In sostanza il modulo utilizzato è uno solo che si attiva con il ctrl+a, ma che dopo la verifica dell'UM innesca altre macro.
Tutto questo per facilitarne l'utilizzo a chi non conosce le macro.
Un saluto
Enrico


Ho inserito le tue istruzioni in altra sub che poi ho richiamato come prima in quella che parte con il ctrl+a.
Alla brutta ma funziona.
Perciò risolto, ma se mi consigli un modo meno burino, ben venga.
Ciao
enrico43
Utente Senior
 
Post: 138
Iscritto il: 13/09/14 15:33
Località: Fiumicino

Re: [Excel2003] Inserimento colonna se

Postdi Zer0Kelvin » 22/11/14 15:46

Ciao.
Richiamare una sub dall'interno di un'altra sub non è affatto un metodo "burino", casomai è vero il contrario, cercare cioè di infilare tutto in una sola sub non è quasi mai il sistema migliore.
Comunqu, se desideri che l'esecuzione continui anche nel caso che la stringa non venga trovata, puoi modificare il codice così
Codice: Seleziona tutto
Dim CL As Object, Trovato As Boolean
    Trovato = False
    For Each CL In Sheets(1).Range("D1:D3").Cells
        If CL.Value = "UM" Then Trovato = True
    Next CL
    If Not Trovato Then 
        Application.ScreenUpdating = False
        Columns("D:D").Insert Shift:=xlToRight
        Columns("D:D").ColumnWidth = 4
        Range("D2") = "UM"
        Application.ScreenUpdating = True
    End If
    '... continua
    '...
[Win7,Office2010]
Condividere la conoscenza aumenta la ricchezza di tutti(Z0°K)
Dai ad un uomo un pesce e lo avrai sfamato per un giorno;insegnagli a pescare e lo avrai sfamato per sempre(Confucio)
Il sonno della ragione genera mostri(Francisco Goya)
Avatar utente
Zer0Kelvin
Utente Senior
 
Post: 305
Iscritto il: 08/04/12 11:23

Re: [Excel2003] Inserimento colonna se

Postdi enrico43 » 22/11/14 16:11

Non avevo dubbi che la soluzione era a portata di mano, ma non per me.
Ancora grazie insieme ad un cordiale saluto
Enrico
enrico43
Utente Senior
 
Post: 138
Iscritto il: 13/09/14 15:33
Località: Fiumicino


Torna a Applicazioni Office Windows


Topic correlati a "[Excel2003] Inserimento colonna se":


Chi c’è in linea

Visitano il forum: Nessuno e 12 ospiti