problemi con conversione nome mese in numero mese

Anonimo
2024-07-30T09:48:03+00:00

Buongiorno a tutti e grazie in anticipo,

devo inserire su un foglio è excel una serie di informazioni derivanti da diverse combobox e texbox, va tutto bene però non mi trasforma il nome del mese visualizzato sulla combobox in numero che dovrà essere inserito sul file excel. Vi faccio un esempio:

se sulla combobox Cbo_Mese è visualizzato il mese di luglio sul file excel alla colonna F dovrà esserci scritto 7

Grazie

Private Sub Cmb_inserisci_Click()

Dim ur As Integer

Dim startDate As Date

Dim endDate As Date

Dim currentDate As Date

Dim ws As Worksheet

Dim selectedMonth As String

Dim monthNumber As Integer

Dim lastRow As Long

Dim nextRow As Long

Dim i As Integer

Dim dayStart As Integer, dayEnd As Integer

Foglio8.Activate

Set ws = ThisWorkbook.Sheets("Calendario_visita")

dayStart = CInt(Cbo_giorno_da.Value)

dayEnd = CInt(Cbo_giorno_a.Value)

startDate = DateSerial(CInt(Cbo_Anno.Value), MonthNumberFromName(Cbo_Mese.Value), dayStart)

endDate = DateSerial(CInt(Cbo_Anno.Value), MonthNumberFromName(Cbo_Mese2.Value), dayEnd)

nextRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1

currentDate = startDate

Do While currentDate <= endDate

    ws.Cells(nextRow, 1).Value = Cbo\_Clienti.Value 

    ws.Cells(nextRow, 2).Value = Txtagente.Value 

    ws.Cells(nextRow, 3).Value = Txtpromoter.Value 

    ws.Cells(nextRow, 4).Value = Txtarea\_manager.Value 

    ws.Cells(nextRow, 5).Value = Cbo\_Anno.Value 

    ws.Cells(nextRow, 6).Value = monthName(Month(currentDate)) 

    ws.Cells(nextRow, 7).Value = Day(currentDate) 

    ws.Cells(nextRow, 8).Value = Txtcodice\_cliente.Value 

    ws.Cells(nextRow, 9).Value = Txtnota.Value 

    currentDate = currentDate + 1 

    nextRow = nextRow + 1 

Loop 

MsgBox "Dati inseriti con successo!" 

End sub

Function MonthNumberFromName(monthName As String) As Integer

Dim monthNames As Variant 

monthNames = Array("gennaio", "febbraio", "marzo", "aprile", "maggio", "giugno", \_ 

                   "luglio", "agosto", "settembre", "ottobre", "novembre", "dicembre") 

Dim i As Integer 

For i = LBound(monthNames) To UBound(monthNames) 

    If StrComp(monthNames(i), monthName, vbTextCompare) = 0 Then 

        MonthNumberFromName = i + 1 

        Exit Function 

    End If 

Next i 

MonthNumberFromName = 0 

End Function

Microsoft 365 e Office | Excel | Per il lavoro | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

7 risposte

Ordina per: Più utili
  1. Eleuterio Tedeschi 18,750 Punti di reputazione Moderatore volontario
    2024-07-30T11:55:39+00:00

    ho messo il codice, ma mi dà errore "errore di compilazione - Argomento non facoltativo" sul primo monthName

    Stavo dando troppe cose per scontato, pensavo fossi in grado di interpretare le indicazioni e purtroppo avevo associato MonthName ad una variabile, per cui usando la tua funzione e portando la dichiarazione e valorizzazione dei mesi in testa al codice:

    Dim monthNames ' la dichiarazione di tipo Variant è implicita per cui non serve 
    
    monthNames = Array("gennaio","febbraio","marzo","aprile","maggio","giugno","luglio","agosto","settembre","ottobre","novembre","dicembre")
    
    ws.Cells(nextRow, 6).Value = Application.Match(monthName(Month(currentDate)), monthNames, 0)
    

    La risposta è stata utile?

    2 persone hanno trovato utile questa risposta.
    0 commenti Nessun commento
  2. Eleuterio Tedeschi 18,750 Punti di reputazione Moderatore volontario
    2024-07-30T14:35:47+00:00

    ciao Eleuterio

    scusami ma non basta

    = (Month(Date)) per avere il numero del mese?

    = MonthName(Month(Date)) per avere il mese in lettere

    Assolutamente si, mi sono fatto prendere dall'entusiasmo vista la udf creata, grazie per l'intervento😊

    Ciao.

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  3. Eleuterio Tedeschi 18,750 Punti di reputazione Moderatore volontario
    2024-07-30T10:27:38+00:00

    dove inserisco la stringa?

    e scrivi:

    se sulla combobox Cbo_Mese è visualizzato il mese di luglio sul file excel alla colonna F dovrà esserci scritto 7

    devi farlo qui:

    ws.Cells(nextRow, 6).Value = Application.Match(monthName, monthNames, 0)
    

    Ma il codice sopra chi l'ha scritto?

    Ciao.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2024-07-30T10:07:58+00:00

    Sfrutta le funzioni native, visto che hai creato un array con i nomi:

    Application.Match(monthName, monthNames, 0)
    

    Ciao.

    Ciao e grazie

    dove inserisco la stringa

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Eleuterio Tedeschi 18,750 Punti di reputazione Moderatore volontario
    2024-07-30T10:03:01+00:00

    Sfrutta le funzioni native, visto che hai creato un array con i nomi:

    Application.Match(monthName, monthNames, 0)
    

    Ciao.

    La risposta è stata utile?

    0 commenti Nessun commento