Torna indietro   Hardware Upgrade Forum > Software > Programmazione

OnePlus Pad Go: un tablet economico perfetto per l'intrattenimento. La recensione
OnePlus Pad Go: un tablet economico perfetto per l'intrattenimento. La recensione
OnePlus Pad Go è un tablet Android di fascia media che offre un'esperienza di intrattenimento immersiva grazie al display 2.4K, all'audio Dolby Atmos, alla connettività LTE e a un design premium, il tutto a un prezzo molto competitivo. Ecco tutti i dettagli nella nostra recensione completa.
Per Huawei l’IA è una questione di storage. Presentate soluzioni dedicate e un SSD da 128 TB
Per Huawei l’IA è una questione di storage. Presentate soluzioni dedicate e un SSD da 128 TB
Inizia l’era dell’AI storage. Durante l’Innovative Data Infrastructure Forum 2024, Huawei ha presentato OceanStor A800, una soluzione innovativa pensata per i carichi di lavoro legati all’intelligenza artificiale generativa
Recensione Google Pixel Tablet: in ritardo ma un ottimo primo passo!
Recensione Google Pixel Tablet: in ritardo ma un ottimo primo passo!
Il Pixel Tablet di Google arriva finalmente anche in Italia e lo fa quasi un anno dopo il suo debutto negli USA e in alcuni paesi nel mondo. Un ritardo che sembra però aver giovato al device che arriva performante e con molte funzionalità uniche che possono renderlo decisamente appetibile.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 31-07-2009, 10:19   #1
radeon_snorky
Senior Member
 
Iscritto dal: Mar 2003
Messaggi: 1951
[VBA][EXCEL] codice variabile per scrivere celle e formati particolari

spero che la sezione sia quella giusta!

ho realizzato uno scadenziario per gestire le pratiche d'ufficio, ora inserisco il numero della pratica a mano ma vorrei che fosse automatico.
Codice:
09							
num	data	 oggetto   rif	  data fine	ecc
001/09	29/07/09 pippo     pluto  30/07/09	ecc
mi spiego, vorrei poter associare un codice ad una particolare cella.. ma che cambia a seconda del fatto che se ne sia scritta una precedente (che è quella con l'ultimo numero di pratica inserita) per evitare lungaggini programmatorie o casini vari, potrei già inserire una prima riga già tutta compilata...
al click sulla cella vuota (sotto quella già scritta) il codice legge la cella immediatamente sopra e scrive il testo aumentato di 1 (formato XXX/AA, X=cifre A=anno)
la prima cella in alto è =OGGI() con formato AA, se servisse...

posso creare del codice anche per vincolare la colonna "rif" ad una lista di nomi (anche scritti nel codice stesso, tanto sono pochi) e avere una listbox?

grazie dell'aiuto che vorrete darmi!

edit:
intanto mi sto informando...
Codice:
[B1] = [B1] + 1
[E1] = Format([B1], "000") & "/" & Mid(Year(Now()), 3, 2)
in E1 scrive proprio quello di cui ho bisogno... prendendolo da B1 aumentato di 1... ma nell'esempio trovato il codice è associato all'apertura del file... a me serve di continuo ma solo sulla colonna "num"... e che abbia i riferimenti alle celle che via via si adattano al contenuto!

Ultima modifica di radeon_snorky : 31-07-2009 alle 10:29.
radeon_snorky è offline   Rispondi citando il messaggio o parte di esso
Old 31-07-2009, 12:44   #2
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3208
Io vedrei bene un sistema di inserimento tramite UserForm, magari con foglio protetto.
In questo modo potresti intercettare ogni errore di battitura e inoltre non avresti più il problema di dover inserire la prima riga a mano...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 31-07-2009, 17:21   #3
radeon_snorky
Senior Member
 
Iscritto dal: Mar 2003
Messaggi: 1951
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Io vedrei bene un sistema di inserimento tramite UserForm, magari con foglio protetto.
In questo modo potresti intercettare ogni errore di battitura e inoltre non avresti più il problema di dover inserire la prima riga a mano...
ma così ricado nella rete del nel vb... net! ricordi? http://www.hwupgrade.it/forum/showthread.php?t=1907442
potrei però riciclare un poco di quel progetto e riadattarlo ad un foglio excel, così sarebbe più digeribile...
radeon_snorky è offline   Rispondi citando il messaggio o parte di esso
Old 31-07-2009, 17:51   #4
ses4
Member
 
Iscritto dal: Aug 2008
Messaggi: 178
Quote:
Originariamente inviato da radeon_snorky Guarda i messaggi
spero che la sezione sia quella giusta!

ho realizzato uno scadenziario per gestire le pratiche d'ufficio, ora inserisco il numero della pratica a mano ma vorrei che fosse automatico.
Codice:
09							
num	data	 oggetto   rif	  data fine	ecc
001/09	29/07/09 pippo     pluto  30/07/09	ecc
mi spiego, vorrei poter associare un codice ad una particolare cella.. ma che cambia a seconda del fatto che se ne sia scritta una precedente (che è quella con l'ultimo numero di pratica inserita) per evitare lungaggini programmatorie o casini vari, potrei già inserire una prima riga già tutta compilata...
al click sulla cella vuota (sotto quella già scritta) il codice legge la cella immediatamente sopra e scrive il testo aumentato di 1 (formato XXX/AA, X=cifre A=anno)
la prima cella in alto è =OGGI() con formato AA, se servisse...

posso creare del codice anche per vincolare la colonna "rif" ad una lista di nomi (anche scritti nel codice stesso, tanto sono pochi) e avere una listbox?

grazie dell'aiuto che vorrete darmi!

edit:
intanto mi sto informando...
Codice:
[B1] = [B1] + 1
[E1] = Format([B1], "000") & "/" & Mid(Year(Now()), 3, 2)
in E1 scrive proprio quello di cui ho bisogno... prendendolo da B1 aumentato di 1... ma nell'esempio trovato il codice è associato all'apertura del file... a me serve di continuo ma solo sulla colonna "num"... e che abbia i riferimenti alle celle che via via si adattano al contenuto!
Clicca con il tasto destro del mouse sul foglio di lavoro contenente lo scadenzario, seleziona "Visualizza codice" e ricopiaci questo:
Codice:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim myCel As Range
Dim Prec
Set myCel = Range("A1").End(xlDown).Offset(1)
    If Not Intersect(Target, myCel) Is Nothing Then
        Prec = Range("A1").End(xlDown).Value
        myCel.Value = Format(CLng(Left(Prec, 3)) + 1, "000") & Right(Prec, 3)
    End If
End Sub
fa ciò che chiedi, ma con un doppio click anzichè uno e non devi lasciare celle vuote.
In alternativa, molto meglio secondo me, scrivi il primo numero di registro in A3 (secondo il tuo esempio) e in A4 scrivi:
Codice:
=SE(O(A3="";B4="");"";TESTO(SINISTRA(A3;3)+1;"000")&"/"&TESTO(OGGI();"aa"))
e trascina in basso, quando in colonna B della riga successiva all'ultima scrittura inserirai la data nella corrispondente cella di colonna A ti comparirà il numero di pratica aumentato di 1.
In questo caso calcola direttamente l'anno, ma si può fare come nel codice riportato sopra.
Per quanto riguarda il secondo quesito puoi usare la "Convalida dei dati".
dalla barra dei menù seleziona: Dati>Convalida>Consenti:Elenco
nel campo Origine scrivi direttamente le voci separate da ";" se sono poche oppure il riferimento all'intervallo di celle contenenti l'elenco (nel caso si trovi su un altro foglio di lavoro dai un nome all'intervallo e usa il nome).
Ciao
ses4 è offline   Rispondi citando il messaggio o parte di esso
Old 31-07-2009, 19:35   #5
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3208
Quote:
Originariamente inviato da radeon_snorky Guarda i messaggi
ma così ricado nella rete del nel vb... net! ricordi? http://www.hwupgrade.it/forum/showthread.php?t=1907442
potrei però riciclare un poco di quel progetto e riadattarlo ad un foglio excel, così sarebbe più digeribile...
Ma quello era VB.NET. Se il tuo scadenzario è un semplice Foglio con una tabella, Excel va benone. Basterebbe un CommandButton "Inserisci nuova pratica", che apre una semplice UserForm in cui puoi mettere tutte le ListBox o ComboBox che vuoi e inoltre ridurre a zero gli errori dell'utente dovuti a modifica diretta delle celle... A te la scelta...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 05-08-2009, 17:01   #6
radeon_snorky
Senior Member
 
Iscritto dal: Mar 2003
Messaggi: 1951
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Ma quello era VB.NET. Se il tuo scadenzario è un semplice Foglio con una tabella, Excel va benone. Basterebbe un CommandButton "Inserisci nuova pratica", che apre una semplice UserForm in cui puoi mettere tutte le ListBox o ComboBox che vuoi e inoltre ridurre a zero gli errori dell'utente dovuti a modifica diretta delle celle... A te la scelta...
avresti dei link dove potermi informare per scrivere il codice vba per collegare i dati della form alle celle?

Quote:
Originariamente inviato da ses4 Guarda i messaggi
Codice:
=SE(O(A3="";B4="");"";TESTO(SINISTRA(A3;3)+1;"000")&"/"&TESTO(OGGI();"aa"))
Ciao
mi piace!
radeon_snorky è offline   Rispondi citando il messaggio o parte di esso
Old 05-08-2009, 19:51   #7
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3208
Quote:
Originariamente inviato da radeon_snorky Guarda i messaggi
avresti dei link dove potermi informare per scrivere il codice vba per collegare i dati della form alle celle?
C'è un thread fresco fresco in cui ho appena postato un esempio :

http://www.hwupgrade.it/forum/showthread.php?t=2026676
[ vedi mio post #8 ]

MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 06-08-2009, 14:57   #8
radeon_snorky
Senior Member
 
Iscritto dal: Mar 2003
Messaggi: 1951
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
C'è un thread fresco fresco in cui ho appena postato un esempio :

http://www.hwupgrade.it/forum/showthread.php?t=2026676
[ vedi mio post #8 ]

lo leggo! non avresti delle risorse online? sai è frustrante far il copia incolla di codice senza capirne il funzionamento!
radeon_snorky è offline   Rispondi citando il messaggio o parte di esso
Old 07-08-2009, 11:02   #9
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3208
Quote:
Originariamente inviato da radeon_snorky Guarda i messaggi
lo leggo! non avresti delle risorse online? sai è frustrante far il copia incolla di codice senza capirne il funzionamento!
Risorse online specifiche su UserForm VBA non ne ho da segnalare. Cmq, al post che ti ho linkato mi pare di aver spiegato tutto abbastanza chiaramente...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 07-08-2009, 22:55   #10
radeon_snorky
Senior Member
 
Iscritto dal: Mar 2003
Messaggi: 1951
ho bisogno di info su questi codici:
Codice:
Private Sub SaveBtn_Click()
    ActiveWorkbook.Sheets("scadenze").Activate
    Range("B1").Select
    Do
    If IsEmpty(ActiveCell) = False Then
    ActiveCell.Offset(1, 0).Select
    End If
    Loop Until IsEmpty(ActiveCell) = True
    ActiveCell.Value = Format(data1.Value, "gg/mm/aaaa")
    ActiveCell.Offset(0, 1) = data2.Value
    ActiveCell.Offset(0, 2) = data3.Value
    ActiveCell.Offset(0, 3) = data4.Value
    ActiveCell.Offset(0, 4) = data5.Value
    Range("B1").Select
End Sub
Codice:
Public r As Integer
Private Sub UserForm_Initialize()
    trova_riga_vuota  '<-- richiama la sub per cercare la prima riga vuota
End Sub
Sub trova_riga_vuota()
r = 0
Do
   r = r + 1
Loop Until scadenze.Cells(r, 2) = "" And _
            scadenze.Cells(r, 3) = "" And _
            scadenze.Cells(r, 4) = "" And _
            scadenze.Cells(r, 5) = "" And _
            scadenze.Cells(r, 6) = "" Or r = 5000
End Sub
Private Sub SaveBtn_Click()
scadenze.Cells(r, 2) = data1
scadenze.Cells(r, 3) = data2
scadenze.Cells(r, 4) = data3
scadenze.Cells(r, 5) = data4
scadenze.Cells(r, 6) = data5
End Sub
ora, a parte le differenze e i SICURI errori (ho adattato il codice dell'altra discussione) volevo sapere quale codice è meglio e perché...

ho preferito non andare a scrivere sulla colonna A visto che il codice di ses4 mi sembrava molto valido!

sulla form vorrei poter visualizzare il numero della pratica con una label che, alla pressione di SaveBtn, vada a leggere proprio il dato generato dalla formula... ho semplicemente aggiunto alla fine della sub SaveBtn_Click() il comando PratLabel.Caption = ActiveCell.Offset(0, -1).Text
però non so come dare il riferimento all'ultima riga...

e poi, ActiveCell.Value = Format(data1.Value, "gg/mm/aaaa") non fa quello che dovrebbe!!! mi scrive "gg/mese in cifre/aaaa" G e A non li converte in cifre! come mai!?!?!?!

EDIT:
mi sono accorto che accetta dd/mm/yyyy eppure il mio excel è italiano... (e win7 è settato su italiano)
comunque mi serve sapere come "obbligare" l'inserimento e la visualizzazione di giorno/mese/anno in quest'ordine, visto che al salvataggio lo inverte all'americana...

EDIT2:
avevo scordato di togliere la formattazione su "data" di quella colonna e andava in tilt.. ora fa come mi aspettavo (anche se fubziona solo con dd/mm/yyyy e non con gg/mm/aaaa... poco male!)

Ultima modifica di radeon_snorky : 08-08-2009 alle 00:31.
radeon_snorky è offline   Rispondi citando il messaggio o parte di esso
Old 08-08-2009, 14:02   #11
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3208
Quote:
Originariamente inviato da radeon_snorky Guarda i messaggi
ho bisogno di info su questi codici:
Codice:
Private Sub SaveBtn_Click()
    ActiveWorkbook.Sheets("scadenze").Activate
    Range("B1").Select
    Do
    If IsEmpty(ActiveCell) = False Then
    ActiveCell.Offset(1, 0).Select
    End If
    Loop Until IsEmpty(ActiveCell) = True
    ActiveCell.Value = Format(data1.Value, "gg/mm/aaaa")
    ActiveCell.Offset(0, 1) = data2.Value
    ActiveCell.Offset(0, 2) = data3.Value
    ActiveCell.Offset(0, 3) = data4.Value
    ActiveCell.Offset(0, 4) = data5.Value
    Range("B1").Select
End Sub
Codice:
Public r As Integer
Private Sub UserForm_Initialize()
    trova_riga_vuota  '<-- richiama la sub per cercare la prima riga vuota
End Sub
Sub trova_riga_vuota()
r = 0
Do
   r = r + 1
Loop Until scadenze.Cells(r, 2) = "" And _
            scadenze.Cells(r, 3) = "" And _
            scadenze.Cells(r, 4) = "" And _
            scadenze.Cells(r, 5) = "" And _
            scadenze.Cells(r, 6) = "" Or r = 5000
End Sub
Private Sub SaveBtn_Click()
scadenze.Cells(r, 2) = data1
scadenze.Cells(r, 3) = data2
scadenze.Cells(r, 4) = data3
scadenze.Cells(r, 5) = data4
scadenze.Cells(r, 6) = data5
End Sub
ora, a parte le differenze e i SICURI errori (ho adattato il codice dell'altra discussione) volevo sapere quale codice è meglio e perché...

ho preferito non andare a scrivere sulla colonna A visto che il codice di ses4 mi sembrava molto valido!
Non so, personalmente non userei nè il primo nè il secondo.
Che senso hanno tutti quegli Offset e tutti quegli And + Select su ogni singola cella, quando, come già detto, si può testare il record vuoto semplicemente dalla .Text del Range che lo rappresenta ?

Mettiamo che il Foglio con la tabella sia così strutturato :
[A1] : 09
[A2:E2] : num, data, oggetto, rif, data fine
Il Range-Record è un [Ax:Ex], a partire dall'indice 3 in poi :

Codice:
    indiceNuovaRiga = 3
    Do
        If Range("A" & indiceNuovaRiga & ":E" & indiceNuovaRiga).Text = "" Then
            Exit Do
        Else
            indiceNuovaRiga = indiceNuovaRiga + 1
        End If
    Loop
    MsgBox indiceNuovaRiga
Per quanto riguarda la Fx in A sul calcolo del codicePratica, è questione di gusto e stile personale. Io non la userei mai.
Una volta che indiceNuovaRiga è calcolato e noto :

Codice:
    'codice nuova pratica
    Dim anno As String
    anno = Range("A1").Text
    Dim numPratica As String
    numPratica = Format(indiceNuovaRiga - 2, "000")
    Dim codiceNuovaPratica As String
    codiceNuovaPratica = numPratica & "/" & anno
E non ho bisogno di avere altro. Semplice / leggibile / modificabile, e funziona sempre, anche a tabella vuota.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 13-08-2009, 08:44   #12
radeon_snorky
Senior Member
 
Iscritto dal: Mar 2003
Messaggi: 1951
in effetti è più comodo... solo che avendomi linkato l'altra discussione pensavo che quel codice facesse al caso mio...
ho acquistato un libro "pocket" che parla di vba per excel... ma è spiegato male! o sarò io di coccio?!!?!?
comunque grazie!
tra poco si parte per le ferie, metto il "progetto" in stallo!

ciao!!!
radeon_snorky è offline   Rispondi citando il messaggio o parte di esso
Old 13-08-2009, 14:06   #13
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3208
Quote:
Originariamente inviato da radeon_snorky Guarda i messaggi
in effetti è più comodo... solo che avendomi linkato l'altra discussione pensavo che quel codice facesse al caso mio...
Beh, io ti avevo linkato quel thread specificando chiaramente un "vedi mio post #8". Quelle parti di codice con gli Offset e gli And "a cascata", che hai citato qui, non le hai prese da me.

Quote:
Originariamente inviato da radeon_snorky Guarda i messaggi
ho acquistato un libro "pocket" che parla di vba per excel... ma è spiegato male! o sarò io di coccio?!!?!?
Sì, della serie "for dummies", "tutto in 5 minuti", "mentre stai sul cesso" ecc ...
Non sei tu di coccio, sono quei manuali lì che vanno evitati.
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 26-08-2009, 00:10   #14
radeon_snorky
Senior Member
 
Iscritto dal: Mar 2003
Messaggi: 1951
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Beh, io ti avevo linkato quel thread specificando chiaramente un "vedi mio post #8". Quelle parti di codice con gli Offset e gli And "a cascata", che hai citato qui, non le hai prese da me.



Sì, della serie "for dummies", "tutto in 5 minuti", "mentre stai sul cesso" ecc ...
Non sei tu di coccio, sono quei manuali lì che vanno evitati.
se ce ne fosse uno della serie "mentre dormi" sarebbe mio!!!

ho ripreso la gestazione, fila che è un piacere... saranno state le ferie!??!?!

EDIT:
ho modificato "MsgBox indiceNuovaRiga" per adattarlo meglio al contesto, altrimenti era un messaggio con poco senso pratico

curiosità: come posso evitare l'avviso di protezione all'avvio del file? naturalmente senza compromettere la sicurezza, considerando che in ufficio girano file provenienti da ogni dove non vorrei disattivare completamente il controllo...

ora non mi resta che vedere cosa ne pensano in ufficio e pensare alle ultime 2 "cosucce"... avvisi scadenze e stampa... quindi sono ancora lontano dalla conclusione, eh?

Ultima modifica di radeon_snorky : 26-08-2009 alle 12:39.
radeon_snorky è offline   Rispondi citando il messaggio o parte di esso
Old 27-08-2009, 09:34   #15
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3208
Quote:
Originariamente inviato da radeon_snorky Guarda i messaggi
curiosità: come posso evitare l'avviso di protezione all'avvio del file? naturalmente senza compromettere la sicurezza, considerando che in ufficio girano file provenienti da ogni dove non vorrei disattivare completamente il controllo...
Ha poco senso. Quella è un'impostazione di Excel, non della tua applicazione. Prendi il file, spostalo su un altro Pc che ha altre impostazioni sulla protezione macro e deciderà lui se ammetterle o bloccarle... In ogni caso io imposto sempre su "Medio", ossia lascio che l'utente decida di bloccare o meno il codice VBA. Ovviamente quando distribuisco ad altri utenti faccio un minimo di documentazione in cui spiego che se vogliono usare il mio programma devono consentire l'esecuzione...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 27-08-2009, 10:52   #16
radeon_snorky
Senior Member
 
Iscritto dal: Mar 2003
Messaggi: 1951
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Ha poco senso. Quella è un'impostazione di Excel, non della tua applicazione. Prendi il file, spostalo su un altro Pc che ha altre impostazioni sulla protezione macro e deciderà lui se ammetterle o bloccarle... In ogni caso io imposto sempre su "Medio", ossia lascio che l'utente decida di bloccare o meno il codice VBA. Ovviamente quando distribuisco ad altri utenti faccio un minimo di documentazione in cui spiego che se vogliono usare il mio programma devono consentire l'esecuzione...
giustamente... era solo per chiedere...

ieri sera ho fatto vedere il "programma" in ufficio, mi hanno chiesto delle modifiche e delle "semplificazioni" appena ho un secondo ti posto il codice e un paio di screen, così, SE TI SCONFINFERA L'IDEA di aiutarmi (più di quanto tu non stia già facendo....) diciamo per consigliarmi su come procedere all'ottimizzazione del tutto

grazie!
radeon_snorky è offline   Rispondi citando il messaggio o parte di esso
Old 31-08-2009, 08:26   #17
radeon_snorky
Senior Member
 
Iscritto dal: Mar 2003
Messaggi: 1951
lo screen:
http://www.hwupgrade.it/forum/attach...1&d=1251703051

dovrei ottimizzare tutto questo e procedere con ricerca e stampa...

codice inserimento pratica:
Codice:
Private indiceNuovaRiga As Long
Private Sub UserForm_Initialize()

Dim sh As Worksheet
    Dim lng1 As Long
    Dim lUltRiga1 As Long
    Set sh = Worksheets("tecnico")
    With sh
        lUltRiga1 = .Range("A" & _
            Rows.Count).End(xlUp).Row
        For lng1 = 2 To lUltRiga1
            Me.ComboBox3.AddItem (.Cells(lng1, 1).Value)
        Next
    End With
    Set sh = Nothing
    Dim lng2 As Long
    Dim lUltRiga2 As Long
    Set sh = Worksheets("committente")
    With sh
        lUltRiga2 = .Range("A" & _
            Rows.Count).End(xlUp).Row
        For lng2 = 2 To lUltRiga2
            Me.ComboBox1.AddItem (.Cells(lng2, 1).Value)
        Next
    End With
    Set sh = Nothing
    Dim lng3 As Long
    Dim lUltRiga3 As Long
    Set sh = Worksheets("proprietà")
    With sh
        lUltRiga3 = .Range("A" & _
            Rows.Count).End(xlUp).Row
        For lng3 = 2 To lUltRiga3
            Me.ComboBox4.AddItem (.Cells(lng3, 1).Value)
        Next
    End With
    Set sh = Nothing

Dim anno As String
    anno = Range("A1").Text
indiceNuovaRiga = 3
    Do
        If Range("A" & indiceNuovaRiga & ":E" & indiceNuovaRiga).Text = "" Then
            Exit Do
        Else
            indiceNuovaRiga = indiceNuovaRiga + 1
        End If
    Loop
    MsgBox "la pratica che stai per inserire è la n° " & indiceNuovaRiga - 3 & " del 20" & anno

    Dim numPratica As String
    numPratica = Format(indiceNuovaRiga - 3, "000")
    Dim codiceNuovaPratica As String
    codiceNuovaPratica = numPratica & "/" & anno
    numero.Caption = codiceNuovaPratica
cmd_inserisci.Enabled = True
End Sub
Private Sub cmd_inserisci_Click()

    Dim anno As String
    anno = Range("A1").Text
    Dim numPratica As String
    numPratica = Format(indiceNuovaRiga - 3, "000")
    Dim codiceNuovaPratica As String
    codiceNuovaPratica = numPratica & "/" & anno
If TextBox1.Value = "" Or ComboBox2.Text = "" Then
MsgBox "devi compilare correttamente la pratica!"
Exit Sub
End If

    Sheets("pratiche").Range("A" & indiceNuovaRiga).FormulaR1C1 = codiceNuovaPratica
    Sheets("pratiche").Range("B" & indiceNuovaRiga).FormulaR1C1 = TextBox1.Text
    Sheets("pratiche").Range("C" & indiceNuovaRiga).FormulaR1C1 = ComboBox1.Text
    Sheets("pratiche").Range("D" & indiceNuovaRiga).FormulaR1C1 = ComboBox4.Text
    Sheets("pratiche").Range("E" & indiceNuovaRiga).FormulaR1C1 = TextBox3.Text
    Sheets("pratiche").Range("F" & indiceNuovaRiga).FormulaR1C1 = TextBox4.Text
    Sheets("pratiche").Range("G" & indiceNuovaRiga).FormulaR1C1 = TextBox5.Text
    Sheets("pratiche").Range("H" & indiceNuovaRiga).FormulaR1C1 = ComboBox2.Text
    Sheets("pratiche").Range("I" & indiceNuovaRiga).FormulaR1C1 = ComboBox3.Text
    Sheets("pratiche").Range("J" & indiceNuovaRiga).FormulaR1C1 = TextBox6.Text
    Sheets("pratiche").Range("K" & indiceNuovaRiga).FormulaR1C1 = TextBox7.Text
    Sheets("pratiche").Range("L" & indiceNuovaRiga).FormulaR1C1 = TextBox8.Text
    Sheets("pratiche").Range("M" & indiceNuovaRiga).FormulaR1C1 = TextBox9.Text
    Sheets("pratiche").Range("N" & indiceNuovaRiga).FormulaR1C1 = TextBox10.Text
    Sheets("pratiche").Range("O" & indiceNuovaRiga).FormulaR1C1 = TextBox11.Text
    Sheets("pratiche").Range("P" & indiceNuovaRiga).FormulaR1C1 = TextBox12.Text
    Sheets("pratiche").Range("Q" & indiceNuovaRiga).FormulaR1C1 = TextBox13.Text
    Sheets("pratiche").Range("R" & indiceNuovaRiga).FormulaR1C1 = TextBox14.Text
    
    If indiceNuovaRiga = 65536 Then
        MsgBox "Impossibile inserire. Limite max. raggiunto"
        cmd_inserisci.Enabled = False
    Else
        indiceNuovaRiga = indiceNuovaRiga + 1
    End If
    numero.Caption = "---/--"
    cmd_inserisci.Enabled = False
End Sub
Private Sub dataoggi_Click()
 TextBox1.Value = Format(Now(), "dd mm yyyy")
     
End Sub
Private Sub ClearBtn_Click()
Unload Me
Load moduloprat
moduloprat.Show
End Sub
Private Sub ExitBtn_Click()
Unload Me
End Sub
codice editor pratica:
Codice:
Private indiceRiga As Long
Dim codprat As String
Private Sub UserForm_Initialize()
codprat = InputBox("Numero pratica da modificare:")
If codprat <> "" Then
MsgBox "selezionata pratica " & codprat
Else
MsgBox "errore, inserisci numero pratica correttamente"
Unload editform
Exit Sub
End If
indiceRiga = codprat + 3
codprat = Format(codprat, "000")
numero.Caption = codprat & "/" & Range("A1").Text
TextBox1.Text = Sheets("pratiche").Range("B" & indiceRiga).FormulaR1C1
ComboBox1.Text = Sheets("pratiche").Range("C" & indiceRiga).FormulaR1C1
ComboBox4.Text = Sheets("pratiche").Range("D" & indiceRiga).FormulaR1C1
TextBox3.Text = Sheets("pratiche").Range("E" & indiceRiga).FormulaR1C1
TextBox4.Text = Sheets("pratiche").Range("F" & indiceRiga).FormulaR1C1
TextBox5.Text = Sheets("pratiche").Range("G" & indiceRiga).FormulaR1C1
ComboBox2.Text = Sheets("pratiche").Range("H" & indiceRiga).FormulaR1C1
ComboBox3.Text = Sheets("pratiche").Range("I" & indiceRiga).FormulaR1C1
TextBox6.Text = Sheets("pratiche").Range("J" & indiceRiga).FormulaR1C1
TextBox7.Text = Sheets("pratiche").Range("K" & indiceRiga).FormulaR1C1
TextBox8.Text = Sheets("pratiche").Range("L" & indiceRiga).FormulaR1C1
TextBox9.Text = Sheets("pratiche").Range("M" & indiceRiga).FormulaR1C1
TextBox10.Text = Sheets("pratiche").Range("N" & indiceRiga).FormulaR1C1
TextBox11.Text = Sheets("pratiche").Range("O" & indiceRiga).FormulaR1C1
TextBox12.Text = Sheets("pratiche").Range("P" & indiceRiga).FormulaR1C1
TextBox13.Text = Sheets("pratiche").Range("Q" & indiceRiga).FormulaR1C1
TextBox14.Text = Sheets("pratiche").Range("R" & indiceRiga).FormulaR1C1
MsgBox "pratica importata correttamente"
End Sub
Private Sub cmd_inserisci_Click()
    Sheets("pratiche").Range("A" & indiceRiga).FormulaR1C1 = numero.Caption
    Sheets("pratiche").Range("B" & indiceRiga).FormulaR1C1 = TextBox1.Text
    Sheets("pratiche").Range("C" & indiceRiga).FormulaR1C1 = ComboBox1.Text
    Sheets("pratiche").Range("D" & indiceRiga).FormulaR1C1 = ComboBox4.Text
    Sheets("pratiche").Range("E" & indiceRiga).FormulaR1C1 = TextBox3.Text
    Sheets("pratiche").Range("F" & indiceRiga).FormulaR1C1 = TextBox4.Text
    Sheets("pratiche").Range("G" & indiceRiga).FormulaR1C1 = TextBox5.Text
    Sheets("pratiche").Range("H" & indiceRiga).FormulaR1C1 = ComboBox2.Text
    Sheets("pratiche").Range("I" & indiceRiga).FormulaR1C1 = ComboBox3.Text
    Sheets("pratiche").Range("J" & indiceRiga).FormulaR1C1 = TextBox6.Text
    Sheets("pratiche").Range("K" & indiceRiga).FormulaR1C1 = TextBox7.Text
    Sheets("pratiche").Range("L" & indiceRiga).FormulaR1C1 = TextBox8.Text
    Sheets("pratiche").Range("M" & indiceRiga).FormulaR1C1 = TextBox9.Text
    Sheets("pratiche").Range("N" & indiceRiga).FormulaR1C1 = TextBox10.Text
    Sheets("pratiche").Range("O" & indiceRiga).FormulaR1C1 = TextBox11.Text
    Sheets("pratiche").Range("P" & indiceRiga).FormulaR1C1 = TextBox12.Text
    Sheets("pratiche").Range("Q" & indiceRiga).FormulaR1C1 = TextBox13.Text
    Sheets("pratiche").Range("R" & indiceRiga).FormulaR1C1 = TextBox14.Text
MsgBox "aggiornamento pratica completato"
Unload Me
End Sub
Private Sub ExitBtn_Click()
Unload Me
End Sub
codice ricerca pratiche: (c'è solo il riempimento delle combobox.. devo ancora pensare a cosa metterci)
Codice:
Private Sub UserForm_Initialize()

Dim sh As Worksheet
    Dim lng1 As Long
    Dim lUltRiga1 As Long
    Set sh = Worksheets("tecnico")
    With sh
        lUltRiga1 = .Range("A" & _
            Rows.Count).End(xlUp).Row
        For lng1 = 2 To lUltRiga1
            Me.ComboBox3.AddItem (.Cells(lng1, 1).Value)
        Next
    End With
    Set sh = Nothing
    Dim lng2 As Long
    Dim lUltRiga2 As Long
    Set sh = Worksheets("committente")
    With sh
        lUltRiga2 = .Range("A" & _
            Rows.Count).End(xlUp).Row
        For lng2 = 2 To lUltRiga2
            Me.ComboBox1.AddItem (.Cells(lng2, 1).Value)
        Next
    End With
    Set sh = Nothing
    Dim lng3 As Long
    Dim lUltRiga3 As Long
    Set sh = Worksheets("proprietà")
    With sh
        lUltRiga3 = .Range("A" & _
            Rows.Count).End(xlUp).Row
        For lng3 = 2 To lUltRiga3
            Me.ComboBox4.AddItem (.Cells(lng3, 1).Value)
        Next
    End With
    Set sh = Nothing
End Sub
Private Sub dataoggi_Click()
 TextBox1.Value = Format(Now(), "dd mm yyyy")
     
End Sub
Private Sub ClearBtn_Click()
Unload Me
Load searchform
searchform.Show
End Sub
Private Sub ExitBtn_Click()
Unload Me
End Sub
ci sono un paio di errori sulla gestione degli errori (ehehhe) visto che se cerco un numero pratica non numerico mi da un errore... e se cerco un valore più alto di quelli presenti me lo inserisce sulla form ma, naturalmente, trova tutti i campi vuoti, così ho aggiunto un if... sulle celle importanti che, se vuote, mi esce dalla sub... corretto o c'è di meglio per il controllo? tipo verificare da subito se il risultato della inputbox è minore di "indicenuovariga-n" o non numerico???



consigli?


EDIT
scrivo qui per non dimenticarlo... mi hanno fatto notare che la numerazione della pratica così com'è... aumenta di numero continuamente senza azzerarsi al cambio anno! urge soluzione! mumble mumble!
Immagini allegate
File Type: png excel2.png (22.9 KB, 6 visite)

Ultima modifica di radeon_snorky : 31-08-2009 alle 11:53.
radeon_snorky è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


OnePlus Pad Go: un tablet economico perfetto per l'intrattenimento. La recensione OnePlus Pad Go: un tablet economico perfetto per...
Per Huawei l’IA è una questione di storage. Presentate soluzioni dedicate e un SSD da 128 TB Per Huawei l’IA è una questione di storag...
Recensione Google Pixel Tablet: in ritardo ma un ottimo primo passo! Recensione Google Pixel Tablet: in ritardo ma un...
ASUS ProArt PA32UCXR: 4K, Quantum Dot e Mini-LED i per professionisti dell'immagine ASUS ProArt PA32UCXR: 4K, Quantum Dot e Mini-LED...
HUAWEI WATCH FIT 3: lo smartwatch che ridefinisce design e fitness! Recensione HUAWEI WATCH FIT 3: lo smartwatch che ridefinisc...
Classic Marathon: lo storico FPS di Bung...
Non solo TV per TCL: accanto al QD-MiniL...
Red Hat OpenShift è ora disponibi...
Stellantis, al via test sulle batterie a...
NVIDIA: la GeForce RTX 5080 sarà ...
Roscosmos potrebbe lanciare due sonde sp...
FRITZ!Repeater 3000 AX in offerta: oggi ...
ASUS: prodotti in garanzia, ma ricevono ...
Electronic Arts sta lavorando sulla pubb...
Alpine Alpenglow, bolide da 340 cavalli ...
Tiscali lancia il suo 5G: 200GB di traff...
Microsoft Work Trend Index: 3 italiani s...
iPhone 16 Pro, il display potrebbe esser...
Speciale droni in offerta: DJI Mini 2 SE...
USA, guerra alle elettriche cinesi: Bide...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 02:50.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Served by www3v