Per poter porre un quesito è invece necessario essere un utente registrato (clicca qui se non lo sei).
Tutti gli utenti che richiedono un supporto, come da REGOLAMENTO, sono caldamente invitati ad allegare un file di esempio con l'indicazione di quello che si desidera ottenere.
Modifica dati da userform a foglio excel con data (da/a)
come saprai o ti hanno detto in altre occasioni, rivedere un progetto complesso come il tuo già in fase avanzata e senza conoscere i criteri delle lavorazioni/elaborazioni che deve effettuare, è particolarmente difficoltoso anche perchè ognuno ha il proprio stile e criteri di stesura del codice necessario.
Ovviamente non ho intenzione di rifartelo da capo....
ma ti sottopongo alcuni dubbi...
'qui setti la varibile ws come "Calendario_visita"
Set ws = ThisWorkbook.Sheets("Calendario_visita")
'qui il foglio definito ws, lo richiami con il suo nome originale.... e comunque non credo che l'istruzione funzioni
Foglio8.Activate
'================================================================================
avviso = MsgBox("Sei sicuro di voler MODIFICARE la visita?", vbYesNo + vbQuestion, "Avviso")
If avviso = vbNo Then
'=====================================================================
' qui lo capisco ancora meno.... se non voglio MODIFICARE la visita cliccando NO sul messaggio,
' io i dati li manterrei...
' invece tu vuoi pulire il Form.... bah....
Call Cmb_cancella_Click
Exit Sub
End If
come saprai o ti hanno detto in altre occasioni, rivedere un progetto complesso come il tuo già in fase avanzata e senza conoscere i criteri delle lavorazioni/elaborazioni che deve effettuare, è particolarmente difficoltoso anche perchè ognuno ha il proprio stile e criteri di stesura del codice necessario.
Ovviamente non ho intenzione di rifartelo da capo....
ma ti sottopongo alcuni dubbi...
'qui setti la varibile ws come "Calendario_visita"Set ws = ThisWorkbook.Sheets("Calendario_visita")
'qui il foglio definito ws, lo richiami con il suo nome originale.... e comunque non credo che l'istruzione funzioni
Foglio8.Activate
'================================================================================
avviso = MsgBox("Sei sicuro di voler MODIFICARE la visita?", vbYesNo + vbQuestion, "Avviso")
If avviso = vbNo Then'=====================================================================' qui lo capisco ancora meno.... se non voglio MODIFICARE la visita cliccando NO sul messaggio,' io i dati li manterrei...' invece tu vuoi pulire il Form.... bah....Call Cmb_cancella_Click
ExitSubEndIf
Private Sub Cmb_conferma_Click()
Dim ur As Integer
Dim avviso As String
Dim startDate As Date
Dim endDate As Date
Dim currentDate As Date
Dim ws As Worksheet
Dim lastRow As Long, i As Long
startDate = DateSerial(CInt(Cbo_Anno.Value), Cbo_Mese1.ListIndex + 1, CInt(Cbo_giorno_da.Value))
endDate = DateSerial(CInt(Cbo_Anno.Value), Cbo_Mese3.ListIndex + 1, CInt(Cbo_giorno_a.Value))
Set ws = ThisWorkbook.Sheets("Calendario_visita")
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
If Cbo_Anno = "" Then
MsgBox "Attenzione l'anno", vbExclamation, "AVVISO"
Cbo_Anno.SetFocus
Exit Sub
ElseIf Cbo_Mese = "" Then
MsgBox "Attenzione inserire il mese", vbExclamation, "AVVISO"
Cbo_Mese.SetFocus
Exit Sub
ElseIf Cbo_Mese2 = "" Then
MsgBox "Attenzione inserire il mese", vbExclamation, "AVVISO"
Cbo_Mese.SetFocus
Exit Sub
ElseIf Cbo_giorno_da = "" Then
MsgBox "Attenzione inserire il giorno", vbExclamation, "AVVISO"
Cbo_giorno_da.SetFocus
Exit Sub
ElseIf Cbo_giorno_a = "" Then
MsgBox "Attenzione inserire il giorno", vbExclamation, "AVVISO"
Cbo_giorno_a.SetFocus
Exit Sub
ElseIf Txtpromoter = "" Then
MsgBox "Attenzione inserire il promoter", vbExclamation, "AVVISO"
Txtpromoter.SetFocus
Exit Sub
ElseIf Txtarea_manager = "" Then
MsgBox "Attenzione inserire l'area manager", vbExclamation, "AVVISO"
Txtarea_manager.SetFocus
Exit Sub
ElseIf Txtagente = "" Then
MsgBox "Attenzione inserire l'agente", vbExclamation, "AVVISO"
Txtagente.SetFocus
Exit Sub
ElseIf Cbo_Clienti = "" Then
MsgBox "Attenzione inserire il cliente", vbExclamation, "AVVISO"
Cbo_Clienti.SetFocus
Exit Sub
End If
avviso = MsgBox("Sei sicuro di voler MODIFICARE la visita?", vbYesNo + vbQuestion, "Avviso")
If avviso = vbNo Then
Exit Sub
Else
For i = 2 To lastRow
If IsNumeric(ws.Cells(i, 5).Value) And IsNumeric(ws.Cells(i, 6).Value) And IsNumeric(ws.Cells(i, 7).Value) Then
On Error Resume Next
currentDate = DateSerial(ws.Cells(i, 5).Value, ws.Cells(i, 6).Value, ws.Cells(i, 7).Value)
If Err.Number <> 0 Then
MsgBox "Errore nella conversione della data alla riga " & i & ". Controlla i valori delle celle per l'anno, mese e giorno.", vbExclamation
Err.Clear
ElseIf currentDate >= startDate And currentDate <= endDate Then
ws.Cells(i, 1).Value = Cbo_Clienti
ws.Cells(i, 2).Value = Txtcodice_cliente
ws.Cells(i, 3).Value = Txtpromoter
ws.Cells(i, 4).Value = Txtarea_manager
ws.Cells(i, 5).Value = Txtagente
ws.Cells(i, 8).Value = Txtnota
End If
Else
MsgBox "Errore nei dati della riga " & i & ". Controlla i valori delle celle per l'anno, mese e giorno.", vbExclamation
End If
lastRow = lastRow + 1
Next i
End If
MsgBox "Dati aggiornati con successo."
With Foglio8.ListObjects("Calendario_visita_clienti").AutoFilter
If .FilterMode Then
.ShowAllData
End If
End With
With Foglio2.ListObjects("Clienti_Ita").AutoFilter
If .FilterMode Then
.ShowAllData
End If
End With
ActiveWorkbook.Save
End Sub
Ho modificato il codice ma continua a non modificare il file excel, ora non da più errore per le date.
questo potrebbe accorciare il codice per verificare se le combo sono validate
'============================================
' abbrevia il codice e migliora la leggibilità
Dim ctr As control
For Each ctr In Me.Controls
If Left(ctr.Name, 3) = "Cbo" Then
If ctr = "" Then
MsgBox "Attenzione validare la combobox", vbExclamation, "AVVISO"
ctr.SetFocus
Exit Sub
End If
End If
Next ctr
'============================================
Questo sito utilizza cookie tecnici e di profilazione. Cliccando su accetta si autorizzano tutti i cookie di profilazione. Cliccando su rifiuta o la X si rifiutano tutti i cookie di profilazione. Cliccando su personalizza è possibile selezionare quali cookie di profilazione attivare.
Google Fonts è un servizio per visualizzare gli stili dei caratteri di scrittura gestito da Google Ireland Limited e serve ad integrare tali contenuti all’interno delle proprie pagine.