В VBA (в проекте MS Access) я хочу определить оператор if, где часть инструкции хранится в переменной.В инструкции ifa VBA вставить часть инструкции через переменную
Для того, чтобы мой вопрос ясно, вот простой пример:
Sub Test_String_Insertion_Into_IfStatement()
Dim strInsert As String
strInsert = "10 > 5" ' Or any other stuff that would return "TRUE"
If "" & "'"strInsert"'" & "" Then
Debug.Print "Hurray, it works!"
Else
Debug.Print "Sorry, my friend. Try something else..."
End If
End Sub
Теперь проблема, это не работает. Трюк, я полагаю, нашел правильную комбинацию амперсандов, кавычек, апострофов и/или Хр (34).
Я провел много экспериментов, проверяя все варианты, которые я мог себе представить, но пока не нашел рабочей комбинации. Большинство из того, что я тестировал, возвращает ошибку «Ошибка несоответствия типа».
реального мира применение ...
Приведенный выше пример довольно упрощена. В моей реальной задаче я хочу вставить гораздо более длинную строку как часть if-statement. Вот один из моих реальных заявлений, которые в конечном итоге должны быть заменены на то, что использует переменную для вставки большей части выражения (это: все, кроме правильных «If» и «Then»):
If oRs.Fields(strTitField) Like "*" & arrWCs(r).varTERM1 & "*" Then
Он использует поля набора записей и пользовательский тип переменной (массив).
Обратите внимание, что раздел if-утверждения, который я хочу вставить переменным образом , имеет собственные кавычки и амперсанды! (Действительный оператор if-do доказал свою эффективность, но теперь я хочу вставить его в мой if-оператор, используя переменную.)
Целью является использование переменной вставки, которую я мог бы очень быстро переключаться между несколькими . если-заявление, в зависимости от необходимости в функции общей)
Для удобства я добавить простой пример, который использует амперсанд и цитаты в если заявлении:
Sub Test_String_Insertion_Into_IfStatement_2()
Dim strIfClause As String
Dim strXYZ As String
strXYZ = "ouse"
strInsert = "'Mouse' Like '*' & strXYZ & '*'" ' Just a guess, doesn't work
If "" & """strInsert""" & "" Then
'The resulting if-statement should be:
'If "Mouse" Like "*" & strXYZ & "*" Then '(Taken as such, this works!)
Debug.Print "Good!"
Else
Debug.Print "Not good!"
End If
End Sub
Используйте метод 'Application.Evaluate()'.Например, 'str =" 10> 5 "', переданный в 'Application.Evaluate (str)', вернет 'Boolean True'. –