VBA - 从常规检查中排除某些框

问题描述 投票:0回答:1

嗨,

我运行这个简单的代码来计算用户表单中的某些内容;填写一些框后,单击按钮即可获取结果 - 单击时,它会检查是否所有框都已填写:

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

问题是,一旦计算完所有内容,我想用单元格中的值填充一些框:当然,当我单击按钮时,它也会检查这些框。有没有办法从检查中排除其中一些框?

我尝试寻找答案,但我不确定到底要寻找什么

excel vba checkbox
1个回答
0
投票

您可以使用控件的

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
© www.soinside.com 2019 - 2024. All rights reserved.