Во-первых, я предполагаю, что код, который вы разместили, не является полным. Как уже было отмечено в разделе комментариев, есть несколько проблем, таких как ncadastro
, который не был объявлен или инициализирован, и цикл For-Next
пропускает часть Next
.
Кроме того, убедитесь, что вы объявляете переменные varmestre
и varservo
и используете ссылку на конкретную книгу при назначении им значений. Например:
dim varmestre as string
dim varservo as string
varmestre = thisWorkbook.Worksheets("99. Controles").Range("C19").Value 'Of course it doesn't have to be ThisWorkbook necessarily. It can be anything you want.
varservo = thisWorkbook.Worksheets("99. Controles").Range("C20").Value
Во-вторых, что касается вашего текстового поля:
Если речь идет о простом текстовом поле , о котором мы говорим, которое вы вставили из Insert>Text>Textbox
, тогда вы вправе объявить его как TextBox
, но его необходимо установить так:
Set boxnomecompleto1= cadastro.TextBoxes("Name of your TextBox here")
или
Set boxnomecompleto1= cadastro.TextBoxes(n) 'where n is your textbox index n=1 for the 1st one n=2 for the 2nd one etc
Затем вы можете получить доступ к его значению следующим образом:
listacadastro.Cells(i, 4).Value = boxnomecompleto1.Text
Если речь идет о контроле формы ActiveX , о котором мы говорим, который вы вставили из Developer>Insert>ActiveX Controls>Text Box
, то он не должен быть объявлен как TextBox
. Вместо этого он должен быть объявлен как Object
:
Dim boxnomecompleto1 As Object
Тогда его нужно установить так:
set boxnomecompleto1 = cadastro.OLEObjects("Name of your TextBox here").Object
или
set boxnomecompleto1 = cadastro.OLEObjects(n).Object 'where n is your object index n=1 for the 1st one n=2 for the 2nd one etc
Тогда вы можете получить доступ к его значению следующим образом:
listacadastro.Cells(i, 4).Value = boxnomecompleto1.Text