嗨,
我运行这个简单的代码来计算用户表单中的某些内容;填写一些框后,单击按钮即可获取结果 - 单击时,它会检查是否所有框都已填写:
Private Sub Valider_Click()
Dim Ctrl As Control, x1 As Long, x2 As Long
For Each Ctrl In Me.Controls
If TypeName(Ctrl) = "TextBox" Then
x1 = x1 + 1: If Ctrl.Text <> "" Then x2 = x2 + 1
End If
Next Ctrl
If x1 <> x2 Then
MsgBox "Veuillez remplir tous les champs", vbInformation, ""
Else
Sheets("Calculs").Range("C5").Value = NuCoaposX_texte.Value
Sheets("Calculs").Range("D5").Value = NuCoaposY_texte.Value
Sheets("Calculs").Range("C6").Value = NuCoasizeX_texte.Value
Sheets("Calculs").Range("D6").Value = NuCoasizeY_texte.Value
Sheets("Calculs").Range("C7").Value = NuCoadefX_texte.Value
Sheets("Calculs").Range("D7").Value = NuCoadefY_texte.Value
Sheets("Calculs").Range("C11").Value = NuSLIA0Y_texte.Value
Sheets("Calculs").Range("D11").Value = NuSLIA0Y_texte.Value
Sheets("Calculs").Range("C12").Value = NuSLIA1X_texte.Value
Sheets("Calculs").Range("D12").Value = NuSLIA1Y_texte.Value
Sheets("Calculs").Range("C13").Value = NuSLdefX_texte.Value
Sheets("Calculs").Range("D13").Value = NuSLdefY_texte.Value
End If
MoitieZoneNuX.Value = Sheets("Calculs").Range("F6").Value
Unload Me
End sub
问题是,一旦计算完所有内容,我想用单元格中的值填充一些框:当然,当我单击按钮时,它也会检查这些框。有没有办法从检查中排除其中一些框?
我尝试寻找答案,但我不确定到底要寻找什么
您可以使用控件的
Tag
属性来跳过长度验证:
Private Sub Valider_Click()
Dim Ctrl As Control
For Each Ctrl In Me.Controls
If TypeName(Ctrl) = "TextBox" Then
'check tag and content...
If Ctrl.Tag <> "skip" And Len(Ctrl.Value) = 0 Then
MsgBox "Veuillez remplir tous les champs", vbInformation, ""
Exit Sub 'nothing else to do...
End If
End If
Next Ctrl
With Sheets("Calculs")
.Range("C5").Value = NuCoaposX_texte.Value
.Range("D5").Value = NuCoaposY_texte.Value
.Range("C6").Value = NuCoasizeX_texte.Value
.Range("D6").Value = NuCoasizeY_texte.Value
.Range("C7").Value = NuCoadefX_texte.Value
.Range("D7").Value = NuCoadefY_texte.Value
.Range("C11").Value = NuSLIA0Y_texte.Value
.Range("D11").Value = NuSLIA0Y_texte.Value
.Range("C12").Value = NuSLIA1X_texte.Value
.Range("D12").Value = NuSLIA1Y_texte.Value
.Range("C13").Value = NuSLdefX_texte.Value
.Range("D13").Value = NuSLdefY_texte.Value
End With
MoitieZoneNuX.Value = Sheets("Calculs").Range("F6").Value
Unload Me 'why do this after setting MoitieZoneNuX ?
End Sub