Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao Claudio,
In un Foglio Excel ho una tabella con nella colonna A un elenco di nominativi ( A2 fino A196 )
Nella colonna B (B2 fino B196 ) devo inserire P (presente) oppure A (assente)
Ho creato una UserForm e pensavo di utilizzare le InputBox
La procedura parte tramite commandButton (cbInizia) che apre l’InputBox nel quale digitare P oppure A
Il dato inserito viene inserito nella cella B2 del Foglio1
Questa la parte di codice che utilizzo
Private Sub cbInizia_Click()
Dim i As Long
Dim wk1 As Workbook
Dim sh1 As Worksheet
Dim Message1, Title1, MyValue1
Set wk1 = ThisWorkbook
Set sh1 = wk1.Worksheets("Foglio1")
10
Message1 = "COGNOME NOME 1:"
Title1 = "APPELLO NOMINATIVI"
MyValue1 = InputBox(Message1, Title1)
If MyValue1 <> "" Then
i = 2
With sh1
Sheets("Foglio1").Cells(2, i).Value = MyValue1
End With
End Sub
Mi sono bloccato perche’ era evidente che con questo sistema avrei dovuto ripetere questa procedura per
196 volte …….!!
Chiedo aiuto per sapere come posso far si che :
Message1 (Cognome Nome ) anziche’ essere digitato nel codice sia caricato direttamente dalla tabella , cioe’ l’InputBox1 all’apertura presenti il Nominativo presente in A1 , l’InputBox2 quello in A2 etc ….fino a A196
Non padroneggio i cicli Nexth For ..... pero' posso impegnarmi , volevo solo un'indicazione e capire se quello che vorrei fare e' fattibile
Vorrei suggerire un approccio diverso!
Quindi, per dimostrarlo, crea una Userform con i seguenti controlli:
- un Listbox denominato lbxNominativi
- un TextBox denominato tbxPresenza
- un CommandButton denominato cbAggiornaRecord
- un CommandButton denominato cbEsci
Nel modulo di codice della Userform, incolla codice del genere:
'=========>>
Option Explicit
Dim SH As Worksheet
Dim Rng As Range
Dim arr As Variant
Private bEvents As Boolean
Private Sub lbxNominativi_Change()
With Me.lbxNominativi
Me.tbxPresenza.Value = .List(.ListIndex, 1)
End With
End Sub
Private Sub tbxPresenza_Change()
With Me.tbxPresenza
.Text = UCase(.Text)
End With
End Sub
'--------->>
Private Sub UserForm_Initialize()
Dim WB As Workbook
Const sFoglio As String = "Foglio1" '<<=== Modifica
Const sTabella As String = "A1:B27" '<<=== Modifica
Set WB = ThisWorkbook
Set SH = WB.Sheets(sFoglio)
With SH.Range(sTabella)
Set Rng = .Offset(1).Resize(.Rows.Count - 1)
End With
With Me
.cbAggiornaRecord.Caption = "Aggiorna record"
.cbEsci.Caption = "ESCI"
With .lbxNominativi
.List = Rng.Value
End With
End With
End Sub
'--------->>
Private Sub cbAggiornaRecord_Click()
With Me.lbxNominativi
bEvents = False
Rng.Cells(.ListIndex + 1, 2).Value = Me.tbxPresenza.Value
.List = Rng.Value
bEvents = True
End With
End Sub
'--------->>
Private Sub cbEsci_Click()
Unload Me
End Sub
'<<=========
Potresti scaricare il mio file di prova Claudio20180418.xlsm
===
Regards,
Norman