Inserire solo determinate dati
Hai un problema con Excel? 
Inserire solo determinate dati
di maxmi (utente non iscritto) data: 18/10/2013 10:40:57
Ciao a tutti
chiedo il vostro aiuto.
Con il codice qui sotto, attraverso delle textbox
Inserisco dati su un foglio.
Chiedevo se è possibile programmare la textbox7
perché accetti solo un determinato testo/numeri.
Mi spiego meglio,
vorrei che la textbox7 si potesse scrivere solo
in questo modo.
La prima parola sarà sempre Sfuso,
la seconda sarà un numero a una cifra o due cifre
poi il numero sarà seguito da un punto, e una S
e per ultima parola Pallet
praticamente questo:
Sfuso 17.S Pallet, l’unica cosa che cambierà saranno i numeri
che potrebbero essere (14.S - 15.S - 9.S ecc)
Grazie
Private Sub CommandButton1_Click()
Dim x As Integer 'indice per lettura textbox
Dim UltimaRiga As Long 'ultima riga utilizzata sul foglio
Dim ultA As Long
For x = 1 To 6
'SALTO IL CONTROLLO DELLA TEXTBOX5
If x = 5 Then x = 6
If Me.Controls("TextBox" & x) = "" Then
MsgBox "ATTENZIONE! Mancano i dati, Controllare", , "Controllo Dati"
Me.Controls("TextBox" & x).SetFocus
Exit Sub
End If
Next x
With Worksheets("Foglio1")
'SE LA TABELLA è VUOTA
If .Range("A3").Value = "" Then
'FORMATTO LA RIGA
With .Range("A3:I3")
.Font.Name = "MetaNormal-Roman"
.Font.Size = 16
.Font.ColorIndex = 3
.Borders.LineStyle = xlContinuous
End With
'INSERISCO I VALORI IN MAIUSCOLO
.Range("A" & UltimaRiga + 1).Value = UCase(Me.TextBox1.Value) 'TextBox1
.Range("C" & UltimaRiga + 1).Value = Me.TextBox2.Value 'TextBox2
.Range("F" & UltimaRiga + 1).Value = UCase(Me.TextBox3.Value) 'TextBox3
.Range("F" & UltimaRiga + 1).Font.Bold = True
.Range("G" & UltimaRiga + 1).Value = UCase(Me.TextBox4.Value) 'TextBox4
.Range("H" & UltimaRiga + 1).Value = UCase(Me.TextBox5.Value) 'TextBox5
.Range("I" & UltimaRiga + 1).Value = UCase(Me.TextBox6.Value) 'TextBox6
.Range("I" & UltimaRiga + 1).Font.Bold = True
.Range("B" & UltimaRiga + 1).Value = UCase(Me.TextBox7.Value) 'Textbox7
'INSERISCO LA STRINGA E LA FORMATTO
With .Range("A6")
.Value = "ULTIMO AGGIORNAMENTO: " & Date & " - " & UCase(Me.TextBox1.Value)
.Font.Name = "MetaNormal-Roman"
.Font.Size = 16
End With
'SE LA TABELLA è GIà COMPILATA
Else
UltimaRiga = .Range("A1").End(xlDown).Row
'TOLGO IL ROSSO DALL'ULTIMO INSERIMENTO
.Range("A3:I" & UltimaRiga).Font.ColorIndex = 1
'CANCELLO L'ULTIMA STRINGA INSERITA
ultA = .Range("A" & Rows.Count).End(xlUp).Row
.Range("A" & ultA).ClearContents
'FORMATTO LA RIGA
With .Range("A" & UltimaRiga + 1, "I" & UltimaRiga + 1)
.Font.Name = "MetaNormal-Roman"
.Font.Size = 12
.Font.ColorIndex = 3
.Borders.LineStyle = xlContinuous
End With
'INSERISCO I VALORI IN MAIUSCOLO
.Range("A" & UltimaRiga + 1).Value = UCase(Me.TextBox1.Value) 'TextBox1
.Range("C" & UltimaRiga + 1).Value = Me.TextBox2.Value 'TextBox2
.Range("F" & UltimaRiga + 1).Value = UCase(Me.TextBox3.Value) 'TextBox3
.Range("F" & UltimaRiga + 1).Font.Bold = True
.Range("G" & UltimaRiga + 1).Value = UCase(Me.TextBox4.Value) 'TextBox4
.Range("H" & UltimaRiga + 1).Value = UCase(Me.TextBox5.Value) 'TextBox5
.Range("I" & UltimaRiga + 1).Value = UCase(Me.TextBox6.Value) 'TextBox6
.Range("I" & UltimaRiga + 1).Font.Bold = True
.Range("B" & UltimaRiga + 1).Value = UCase(Me.TextBox7.Value) 'Textbox7
'INSERISCO LA STRINGA E LA FORMATTO
With .Cells(UltimaRiga + 4, 1)
.Value = "ULTIMO AGGIORNAMENTO: " & Date & " - " & UCase(Me.TextBox1.Value)
.Font.Name = "MetaNormal-Roman"
.Font.Size = 12
End With
End If
'0RDINO LA TABELLA
.Range("A2:I" & UltimaRiga + 1).Sort Key1:=.Range("A3"), _
Order1:=xlAscending, _
Header:=xlGuess, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
.Range("A1").Select
End With
For x = 1 To 6 'Ciclo di cancellazione dati
Me.Controls("TextBox" & x) = ""
Next x
Me.TextBox1.SetFocus 'Ritorna il Cursore sul textbox1
End Sub |
di totygno71 (utente non iscritto) data: 18/10/2013 11:11:57
Scusa la domanda... se il bisogno è scrivere solo quei tre dati preche non utilizzi una combo?
di maxmi (utente non iscritto) data: 18/10/2013 15:45:43
ciao
perchè non ho mai usato le combo
e il vba lo so usare poco
di gaetanopr data: 18/10/2013 22:16:28
Ciao maxmi, non entrando nel merito del codice, una soluzione potrebbe essere la seguente, tu nella textbox inserisci soltanto il valore numerico che verrà concatenato a tutto il resto.
Naturalmente UCase non serve più
.Range("B" & UltimaRiga + 1).Value = "SFUSO " & Me.TextBox7.Value & ".S PALLET" 'Textbox7 |
di maxmi (utente non iscritto) data: 19/10/2013 01:14:17
ciao gaetanopr
si era quello che volevo.
Grazie di cuore
Vuoi Approfondire?