Добавление значения текстового поля в составную формулу - PullRequest
0 голосов
/ 05 августа 2020

Я надеялся, что вы поможете мне с кодированием. У меня есть довольно длинная объединенная формула, которая создается с помощью пользовательской формы в VBA. Единственная проблема, с которой я столкнулся, - это Textbox6. Значение, введенное пользователем, должно быть только 1 или 0 (это не проблема). Проблема в том, что когда формула генерируется, результат, относящийся к Textbox6, будет «1 = 1» или «0 = 0» после остальной части формулы. Я хотел бы, чтобы формула определяла, имеет ли Textbox6 1 или 0, а затем применила условие, присвоенное этому значению (что-то вроде: Textbox6.Value = 1 Then…). Я просто не могу заставить это работать. Любая помощь будет принята с благодарностью.

Спасибо.

ActiveCell.Formula = "=""BOX ""&IF(OR(Base_Point=1,Base_Point=2,Base_Point=3,Base_Point=4),X_Origin+" & TextBox1 & ",X_Origin-" & TextBox1 & ")&"",""&IF(OR(Base_Point=3,Base_Point=4,Base_Point=5,Base_Point=6),Y_Origin-" & TextBox2 & ",Y_Origin+" & TextBox2 & ")& "",""&IF(" & TextBox6 & "=1,Z_End,Z_Origin)&"" ""&IF(OR(Base_Point=1,Base_Point=2,Base_Point=3,Base_Point=4),X_Origin+" & TextBox3 & ",X_Origin-" & TextBox3 & ")&"",""&IF(OR(Base_Point=3,Base_Point=4,Base_Point=5,Base_Point=6),Y_Origin-" & TextBox4 & ",Y_Origin+" & TextBox4 & ")&"",""&IF(AND(" & TextBox6 & "=1,OR(Base_Point=1,Base_Point=3,Base_Point=5,Base_Point=7)),Z_End-" & TextBox5 & ",IF(AND(" & TextBox6 & "=0,OR(Base_Point=1,Base_Point=3,Base_Point=5,Base_Point=7)),Z_Origin+" & TextBox5 & ",IF(AND(" & TextBox6 & "=1,OR(Base_Point=2,Base_Point=4,Base_Point=6,Base_Point=8)),Z_End+" & TextBox5 & ",IF(AND(" & TextBox6 & "=0,OR(Base_Point=2,Base_Point=4,Base_Point=6,Base_Point=8)),Z_Origin-" & TextBox5 & "))))"

введите описание изображения здесь

1 Ответ

0 голосов
/ 05 августа 2020

Согласно вашему комментарию, работает ли это решение для вас (просто замените часть кода, относящуюся к TextBox6)?

IIf(TextBox6.Value = 1, "1", "0")

Вы также можете оценить сценарий «0», используя вложенный IIf функция:

IIf(TextBox6.Value = 1, "1", IIf(TextBox6.Value = 0, "0", "NOT_ALLOWED_VALUE"))

Как использовать функцию IIf

...