Полностью квалифицируйте свои объекты.
В настоящее время вы пишете Cells(lastrow, 1) = str & txtbox.Value & bracket
Excel означает имплицитно , трактуя это как ActiveSheet.Cells(lastrow, 1).Value = str & txtbox.Value & bracket
- потому что вы предоставляете только половину информации, это должно быть угадано. Предполагается, что вы хотите ActiveSheet
, и предполагается, что вы хотите изменить Value
. Но вы не .
Чтобы поместить Formula
в Cell
в VBA, не используйте Value
- используйте Formula
, например: ActiveSheet.Cells(lastrow,1).Formula = str & txtbox.Value & bracket
В качестве альтернативы, если вы хотите Value
, но не Formula
, то есть 2 способа. Либо конвертируйте результат, вот так:
With ActiveSheet.Cells(lastrow, 1)
.Formula = str & txtbox.Value & bracket
.Calculate
.Value = .Value
End With
Или используйте метод Application.Evaluate
:
ActiveSheet.Cells(lastrow, 1).Value = EVALUATE(str & txtbox.Value & bracket)