PDA

View Full Version : Excel - formula magica parte 2^


BlackHawk62
05-03-2008, 07:14
:help: :help: :help:
Caro Marco GG, se ci sei batti un colpo !
Ho ancora bisogno di te o di chiunque possa aiutarmi:
come mai creando un nuovo file e facendo il copia incolla
dell'elenco comandi in visual basic per il commandbutton1
mi da' errore? Ovvero : io creo un nuovo foglioda 6 etichette con altri dati, creo il CommanButton1 e al suo interno vado a copiare l'elenco dei comandi che mi hai postato l'ultima volta. Nel chiudere però mi esce questo avviso: Errore di compilazione: Rilevato nome non univoco:
CommandButton1_Click. E in più mi seleziona la scritta Private Sub CommandButton1_Click. Cosa significa?
Devo forse rinominarlo? Ci ho provato ma senza risultato.
Puoi aiutarmi ancora? Grazie.:help: :help: :help:

MarcoGG
05-03-2008, 07:50
Dovresti essere più chiaro... Non ci ho capito molto... :stordita:
Cioè, l'errore si genera quando tenti di copiare un CommandButton da un foglio all'altro ? O quando esegui la Macro sotto il nuovo pulsante ?

In Excel posso tranquillamente avere, ad esempio, un CommandButton1 su Foglio1 e un CommandButton1 su Foglio2, senza problemi...

Posta pure il foglio incriminato, se vuoi...

MarcoGG
05-03-2008, 07:57
Aspetta, forse ho già capito :doh: .
Hai preso la mia routine, incluso l'evento click, e l'hai messa sotto il nuovo pulsante... In questo modo hai nidificato 2 Sub con lo stesso nome !

Private Sub CommandButton1_Click()

Private Sub CommandButton1_Click()

'mio codice...

End Sub

End Sub

BlackHawk62
05-03-2008, 08:42
Ciao, ti posto il file incriminato.

MarcoGG
05-03-2008, 09:08
Esattamente come pensavo.
Hai dichiarato 2 volte Private Sub CommandButton1_Click(). Cancella tutto dopo "End Sub"...
:tapiro:

BlackHawk62
05-03-2008, 09:45
Ho tolto tutto come mi hai detto. Ma come mai mi crea
2 strisce di comandi se prima di incollare cancello tutto?. Comunque: sono uscito da modalità progettazione, ho rilanciato la stampa: mi stampa 3 fogli con gli stessi numeri da 1 a 6 anzichè da 1 a 18. Perchè?.
Scusa se non sono immediato nelle risposte ma oggi in ufficio ci sono un paio di clienti esteri che stanno
facendo perdere la testa: sto facendo 20 cose contemporaneamente ! Attendo cmq tua risposta
grazie. Ciao.

MarcoGG
05-03-2008, 10:18
No, forse non mi son spiegato... Tu mi hai mandato questo :
Private Sub CommandButton1_Click()

Dim MIN As Long
MIN = 1
Dim MAX As Long
MAX = 18
Dim NumPerPag As Long
NumPerPag = 6

Dim i As Long
i = 1
Range("C11").FormulaR1C1 = i
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

For i = (MIN + NumPerPag) To MAX
If ((i - 1) Mod NumPerPag) = 0 Then
Range("C11").FormulaR1C1 = i
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End If
Next i

End Sub

Private Sub CommandButton1_Click()

Logico che non funzionava. Elimina la SECONDA, inutile dichiarazione ( in rosso ).
Poi, quando crei un button in modalità progettazione e fai doppio-Click entri nel codice, e noterai che VBA editor ti ha già predisposto la dichiarazione :
Private Sub CommandButton1_Click()

End Sub

Ovvio che in mezzo ci metti solo il corpo del codice, senza dichiarazione, ossia copia/incolla di questo :


Dim MIN As Long
MIN = 1
Dim MAX As Long
MAX = 18
Dim NumPerPag As Long
NumPerPag = 6

Dim i As Long
i = 1
Range("C11").FormulaR1C1 = i
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

For i = (MIN + NumPerPag) To MAX
If ((i - 1) Mod NumPerPag) = 0 Then
Range("C11").FormulaR1C1 = i
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End If
Next i

Dai, ti stai un po' perdendo in un bicchier d'acqua... :D

BlackHawk62
05-03-2008, 11:46
Puo' anche essere:D
Ma come ti dicevo, prima di incollare e subito dopo aver creatro il pulsante ho cancellato le scritte :
Private Sub CommandButton1_Click()
End Sub
e incollato tutto il tuo contenuto.
Ho provato anche a eliminarlo, crearlo nuovamente, ma nel momento in cui klikko sul pulsante per editarlo mi appare già tutto il contenuto come se tenesse in memoria negli appunti il contenuto del pulsantes stesso.
Cmq sia, ho fatto come mi hai detto tu, copiando solo le informazioni senza quelle su strisce di comando, risultato: lo stesso, stampa i fogli sempre con gli stessi numeri; ho aggiunto allora le ultime due strisce ovvero :
Private Sub CommandButton2_Click()

End Sub precedute da una riga orizzontale che occupa tutta la larghezza della schermata. Solo a questo punto stampa correttamente tutti i numeri in successione e in modo progressivo. Ho notato che nella 1^ versione qndo klikki sul pulsante per stampare, i numeri a video (1,2,3
4,5,6) diventano quelli dell'ultima pagina stampata , nel 2 caso rimangono fissi. Scusami ma come ti dicevo nella
1^ puntata non conosco VBA e per me non è così facile capire .... anche se si tratta poi alla fine di un "semplice:what: " copia-incolla . Spero ti sia chiaro tutto sto kasino che ti ho scritto, grazie ancora; Spero solo se avessi ancora bisogno di te che non mi mandi a quel paese. Ciao:mano:

MarcoGG
05-03-2008, 12:23
Strana cosa... :mbe: . Forse perchè hi copiato / incollato il pulsante da un Workbook a un altro... Ma se crei un nuovo file Excel per ogni set di etichette da stampare e ripeti i passi della puntata 1, non avrai tutti 'sti problemi.
In ogni caso, hai risolto. :cool: