Я создал таблицу, а затем заполнил ее значениями, как показано на изображении. Теперь я хочу заполнить значения в этой таблице пользовательской формой, которую я создал. Код, назначенный для добавления кнопки элемента, как показано на изображении, предназначен только для первых двух столбцов.Excel -VBA Userform, которая добавляет значения в конец каждого столбца
Для первого он хорошо работает и добавляет данные после заполненных, но второй не делает, поскольку он добавляет данные, находящиеся далеко от заполненных.
Вот изображение: Screenshot
Вот код:
Private Sub CommandButton1_Click()
Dim RowCount As Long
If CategoriesComboBox.Value = "Household" Then
RowCount = Worksheets("Data Lists").Range("C7").CurrentRegion.Rows.Count
With Worksheets("Data Lists").Range("C7")
.Offset(RowCount, 0).Value = Me.NameTextBox.Value
End With
End If
If CategoriesComboBox.Value = "Entertainment" Then
RowCount = Worksheets("Data Lists").Range("D7").CurrentRegion.Rows.Count
With Worksheets("Data Lists").Range("D7")
.Offset(RowCount, 0).Value = Me.NameTextBox.Value
End With
End If
If CategoriesComboBox.Value = "Food" Then
RowCount = Worksheets("Data Lists").Range("E7").CurrentRegion.Rows.Count
With Worksheets("Data Lists").Range("E7")
.Offset(RowCount, 0).Value = Me.NameTextBox.Value
End With
End If
If CategoriesComboBox.Value = "Gifts/Donations" Then
RowCount = Worksheets("Data Lists").Range("F7").CurrentRegion.Rows.Count
With Worksheets("Data Lists").Range("F7")
.Offset(RowCount, 0).Value = Me.NameTextBox.Value
End With
End If
If CategoriesComboBox.Value = "Children" Then
RowCount = Worksheets("Data Lists").Range("G7").CurrentRegion.Rows.Count
With Worksheets("Data Lists").Range("G7")
.Offset(RowCount, 0).Value = Me.NameTextBox.Value
End With
End If
If CategoriesComboBox.Value = "Investment Accounts" Then
RowCount = Worksheets("Data Lists").Range("G7").CurrentRegion.Rows.Count
With Worksheets("Data Lists").Range("G7")
.Offset(RowCount, 0).Value = Me.NameTextBox.Value
End With
End If
If CategoriesComboBox.Value = "Medical" Then
RowCount = Worksheets("Data Lists").Range("G7").CurrentRegion.Rows.Count
With Worksheets("Data Lists").Range("G7")
.Offset(RowCount, 0).Value = Me.NameTextBox.Value
End With
End If
If CategoriesComboBox.Value = "Other" Then
RowCount = Worksheets("Data Lists").Range("G7").CurrentRegion.Rows.Count
With Worksheets("Data Lists").Range("G7")
.Offset(RowCount, 0).Value = Me.NameTextBox.Value
End With
End If
If CategoriesComboBox.Value = "Personal" Then
RowCount = Worksheets("Data Lists").Range("G7").CurrentRegion.Rows.Count
With Worksheets("Data Lists").Range("G7")
.Offset(RowCount, 0).Value = Me.NameTextBox.Value
End With
End If
If CategoriesComboBox.Value = "Pets" Then
RowCount = Worksheets("Data Lists").Range("G7").CurrentRegion.Rows.Count
With Worksheets("Data Lists").Range("G7")
.Offset(RowCount, 0).Value = Me.NameTextBox.Value
End With
End If
If CategoriesComboBox.Value = "Taxes/Legal" Then
RowCount = Worksheets("Data Lists").Range("G7").CurrentRegion.Rows.Count
With Worksheets("Data Lists").Range("G7")
.Offset(RowCount, 0).Value = Me.NameTextBox.Value
End With
End If
If CategoriesComboBox.Value = "Transportation" Then
RowCount = Worksheets("Data Lists").Range("G7").CurrentRegion.Rows.Count
With Worksheets("Data Lists").Range("G7")
.Offset(RowCount, 0).Value = Me.NameTextBox.Value
End With
End If
End Sub
Можете ли вы вставьте свой макрос, как текст? Обычно нам не нравится набирать ваш макрос, а затем работать над исправлением. Но я собираюсь догадаться, что это ваше использование «CurrentRegion», которое, возможно, не та область, которую вы ожидаете от нее? – BruceWayne
@BruceWayne Извините за это. Я здесь новенький. Вот макрос (я не закончил их все, как вы видите, потому что я использовал копию и вставку для дублирования). Я использовал то же самое для других. Private Sub CommandButton1_Click() Dim RowCount As Long Если CategoriesComboBox.Value = "бытовой" Тогда RowCount = ("Рабочие листы Списки данных"). Range ("C7"). CurrentRegion.Rows.Count С Таблицах ("Списки данных"). Range ("С7") .Offset (RowCount, 0) .Value = Me.NameTextBox.Value End With End If –