› Sviluppare funzionalita su Microsoft Office con VBA › "Aggiorna" aggiunge l'aggiornamento nella riga sotto.
-
AutoreArticoli
-
Ciao tutti!
Ho creato u form per inserimento ed aggiornamento di un database, e mi sono incappato in un ostacolo che non riesco a capire, perché non sono capace, perché accade. con il commando "cerca" vado ad intercettare un "record", e fin qui va bene, forse. quando eseguo una modifica e vado ad "aggiorna", mi copia il record nella riga di sotto, aggiornato. ed io, nel codice, non riesco a capire un commando che faccia scendere giù. Ecco il codice dell'aggiornamento.
Private Sub CommandButton4_Click() '' AGGIORNA Dim C_N As String Dim cf As String Dim cognome As String Dim Nome As String Dim ddn As Variant Dim età As Long cf = TxCf.Text Cells(currentrow, 2).Value = TxCf.Text cognome = txCog.Text Cells(currentrow, 3).Value = txCog.Text Nome = txNom.Text Cells(currentrow, 4).Value = txNom.Text ddn = txDdn.Text Cells(currentrow, 5).Value = txDdn.Text ''età = TxEta.Text ' Cells(currentrow, 6).Value = TxEta.Text Cells(currentrow, 1).Value = Cells(currentrow, 3) & ", " & Cells(currentrow, 4) & ", " & Left(Cells(currentrow, 5), 2) & ", " & Mid(Cells(currentrow, 5), 4, 2) & ", " & Right(Cells(currentrow, 5), 4) C_N_DDN_search.Text = Cells(currentrow, 1).Value Cells(currentrow, 17).Value = txCog.Text & ", " & txNom.Text Label181 = Cells(currentrow, 17).Value '' AGGIORNA End SubQuesto, invece, è il codice di ricerca.
Private Sub BUT_CERCA_Click() Dim UltimaR As Long UltimaR = Sheets("TAB").Range("A" & Rows.Count).End(xlUp).Row C_N_DDN_search = C_N_DDN_search.Text For currentrow = 2 To UltimaR If Cells(currentrow, 1).Text = C_N_DDN_search Then C_N_DDN_search.Text = Cells(currentrow, 1).Value TxCf.Text = Cells(currentrow, 2).Value txCog.Text = Cells(currentrow, 3).Value txNom.Text = Cells(currentrow, 4).Value txDdn.Text = Cells(currentrow, 5).Value TxEta.Text = Cells(currentrow, 6).Value End If 'Next currentrow ' C_N_DDN_search.SetFocus End Suba dire la verità, il comando cerca è stato preso da un altro form, un pulsante che prevedeva la ricerca in avanti per più omonimi, ed un altro pulsante ricerca indietro. La funzione che ho inserito dovrebbe escludere gli omonimi, c_n_ddn sta per cohnome_nome_data di nascita. forse la "tendenza in avanti" del comando è quella che mi frega, ma non saprei se è quella e come "frenarlo". grazie per l'aiuto, e buona giornata.
Errata corrige:
nell'ultimo post, nel codice in allegato, la penultima riga contenente la stringa "Next currentrow" è "scommentata", nell'originale, quindi in funzione, era rimasta "commentata" durante i tentativi vari.
Addirittura, ho "scoperto", che quando inserisco un nuovo record, che viene eseguito correttamente, se premo "aggiorna", viene aggiornato il primo record, cioè inserito il nuovo record nella prima riga, oltre che nella prima riga vuota.
nell'originale, quindi in funzione, era rimasta "commentata" durante i tentativi vari
Aggiungo anche di prestare attenzione all'indentazione del codice, così risulta più leggibile anche a te, e troveresti più facilmente errori come questo (a parte che il compilatore dovrebbe segnalare la situazione del For senza Next).
La funzione che ho inserito dovrebbe escludere gli omonimi,
Ci sono altri sistemi (con Find metodo di un oggetto Range, per esempio).La ricerca in avanti avviene chiaramente a causa del ciclo For.
Comunque mi par di capire che il tuo problema è impostare l'a prima riga utile della base dati dove andare a scrivere il dato aggiornato... in questo caso, guarda come hai confezionato "UltimaR" nel codice del pulsante di ricerca. In pratica ti serve proprio questo prima della scrittura del dato aggiornato.
-
AutoreArticoli
