Condividi:        

macro per campo obbligatorio

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

macro per campo obbligatorio

Postdi marte1503 » 25/11/10 00:19

Ciao a tutti,
Ho creato col registratore una macro per archiviare i dati presenti nell’intervallo A8:E8 nelle righe sottostanti, ma non conoscendo il VBA non sono capace di modificarla in modo che faccia questa operazione:
Avrei bisogno che la cella C8 funzioni da “campo obbligatorio”, nel senso che qualora non contenesse valori, la macro non deve trascrivere nessun dato dell’intervallo A8:E8 (Questo controllo sulla cella C8 mi serve in quanto da essa dipende il corretto funzionamento di alcune formule).
Grazie in anticipo
Rows("11:11").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("A8:E8").Select
Selection.Copy
Range("A11").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Rows("12:12").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp
Range("A11:E11").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent5
.TintAndShade = 0.599993896298105
.PatternTintAndShade = 0
End With
Range("B8:E8").Select
Selection.ClearContents
Range("B8").Select
End Sub
marte1503
Utente Senior
 
Post: 232
Iscritto il: 08/01/10 20:43
Località: Como

Sponsor
 

Re: macro per campo obbligatorio

Postdi ricky53 » 25/11/10 00:58

Ciao,
tralascerei per il momento il tuo codice
e
cercherei di capire :

1. devi copiare l'intervallo "A8:E8" solo se "C8" contiene qualcosa
2. si deve copiare solo l'intervallo "A8:E8"
3. si deve copiare sulla riga ..... '??? oppure accodare all'ultima riga piena a partire da .... ???
4. i dati presenti nell'intervallo "B8:E8" (Attenzione l'intervallo parte da "B") vanno cancellati ???
5. altro ....

Chiarito questo il codice vine facile scriverlo.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: macro per campo obbligatorio

Postdi Francesco53 » 25/11/10 09:58

Buon giorno, provo a dare un aiuto se ho capito bene l'esigenza di marte1503,
inserisci la riga in rosso tra le due righe della tua macro:
Rows("11:11").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
If Cells(8, 3) = 0 Then Exit Sub
Range("A8:E8").Select
Selection.Copy
Francesco
S.O. Windows 10 e Office 2007
Avatar utente
Francesco53
Utente Senior
 
Post: 811
Iscritto il: 20/02/10 18:45

Re: macro per campo obbligatorio

Postdi marte1503 » 26/11/10 01:45

Ciao Ricky53 Grazie per l’interessamento!
Rispondo punto su punto
1. SI’, devo copiare l'intervallo "A8:E8" solo se "C8" contiene qualcosa (precisamente una valore di testo selezionabile con convalida da menù a tendina)
2. SI’, si deve copiare solo l'intervallo "A8:E8"
3. A ogni attivazione, la macro fatta da me inserisce una nuova riga 11 incollando i valori provenienti da A8:E8 nell’intervallo A11:E11 , così da spostare ogni volta verso il basso i valori già presenti fino a quel momento sul foglio. I valori precedentemente immessi in A8:E8 vengono poi cancellati partendo dalla cella B8:E8 (in quanto A8 rimane invariata) la macro termina poi in posizione B8.
Questa operazione sono riuscito a crearla col registratore ma non mi piace…
4. La macro così come la vorrei io invece dovrebbe rispondere a questa istruzione:
copia l’intervallo A8:E8 e incollalo in A11:E11 accodando i valori già presenti sulla riga11. Il tutto a condizione che la cella C8 non sia rimasta erroneamente vuota (vincolando in questo modo l’intero trasferimento A8:E8 alla cella C8)
Spero di essere stato più chiaro…
Grazie per il nuovo impegno.

Ciao Francesco53 grazie anche a te per l’interessamento!
Ho provato a inserire la nuova istruzione come da tuo suggerimento ma non funziona, nel senso che il trasferim avviene anche se la cella C8 è vuota…
Ringrazio anche te!
marte1503
Utente Senior
 
Post: 232
Iscritto il: 08/01/10 20:43
Località: Como

Re: macro per campo obbligatorio

Postdi ricky53 » 26/11/10 09:33

Ciao,
prova con
Codice: Seleziona tutto
If Cells(8, 3) = "" Then Exit Sub


si potrebbe sfoltire la macro ma se ottieni il risultato e, visto, che devi copiare pochi dati non mi metterei a fare nulla.
Vedi tu, nel caso possiamo vedere di fare qualcosa insieme.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: macro per campo obbligatorio

Postdi marte1503 » 26/11/10 16:29

Ciao Ricky53

facendo un po' di prove ho ottenuto il risultato.
L'istruzione che mi hai fatto correggere funziona, ma l'ho dovuta immettere come prima informazione della macro, e non dove mi era stato suggerito da Francesco53.
Grazie per l'aiuto

marte1503 (paolo)
marte1503
Utente Senior
 
Post: 232
Iscritto il: 08/01/10 20:43
Località: Como


Torna a Applicazioni Office Windows


Topic correlati a "macro per campo obbligatorio":


Chi c’è in linea

Visitano il forum: Nessuno e 57 ospiti