shivambhat Ответов: 1

Как я могу использовать проверку данных с помощью VBA и выбросить ошибку, если условие не выполнено?


Привет,

Я новичок в VBA . Я только что начал кодировать, и я хотел ограничить значения в ячейках между 1-10 проверкой данных через VBA, а также выдать ошибку, если условие не истинно.

Но я не могу этого сделать.

Пожалуйста, пройдите через мой код и помогите мне в этом.

Я был бы вам очень признателен.

Что я уже пробовал:

Sub form()

Dim userinput As String
Dim promptmsg As String
Dim tryerror As Integer

promptmsg = "Please enter a numeric value to enter"
'

'
        With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 65535
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Range("C6").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 65535
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Range("C8").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 65535
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    
    Range("C4").Select
    ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
        False
    Range("C4").Select
    
    If ActiveCell.Value >= 1 And ActiveCell.Value <= 10 Then
    

    
    With Selection.Validation
        .Delete
        .Add Type:=xlValidateWholeNumber, AlertStyle:=xlValidAlertStop, _
        Operator:=xlBetween, Formula1:="1", Formula2:="10"
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = "Please try again"
        .ShowInput = True
        .ShowError = True
    End With
    
    Range("C4").Select
    userinput = InputBox(promptmsg)
    
    ActiveCell.FormulaR1C1 = userinput
    
    Range("C6").Select
    
    userinput = InputBox(promptmsg)
    
    ActiveCell.FormulaR1C1 = userinput
    
    Range("C8").Select
    
    userinput = InputBox(promptmsg)
    
    ActiveCell.FormulaR1C1 = userinput
    
    Range("C5").Select
    
    Else
    
    tryerror = msgbox("invalid value! try again?", vbYesNo)
    
    
    If tryagain = 6 Then
    form
    
    End If
     End If
     
    End Sub

Richard MacCutchan

Вы не сказали нам, в чем проблема и где она возникает. Вы также можете упростить это, просто попробовав простые значения. Только когда у вас это работает, вы должны думать о цветах и узорах.

ZurdoDev

Что не так с вашим кодом? Я не собираюсь пытаться управлять им.

ZurdoDev

Запишите макрос, делающий близко к тому, что вы хотите, и вы сможете увидеть, что это за код.

shivambhat

Это было сделано только путем записи,но это не проблема.проблема возникает, когда я пытаюсь поставить условный оператор, а также использую его, чтобы бросить ошибку, если условие не истинно.

ZurdoDev

Да, как указывает Решение 1, Вы можете записать макрос, входящий в проверку. В Excel есть опция проверки.

Если он не делает того, что вы хотите, вам нужно быть более ясным.

1 Ответов

Рейтинг:
1

Maciej Los

Основанный на Документация MS Office[^]:

With Range("C1:C10").Validation 
 .Add Type:=xlValidateWholeNumber, AlertStyle:= xlValidAlertStop, Operator:=xlBetween, Formula1:="1", Formula2:="10" 
 .InputTitle = "Integers" 
 .ErrorTitle = "Integers" 
 .InputMessage = "Enter an integer from one to ten" 
 .ErrorMessage = "You must enter a number from one to ten" 
End With