我有一个简单的用户表单,用于收集有关人员的信息。
这是我添加6人信息时得到的一个例子。我想从第3行开始信息列表(因为2个第一行由命令按钮“Remplir formulaire”填充:
我的问题是,在调用userForm时,我希望每个前14列有14个标题名称(将这些值填入这些列的函数将在我的代码中稍后完成)。
要设置14个字段的名称(从row = 3开始),我做了:
Private Sub ResetForm()
'Monsieur by default
ComboBox1.Value = "Monsieur"
'Empty TextBox1
TextBox1.Value = ""
'Empty TextBox2
TextBox2.Value = ""
'Empty TextBox3
TextBox3.Value = ""
End Sub
Private Sub UserForm_Initialize()
'Create header for each colum
Dim HeaderName(14) As String
'Index to browse HeaderName array
Dim a As Integer
HeaderName(1) = "Civilité"
HeaderName(2) = "Nom"
HeaderName(3) = "Prénom"
HeaderName(4) = "Âge"
HeaderName(5) = "Fonction"
HeaderName(6) = "Entité"
HeaderName(7) = "Catégorie"
HeaderName(8) = "Adresse"
HeaderName(9) = "Code postal"
HeaderName(10) = "Ville"
HeaderName(11) = "Tél Fixe"
HeaderName(12) = "Tél Portable"
HeaderName(13) = "Email"
HeaderName(14) = "Autres infos"
'Initlialize headers : start from row = 3
Sheet1.Activate
With Sheet1
For a = 1 To 14
If (.Cells(3, a) <> "") Then
.Cells(3, a).Value = HeaderName(a)
End If
Debug.Print "a = " & a
Next a
End With
'Fill ComboBox
With ComboBox1
.AddItem "Monsieur"
.AddItem "Madame"
End With
'Set Elu by default
CheckBox1.Value = True
CheckBox2.Value = False
'Reset all inputs
Call ResetForm
End Sub
并进入相同的VBA源代码,我为Command按钮“”Remplir Formulaire“做了一遍:
Private Sub CommandButton1_Click()
Dim emptyRow As Long
Sheet1.Activate
With Sheet1
emptyRow = .UsedRange.Rows.Count + .UsedRange.Rows(1).Row - 1
If .Cells(emptyRow, 1).Value <> "" Then
emptyRow = emptyRow + 1
.Cells(emptyRow, 1).Value = ComboBox1.Value
.Cells(emptyRow, 2).Value = TextBox1.Value
.Cells(emptyRow, 3).Value = TextBox2.Value
.Cells(emptyRow, 4).Value = TextBox3.Value
.Cells(emptyRow, 5).Value = CheckBox1.Value
If CheckBox1.Value = True Then
.Cells(emptyRow, 5).Value = CheckBox1.Caption
Else
.Cells(emptyRow, 5).Value = CheckBox2.Caption
End If
End If
End With
End Sub
所以我不明白为什么我不能通过UserForm_Initialize()
数组得到函数HeaderName
中指定的每个顶部列的14个名称:只有前四个(Civilité,Nom,Prénom,单击“Remplir Formulaire”命令按钮时显示年龄,而不是其他10个。
任何人都可以看到什么是错的?此致
ps:.xlsm可以从this link
下载答案 0 :(得分:1)
你真的需要检查细胞是否为空?我会用以下代码替换20多行代码:
Sheet1.Range("A3").Resize(1, 14).Value = Array("Civilité", "Nom", "Prénom", "Âge", "Fonction", "Entité", "Catégorie", "Adresse", "Code postal", "Ville", "Tél Fixe", "Tél Portable", "Email", "Autres infos")