› Excel e gli applicativi Microsoft Office › Numero Progressivo Alfanumerico
-
AutoreArticoli
-
Buon giorno a tutti
mi son imbattuto in un problemino che non so come risolvere,
in pratica ho un file con un foglio "Indice"
se lancio la Userform va a trovare l'ultimo numero della colonna A partendo da Basso e incrementandolo di 1;
a me occorre invece avere una numerazione progressiva Alfanumerica, e cioè i numeri devono essere preceduti da una Lettera da me impostata,esempio (E0001 e così Via)
e possibile una cosa del genere?
ringrazio anticipatamente.
Prima di risolvere...
Hai notato che va già in errore appena tenti di far partire l'userform? riesci a capire perchè e come risolvere?
si me ne sono accorto,
e lo so che va in errore.
il controllo dell'ultima riga viene fatta dal basso.
se metti un numero qualsiasi vedi che quando lanci la userform funziona.
Io ho messo le lettere per farti capire il risultato
Bè l'errore lo devi risolvere 🙂
Questo è il codice corretto per far sì che all'avvio il tuo userform proponga il numero di ordine corretto:
Private Sub UserForm_Initialize() Label27.Caption = Worksheets("indice").Cells(Rows.Count, 1).End(xlUp).Row + 1 End SubDentro il commandbutton invece fai queste modifiche:
RowCount = Label27.Caption Cells(RowCount, 1) = "E" & Format(Label27.Caption, "0000") Cells(RowCount, 2) = anno.Value Cells(RowCount, 3) = riferimento.Value Cells(RowCount, 4) = ufficio.Value ecceteraHo fatto modifiche al volo, è l'impianto del codice che ho rivisto in parte (vedi cosa uso al posto degli Offset? se analizzi come ho calcolato RowCount te ne puoi rendere conto facilmente).
scusa se ti riscrivo
ma non è possibile avere la numerazione Alfanumerica all 'avvio della Userform?
quindi ;
UserForm_Initialize
in pratica mi occorre avere la numerazione Alfanumerica all'avvio e mi deve andare avanti quando registro dati nel comando "Archivia"
ho modificato come mi hai suggerito.
e funziona,
ma nella label27 quando la lancio mi va a leggere la riga di excel e non l'ultimo dato nella cella piena.
al lancio della Userfom mi compare solo il numero e non la lettera, quallo che chiedevo era avere al lancio della userform alnche nella label27 la numerazione alfanumerica,
forse mi son spiegato male e chiedo scusa,
e fattibile una cosa del genere?
wrote: fattibile una cosa del genere?
Se non ho capito male:
Private Sub UserForm_Initialize() Label27.Caption = cells(Worksheets("indice").Cells(Rows.Count, 1).End(xlUp).Row + 1, "A") End Subscusate , se ho capito, modificando il codice cosi, compare la numerazione alfanumerica, ho capito male?
Private Sub UserForm_Initialize()Label27.Caption = "E" & Worksheets("indice").Cells(Rows.Count, 1).End(xlUp).Row + 1End SubQual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )battuto sul filo dei SETTE minuti
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Albatros
grazie per l'intervento
e ti ringrazio a priori,
con la tua soluzione ci siamo avviciniti, ma non e ancora il risultato che volevo.
al lancio della userform deve verificare l'ultimo Numero d'ordine nella colonna A e incrementarlo di uno (1)
ma vorrei avere un numero d'ordine Alfanumerico
esempio : se nella cella A8 ho E0001,
nel lanciare la userform dovrei vedere nella label E0002 e così via
spero di aver spiegato bene
Prova cosi, se ho capito
`Private Sub UserForm_Initialize() riga = Worksheets("indice").Cells(Rows.Count, 1).End(xlUp).Row stringa = Cells(riga, 1) Cont = 0 For N = 1 To Len(stringa) If IsNumeric(Mid(stringa, N, 1)) Then Cont = Cont & Mid(stringa, N, 1) Else strn = (Mid(stringa, N, 1)) End If Next Cont = Cont + 1 MsgBox strn & Cont valore = strn & Cont Label27.Caption = valore End Sub`Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Albatros
mi da errore
mi dice "Variabile non definita" e mi evidenzia (Stringa)
potresti gentilmente provarlo sul file che ho allegato?
grazie
e se non ti è di troppo disturbo me lo rigiri corretto.
infinitamente grazie
non riesco ad uscirmene con qsto problemino
ti va in errore perche non ho dichiarato le variabile,dichiara le variabili o commenta "Option Explicit"
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )sostituisci con questo
Private Sub UserForm_Initialize() Dim stringa As String, strn As String, valore As String Dim cont As Integer, n As Integer riga = Worksheets("indice").Cells(Rows.Count, 1).End(xlUp).Row stringa = Cells(riga, 1) cont = 0 For n = 1 To Len(stringa) If IsNumeric(Mid(stringa, n, 1)) Then cont = cont & Mid(stringa, n, 1) Else strn = (Mid(stringa, n, 1)) End If Next cont = cont + 1 valore = strn & cont Label27.Caption = valore End SubQual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Albatros Grazie mille funziona.
un ultima cosa e possibile avere come risultato EO e poi il numero in progressione?
oppure un modo per impostare nel codice VBA quali devono essere le lettere che devono precedere il numero che andrà in progressione?
questo mi serve per avere un codice commessa più corretto e consono alle procedure qualità aziendali.
In pratica il risultato dovrebbe essere EO001 ,EO002, EO003 e cosi via?
e pssibile?
Dim lng As Long
With sh
If lRiga = 1 Then
Me.label27.Caption = "E0001"
Else
lng = CLng(Right(.Range("A" & lRiga).Value, 3)) + 1
Me.label27.Caption = "E" & Format(lng, "000")
End If
End Withuna volta avevo qsto codice che non riesco ad adattare alle mie esigenze.
mi va in blocco,
potresti provare ad adattare al mio caso? grazie
e scusa per il disturbo
perche complicarsi, se studi bene il codice che ti ho postato, aggiungendo due righe di codice fa quello che chiedi, comunque , ecco il codice
Private Sub UserForm_Initialize() Dim stringa As String, strn As String, valore As String, strnbis As String Dim cont As Integer, n As Integer riga = Worksheets("indice").Cells(Rows.Count, 1).End(xlUp).Row stringa = Cells(riga, 1) cont = 0 For n = 1 To Len(stringa) If IsNumeric(Mid(stringa, n, 1)) Then cont = cont & Mid(stringa, n, 1) Else strn = (Mid(stringa, n, 1)) strnbis = strnbis + strn End If Next cont = cont + 1 valore = strnbis & cont Label27.Caption = valore End SubQual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire )Gio' mi piace molto questo avatar nuovo
Ho avuto solo ora modo di testare e porvare il codice
il tutto funziona come volevo, ringrazio sentitamente.
Risolto
Bene, se abbiamo risolto, spunta la relativa casella
Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
Sempre il mare, uomo libero, amerai!
( Charles Baudelaire ) -
AutoreArticoli
