Новое в vba - я стараюсь сделать этот очень длинный оператор if в пользовательской функции. Функция будет проверять, соответствует ли поле правильному формату 2 буквы, 2 числа, знак подчеркивания, 1 буква, 2 числа.Excel Пользовательская функция - поле соответствует определенным критериям
=IF(AND(AND(CODE(MID(A2,1,1))>64,CODE(MID(A2,1,1))<91),AND(CODE(MID(A2,2,1))>64,CODE(MID(A2,2,1))<91),AND(CODE(MID(A2,3,1))>47,CODE(MID(A2,3,1))<57),AND(CODE(MID(A2,4,1))>47,CODE(MID(A2,4,1))<57),CODE(MID(A2,5,1))=95,AND(CODE(MID(A2,6,1))>64,CODE(MID(A2,6,1))<91),AND(CODE(MID(A2,7,1))>47,CODE(MID(A2,7,1))<57),AND(CODE(MID(A2,8,1))>47,CODE(MID(A2,8,1))<57),"Good","Bad Syntax")
Пример А2 будет AA01_A05
код ниже - крылатый его в конце концов. Любая помощь будет оценена по достоинству.
Function bincheck(strValue As String) As Boolean
Dim AislePos As Integer, Rackno As Integer, Udr As Integer, ShelfPos As Integer, BinNo As Integer
Dim TrueAisle As Boolean, TrueRack As Boolean, TrueUdr As Boolean, TrueShelf As Boolean, TrueBin As Boolean
For AislePos = 1 To 2
Select Case Asc(Mid(strValue, AislePos, 1))
Case 65 To 90
TrueAisle = True
Case Else
TrueAisle = False
Exit For
End Select
Next
For Rackno = 3 To 4
Select Case Asc(Mid(strValue, Rackno, 1))
Case 48 To 56
TrueRack = True
Case Else
TrueRack = False
Exit For
End Select
Next
For Udr = 5 To 5
Select Case Asc(Mid(strValue, Udr, 1))
Case Is = 95
TrueUdr = True
Case Else
TrueUdr = False
Exit For
End Select
Next
For ShelfPos = 6 To 6
Select Case Asc(Mid(strValue, ShelfPos, 1))
Case 65 To 90
TrueShelf = True
Case Else
TrueShelf = False
Exit For
End Select
Next
For BinNo = 7 To 8
Select Case Asc(Mid(strValue, BinNo, 1))
Case 48 To 56
TrueBin = True
Case Else
TrueBin = False
Exit For
End Select
Next
Select Case bincheck
Case TrueRack = True And TrueAisle = True And TrueUdr = True And TrueShelf = True And TrueBin = True
bincheck = "Good"
Case Else
bincheck = "Bad"
End Select
End Function
Хотя это, безусловно, большое достижение, что написал свою первую собственную функцию VBA, я предполагаю, что у вас есть основания для размещения этого кода. Есть ли у меня вопрос, который у меня отсутствует, или вы сталкиваетесь с ошибкой/ошибкой/проблемой с кодом, который вы не можете решить? Как мы можем помочь вам с вашим кодом? – Ralph
Ах, извините, я думаю, я должен был упомянуть об этом в начальном посте. Я предполагаю, что им нелегко (функция не работает) о том, как завершить ее в конце. Я думаю, что у меня есть штука правильно, но не та часть, которая подтверждает, что все условия выполнены. Кроме того, есть ли более эффективный способ сделать это? – belleater
Считаете ли вы, что вы пересказываете заявление регулярного выражения (aka RegEx)? См. [Как использовать регулярные выражения (регулярное выражение) в Microsoft Excel как внутри, так и в цикле] (http: // stackoverflow.com/questions/22542834/how-to-use-regular-expressions-regex-in-microsoft-excel-both-in-cell-and-loops/22542835? s = 1 | 0.0000 # 22542835) – Jeeped