Как установить имя текстового поля как переменную и разрешить изменять имя в цикле?

Я знаю, что название неясно. Хенс, я пытаюсь подробно объяснить содержание.

В интерфейсе VB имеется 15 текстовых полей, как показано ниже.

текстовый снимок

Это пользовательский интерфейс, который позволяет пользователю вводить данные и хранить их на листах.

Предположим, что пользователь заполнил все 15 текстовых полей. Затем первая строка текстового поля пройдет и сохранит данные в ячейках Excel A1, B1, C1, D1 соответственно. Вторая строка текстового поля хранит данные в ячейках Excel A2, B2, C2, D2 ……

Следовательно, я хочу использовать вложенный цикл для решения проблемы.

for {for { Cells.(i,j)=textbox1.value 

Левая часть инструкции прекрасна, так как каждая ячейка Excel имеет свой собственный идентификатор (порядок столбцов и строк).

Однако для правой стороны все имена TextBox назначаются мной. Я называю их как textbox1, textbox2, textbox3 …

Чтобы они вписывались в цикл, я хочу изменить имя своего текстового поля во время цикла. Например,

 `textbox+i; i++ ;` ' just my thought 

Возможно ли это сделать на самом деле? Кроме того, что, если пользователи заполняют данные в половине строки (3 строки с данными, затем отправьте, 2 строки пустые). Как VBA продолжает заполнять данные после строки данными?

вы можете использовать следующий код:

 For i = 1 To 5 '<-- 5 "rows" of textboxes For j = 1 To 3 '<-- 3 "columns" of textboxes for each row Cells(i, j) = Me.Controls("TextBox" & (i - 1) * 3 + j) '<-- textboxes are name form "TextBox1" to "TextBox15" rowwise Next j Next i 

для корректировки в соответствии с вашими номерами строк и столбцов.

что касается вашего вопроса «что, если …» , мне непонятно, чего вы хотите достичь

нужно просто пропустить «не введенные» текстовые поля, тогда вы могли бы просто пойти

  For i = 1 To 5 '<-- 5 "rows" of textboxes For j = 1 To 3 '<-- 3 "columns" of textboxes for each row With Me.Controls("TextBox" & (i - 1) * 3 + j) '<-- textboxes are name form "TextBox1" to "TextBox15" rowwise If .Text <> "" Then Cells(i, j) = .Text '<--| skip void textboxes End With Next j Next i 

В объекте приложения Excel есть метод. Эта функция будет оценивать строку как формулу. URL-адрес справки Excel Пример оценки:

https://msdn.microsoft.com/en-us/library/ff193019.aspx

Попробуйте использовать код ниже

 Private Sub CommandButton1_Click() Dim ts As Control For Each ts In Me.Controls If ts.Name = "TextBox1" Then 'do ElseIf ts.Name = "TextBox2" Then 'do ElseIf ts.Name = "TextBox3" Then 'do ElseIf ts.Name = "TextBox4" Then 'do End If Next End Sub 
  • Как изменить цвет фона текстового поля с помощью кнопки
  • Форматирование текстовых полей в форме пользователя
  • Управление текстовым полем в Excel - как ссылаться в Perl
  • Не удалось извлечь содержимое текстового поля Powerpoint в Excel с помощью Excel VBA
  • VBA Excel Укажите текущую дату в текстовом поле
  • Дублируйте то, что находится в текстовом поле в других текстовых блоках на других листах
  • Ограничение текстовой строки VBA в текстовом поле
  • Блокировка TextBox от перемещения и изменения размера листа и только редактирование текста Excel VBA
  • Как выбрать данные в TextBox или ListBox, а затем отправить электронную почту через Outlook на основе этих данных
  • Excel Noob Скопировать ячейку Excel в текстовое поле HTML
  • Как установить текстовое поле в пользовательской форме для дробного значения?
  • Давайте будем гением компьютера.