Dans Excel VBA, j'ai un formulaire utilisateur semblable au suivant, dans lequel l'utilisateur entre un numéro d'identification, puis les détails sont affichés sur le formulaire utilisateur:
Private Sub btnIDNo_Click()
Dim IDNo As Long
If txtIDNo.Text <> "" Then
If IsNumeric(txtIDNo.Text) = True Then
lblError.Caption = ""
IDNo = txtIDNo.Text
Worksheets("Details").Activate
Range("B4").Select
While ActiveCell.Value <> "" And ActiveCell.Value <> IDNo
ActiveCell.Offset(1, 0).Select
Wend
If ActiveCell.Value = IDNo Then
txtName.Value = ActiveCell.Offset(0, 1).Value
txtPhone.Value = ActiveCell.Offset(0, 2).Value
Else
lblError.Caption = "Cannot find ID nummber"
End If
Else
lblError.Caption = "Please enter the ID Number in numeric form"
End If
End If
End Sub
Sur le formulaire utilisateur détaillé, j'ai un bouton "Modifier". En cliquant sur le bouton "Modifier", vous ouvrez un autre formulaire utilisateur dans lequel l'utilisateur peut modifier les détails de ce numéro d'identification, mais évidemment pas le numéro d'identification lui-même. Pour ce faire, je dois passer le numéro d’identification du formulaire d’utilisateur détaillé au formulaire de modification d’utilisateur. Y-a-t'il une façon de le faire?
Le bas du formulaire Afficher les détails de l'utilisateur pour ouvrir le formulaire Modifier l'utilisateur est similaire à ce qui suit:
Private Sub CommandButton1_Click()
Dim IDNo As Long
If txtIDNo.Text <> "" Then
If IsNumeric(txtIDNo.Text) = True Then
lblError.Caption = ""
IDNo= txtIDNo.Text
ufmEditDetails.Show
ufmShowDetails.Hide
Else
lblError.Caption = "Please enter the ID Number in numeric form"
End If
Range("B4").Select
End If
End Sub
J'ai déjà regardé les liens suivants mais ils ne semblent pas aider:
http://gregmaxey.mvps.org/Word_tip_pages/userform_pass_data.html
Il y a beaucoup de façons ... Voici quelques ...
Voie 1
Public
dans un moduleDans Userform1
Private Sub CommandButton1_Click()
MyVal = "Sid"
UserForm2.Show
End Sub
Dans Userform2
Private Sub CommandButton1_Click()
MsgBox MyVal
End Sub
Dans le module
Public MyVal
Voie 2
Utilisez la propriété .Tag
du userform
Dans Userform1
Private Sub CommandButton1_Click()
UserForm2.Tag = "Sid"
UserForm2.Show
End Sub
Dans Userform2
Private Sub CommandButton1_Click()
MsgBox Me.Tag
End Sub
Voie 3
Ajoutez une Label
dans Userform2 et définissez sa propriété visible sur False
Dans Userform1
Private Sub CommandButton1_Click()
UserForm2.Label1.Caption = "Sid"
UserForm2.Show
End Sub
Dans Userform2
Private Sub CommandButton1_Click()
MsgBox Label1.Caption
End Sub
Le moyen le plus simple est:
UserForm2.TxtIDNo.Text = UserForm1.txtIDNo.Text
Il y a plusieurs façons de résoudre ce problème. Celui que j'utilise est de déclarer une variable globale ou publique dans le module.
Exemple:
Public commonVariable As String
ensuite, dans userform, vous pouvez affecter ou récupérer une valeur à partir de cette variable. Par exemple, dans userform1:
Private Sub btnIDNo_Click()
commonVariable = "UserId"
End Sub
dans UserForm2:
Private Sub CommandButton1_Click()
me.txtIDNo.Text = commonVariable
End Sub