Risolto codice per convertire numeri in formato numerico in userform

ab9pr

Utente junior
5 Novembre 2017
40
8
39
PARMA
2016
0
Buongiorno a tutti,
ho creato un foglio di lavoro in cui dovrò inserire numeri in ogni cella per calcolare attraverso formula una media statistica.
per popolare le celle ho pensato di farlo attraverso una userform in cui ho dovuto inserire un codice vba che convertisse i numeri nella userform in formato numerico nel foglio excel.
L'obiettivo di conversione del formato numerico l'ho raggiunto ma probabilmente ho fatto un po di confusione e mi sono "perso" perchè ora quando clicco il pulsante che memorizza i dati sul foglio e confermo con SI, la msg box che mi chiede conferma continua a visualizzarsi più volte fino a che clicco NO.
allego file di esempio e codice vba,
Grazie a chiunque fosse interessato a darmi un aiuto
Alberto

Visual Basic:
Private Sub CommandButton1_Click()

Dim R As Long
Dim C As Integer
Set rng = Range("k4:cg99")
For R = 1 To rng.Rows.Count
For C = 1 To rng.Columns.Count

Dim Messaggio As String, Stile As String, Titolo As String
Dim Risposta As VbMsgBoxResult

    Titolo = "VOTI"
    Messaggio = "MEMORIZZA VOTI"
    
    Stile = vbYesNo + vbQuestion + vbDefaultButton1
    Risposta = MsgBox(Messaggio, Stile, Titolo)
    If Risposta = vbNo Then End

Cells(4, 11) = TextBox1.Value
Cells(4, 13) = TextBox6.Value

If Trim(rng.Cells(R, C)) <> "" Then
rng.Cells(R, C) = rng.Cells(R, C) * 1
End If
    
Next C
Next R

 Unload Me
End Sub
 

Allegati

Marco Lauria

Utente abituale
2 Gennaio 2017
614
30
55
Roma
www.artigianamaterassi.net
Excel 2016
49
L'errore risiede nel fatto che tu inserisci il msgbox all'interno dei due cicli for
invece lo devi mettere prima.
E poi fuori dai cicli devi mettere anche l'assegnazione delle due celle.
comunque ti posto la tua routine aggiustata del msgbox:

Visual Basic:
Private Sub CommandButton1_Click()
    Dim R As Integer
    Dim C As Integer
    Dim Messaggio As String, Stile As String, Titolo As String
    Dim Risposta As VbMsgBoxResult
    
    Titolo = "VOTI"
    Messaggio = "MEMORIZZA VOTI"
    Stile = vbYesNo + vbQuestion + vbDefaultButton1
    Set Rng = Range("k4:cg99")
    Risposta = MsgBox(Messaggio, vbYesNo, Titolo)
    If Risposta = vbNo Then
        Unload Me
        Exit Sub
    End If
    Cells(4, 11) = TextBox1.Value
    Cells(4, 13) = TextBox6.Value
    For R = 1 To Rng.Rows.Count
        For C = 1 To Rng.Columns.Count
            If Trim(Rng.Cells(R, C)) <> "" Then
                Rng.Cells(R, C) = Rng.Cells(R, C) * 1
            End If
        Next C
    Next R
    Unload Me
End Sub
 

ab9pr

Utente junior
5 Novembre 2017
40
8
39
PARMA
2016
0
Immaginavo fosse un problema del genere ma provando e riprovando non sono comunque riuscito a trovare la soluzione corretta MiInchino
Ti ringrazio e ti auguro buona giornata cappello_saluta
 

Sostieni ForumExcel

Aiutaci a sostenere le spese e a mantenere online la community attraverso una libera donazione!