Использование массивов и копирование в следующую доступную строку дает мне данные только в первой ячейке (ввод формы пользователя) - PullRequest
1 голос
/ 10 июля 2019

Я делаю ERP-систему, у меня есть рабочий, но некрасивый код, который делает то, что я хочу. Я только что попытался использовать массивы в первый раз, и при его использовании я получаю только первый ввод текстового поля в свою электронную таблицу архива, хотя у меня есть еще 9 текстовых полей, назначенных этому массиву. Трудно объяснить, но легче понять, что я пытаюсь сделать в коде.

Я пытался изменить "B2" для переменной nextRow на "C2", но он все еще дает мне только первый ввод текстового поля и вставляет его в любую ячейку, впервые упомянутую в моей переменной nextRow.

(Этот код был предоставлен мне на сайте просмотра кода, но я попытался внести некоторые изменения, но безуспешно.

'Making the variable that stores the input from all 9 textboxes in the userform
Dim inputs As Variant
'Variabler for inputs
    inputs = Array(TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text, TextBox10.Text, TextBox6.Text, TextBox7.Text, TextBox8.Text, TextBox9.Text)


'Declaring the variable for the next available row from B to J so I can copy the input from each textbox into the corresponding cell in the Archive worksheet.

Dim nextRowB As Range
    Set nextRowB = Sheets("Arkiv").Range("C" & Rows.Count & ":J" & Rows.Count).End(xlUp).Offset(1, 0)
    nextRowB.Value = inputs

Вместо того, чтобы копировать каждый ввод текстового поля в соответствующие ячейки, он копирует только первый ввод текстового поля (textbox1) в первый столбец следующей доступной строки, а затем позволяет оставшимся статьям быть пустыми.

Я ожидал, что этот код вставит все входные данные текстового поля в следующую доступную строку в столбце B вплоть до J, используя тот же порядок, который я использовал при назначении различных входных данных текстового поля для массива.

1 Ответ

1 голос
/ 10 июля 2019

Может попробовать вот так

Dim inputs As Variant
inputs = Array(TextBox1.Text, TextBox2.Text, TextBox3.Text, TextBox4.Text, TextBox10.Text, TextBox6.Text, TextBox7.Text, TextBox8.Text, TextBox9.Text)
Dim nextRowB As Range
Set nextRowB = Sheets("Arkiv").Range("B" & Rows.Count).End(xlUp).Offset(1, 0)
nextRowB.Resize(1, UBound(inputs) + 1).Value = inputs
...