Composizione automatica di sigla alfanumerica
Hai un problema con Excel? 
Composizione automatica di sigla alfanumerica
di bcgeppo data: 15/03/2014 06:51:14
Buongiorno Forum, vorrei implementare un mio foglio con una cosa carina che ho trovato nel forum qualche giorno fà, si tratta di una macro che inserisce in automatico il numero aggiunto a una sigla selezionabile da una casella combinata, premetto che non conosco il VB, il problema è che non riesco ad adattare tale macro alle mie esigenze e cioè vorrei mettere la sigla seguita da 4 numeri anzi la sigla seguita da "-" e 3 numeri, inoltre non riesco a capire perche non si posiziona nella prima cella disponibile della colonna della tabella, inoltre funziona solo con la sigla "PRO" che non ha ancora nessun articolo mentre per le altre sigle che hanno gia degli articoli non funziona.
Allego file di esempio:"Articoli.xlsm"
Buona giornata
di Raffaele_53 (utente non iscritto) data: 15/03/2014 13:06:35
Se vai in ThisWorkbook e modifichi tutte le stringhe da
Sheets(1).ComboBox1.AddItem "CAM" in Sheets("Articoli").ComboBox1.AddItem "CAM"
Poi Cancelli tutta la tabella tranne una riga VUOTA (un domani non potrai mai cancellare una riga)
Nel codice elimina l'attuale ed inserisci questo
Salva e riapri il files
Ps il codice precedente va bene ma se ci sono miglia di record diventa pesante
Private Sub CommandButton1_Click()
Dim Y As String, K As Long, Tot As Long, Tot1 As String
Y = MsgBox("Vuoi generare un numero progressivo?", vbInformation + vbYesNo, "Numerazione Progressiva")
If Y = vbYes And ComboBox1 <> "" Then
K = Range("a" & Rows.Count).End(xlUp).Row
Rows(K & ":" & K).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Set Area = Range("A4:A" & K)
Tot = Application.WorksheetFunction.CountIf(Area, ComboBox1.Value & "*")
Tot1 = Format(Tot + 1, "0000")
Cells(K, 1) = ComboBox1 & Tot1
Set Area = Nothing
End If
End Sub |
di bcgeppo data: 15/03/2014 14:46:21
cosa intendi per "poi Cancelli tutta la tabella tranne una riga VUOTA" devo cancellare tutti gli articoli gia creati? devo ripartire tutto da 0?
non c'è un modo per agganciarsi all'ultimo numero piu alto e aggiungere 1?
grazie per l'interessamento.
ciao
di Raffaele_53 (utente non iscritto) data: 15/03/2014 23:12:00
La macro scritta serviva per creare una sigla univoca consecutiva.
I dati che hai scritto sono mancanti di tante sigle ex
CAM0036
CAM0038
CAM0041
CAM0043
CAM0044
CAM0045
ecc ecc
Se a Te va bene ricercare l'ultimo codice immesso (senza farli consecutivi), puoi usare il codice Tuo
Ps devi eliminare le righe 300/304 (dovrai avere solo una riga vuota)
Ci pensa il codice ad inserire la riga nuova
Private Sub CommandButton1_Click()
Y = MsgBox("Vuoi generare una sigla?", vbInformation + vbYesNo, "Numerazione Progressiva")
If Y = vbYes And ComboBox1 <> "" Then
K = Range("A" & Rows.Count).End(xlUp).Row
Rows(K & ":" & K).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
For I = K - 1 To 5 Step -1
If Mid(Cells(I, 1), 1, 3) = ComboBox1 Then
v = Right(Cells(I, 1), 4) + 1
Cells(K, 1) = ComboBox1 & Format(v, "0000")
Exit Sub
End If
Next I
Cells(K, 1) = ComboBox1 & Format(1, "0000")
End If
End Sub |
di bcgeppo data: 17/03/2014 13:20:53
Grazie mille, funzionano entrambi a meraviglia, ora dovro decidere quale usare.
Ciao Buona giornata
di Vecchio Frac data: 17/03/2014 14:02:47
Il titolo ("macro da adattare") non è idoneo a identificare il problema.
Prego di essere più precisi le prossime volte.
Vuoi Approfondire?