Страницы: 1
RSS
Как назначить переменной числовое значение функции
 
Подскажите пожалуйста как назначить переменной числовое значение функции
=LEN(R2C2) - LEN(SUBSTITUTE(R2C2,"";"",""""))
не помещая функцию в ячейку .

Это необходимо для того что бы подсчитав с помощью функции количество определенных символов в ячейке использовать дальше полученную переменную в условие IF Then Else
(Если количество символов в определенной ячейке, что определяеться функцией при сравнение с другой переменной меньше, выполняеться действие 1 ,
в противном случае выполняеться действие 2 )

код VBA для выполнения в ячейке:
Код
ActiveCell.FormulaR1C1 = "=LEN(R2C2) - LEN(SUBSTITUTE(R2C2,"";"",""""))"

Тестовый упрощенный код которым который работает:
Код
Dim quantitySymbols As Integer

quantitySymbols = Evaluate("=SUM(3+4)")
MsgBox (quantitySymbols)

Когда вставлял в тестовый упрощенный код вместо =SUM(3+4) свою функцию получаю ошибку "Run-time error '13' Type mismatch" как я понимаю из-за неправильного типа переменной ,
но меняя тип переменной  я так и результата положительного не добился.
Также для преобразования типа данных пытался использовать функцию CInt()

Рабочий неудавшийся код
Код
Dim quantitySymbols As Integer

quantitySymbols = Evaluate("=LEN(R2C2) - LEN(SUBSTITUTE(R2C2,"";"",""""))")
MsgBox (quantitySymbols)

Файл excel во вложение можно использовать, но это не принципиально так как можно в новом документе для теста в ячейку B2 поместить любой текст с ; .

Прошу помощи
 
а какую задачу решаете?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Если говорить глобально, хочу создать макрос который будет добавлять в  задаваемый мной диапазон ячеек в каждую ячейку в определенную позицию  (как до текста так и в любое из вхождений так и после текста желаемый  текст)  желаемый текст и в случае если в одной или в нескольких ячейках  где будет происходить подставка вместо символа точка с запятой ( или  друго символа таких как пробел,запятая, тире и т.д. ) будет  отсутствовать вхождение , то я в этом случае буду использовать IF для  того чтобы желаемый текст был вставлен в конец существующего короткого  текста в ячейке, а не в отсутствующее вхождение.
 
Код
cellls(r,c).formula = left(cells(r,c).formula,10) & 22 & right(cells(r,c).formula, len(cells(r,c).formula)-10)
этот код в ячейку в строке r, в колонке c вставить число 22 в 11-ю позицию в формулу записанную в эту ячейке
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Честно пробовал понять. Не понял .Можно детальней?
 
берем из формулы 10 левых символов добавляем число 22 добавляем оставшуюся часть формулы
если было =абвгдежзи100
станет =абвгдежзи22100
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Можно считать разницу символов так
Код
quantitySymbols = Len(Cells(2, 2)) - Len(Application.Substitute(Cells(2, 2).Value, ";", ""))
А можно и не считать их количество, а выяснять есть ли они в этом тексте.
Код
Dim quantitySymbols As Variant
If Cells(2, 2) = Application.Substitute(Cells(2, 2).Value, ";", "") Then
    quantitySymbols = "Нет нужных символов"
Else
    quantitySymbols = "Есть нужные символы"
End If
MsgBox (quantitySymbols)
 
Спасибо
 
Цитата
seregasss435 написал:
Правильно ли использовать свойство Value имменно для этого выражения?
для какого выражения?
сможете обьяснить что вы пытаетесь посчитать, возможно кто-то сможет вам обьяснить как это сделать
постарайтесь в обьяснениях не использовать никаких функций, формул, VBA, используйте простой обывательский язык

а вообще отвечая на вопрос поставленный в заголовке темы:
Цитата
Как назначить переменной числовое значение функции
назначьте так
переменная = КакаятоФункция
например:
Pi = WorkSheetFunction.pi
или
L = Len(ActiveCell)
это все. тема раскрыта полностью
Изменено: Ігор Гончаренко - 24.02.2021 11:03:42
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Цитата
Ігор Гончаренко: тема раскрыта полностью
+++
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Ігор Гончаренко, моя задача благодаря вам и gling решена.
Страницы: 1
Читают тему (гостей: 2)
Наверх