#excel #vba
#excel #vba
Вопрос:
В этом коде я пытаюсь заставить пользователя выбрать диапазон в строке. Если строка содержит «HOL», в окне сообщения будет показано сообщение.
То, как код работает сейчас, когда пользователь выбирает одну ячейку, содержащую «HOL», появляется сообщение, когда пользователь выбирает несколько ячеек в строке, появляется ошибка Runtime error 13. Это оператор if, с которым у меня возникают проблемы
Я пробовал разные методы выбора диапазона, но я еще недостаточно знаком с кодированием, чтобы понять свою ошибку.
' Highlight_SKL Macro
' This macro will highlight leave dates for entry
Dim rng As Range
Set rng = Range(Selection.Address)
If MsgBox("Are you sure you want to submit day of SKL", vbYesNo) = vbNo Then Exit Sub
If InStr(Range(Selection.Address), "HOL") Then MsgBox ("You are entering a SKL date on a Federal Holiday")
With Selection.Interior
rng = "=1"
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 250
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End Sub
Когда пользователь выбирает строку, содержащую «HOL», появляется окно сообщения, сообщающее им об этом.
Ответ №1:
Используйте подстановочный знак для выбора одной или нескольких ячеек.
If Not IsError(application.match("*HOL*", Selection, 0)) Then _
MsgBox "You are entering a SKL date on a Federal Holiday"
Ответ №2:
Приведенный ниже код используется для каждого цикла для перебора каждой ячейки выделения, чтобы избежать ошибок.
Option Explicit
Sub test()
Dim rng As Range, cell As Range
Set rng = ThisWorkbook.Worksheets("Sheet1").Range(Selection.Address) '<- Change sheet name if need
If MsgBox("Are you sure you want to submit day of SKL", vbYesNo) = vbNo Then Exit Sub
For Each cell In rng
If InStr(cell, "HOL") Then MsgBox ("You are entering a SKL date on a Federal Holiday")
With cell
With .Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 250
.TintAndShade = 0
.PatternTintAndShade = 0
End With
.Value = 1
End With
Next cell
End Sub
Комментарии:
1. Большое спасибо за эти предложения, я попробую и сообщу