Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel-将值添加到每列末尾的VBA用户窗体_Vba_Excel - Fatal编程技术网

Excel-将值添加到每列末尾的VBA用户窗体

Excel-将值添加到每列末尾的VBA用户窗体,vba,excel,Vba,Excel,我创建了一个表,然后用图中所示的值填充它。现在我想用我创建的userform来填充该表中的值。如图所示,分配给add item按钮的代码仅适用于前两列 第一种方法运行良好,在填充的数据之后添加数据,但第二种方法不行,因为它添加的数据远离填充的数据 图为: 代码如下: Private Sub CommandButton1_Click() Dim RowCount As Long If CategoriesComboBox.Value = "Household" Then RowCount =

我创建了一个表,然后用图中所示的值填充它。现在我想用我创建的userform来填充该表中的值。如图所示,分配给add item按钮的代码仅适用于前两列

第一种方法运行良好,在填充的数据之后添加数据,但第二种方法不行,因为它添加的数据远离填充的数据

图为:

代码如下:

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
这应该可以解决它:
对两个RowCount变量都正确

'RowCount in household
RowCount = Cells(Rows.Count, "C").End(xlUp).Row + 1 'probably + 1 is going to leave a blank, check for it
'RowCount in entretainment 
RowCount = Cells(Rows.Count, "D").End(xlUp).Row + 1 'probably + 1 is going to leave a blank, check for it
'... and so on for each field in your form with its corresponding Column letter 

附言:“我赶时间。请尽快。”这不是一个好的方式要求的东西。这不是一个免费的网站,也不是一个全天候可用的网站,特别是当你只粘贴你想做的图片

编辑:
替换这个

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 = "Entertainment" Then
RowCount = Worksheets("Data Lists").Cells(Rows.Count, "D").End(xlUp).Row -6 'since offset is starting at D7

With Worksheets("Data Lists").Range("D7")
    .Offset(RowCount, 0).Value = Me.NameTextBox.Value
End With
End If

我只想在指定的单元格中输出--->


你能把你的宏粘贴成文本吗?我们通常不喜欢键入宏,然后进行修复。但我猜这是你使用的
CurrentRegion
,这可能不是你所期望的区域?@brucewayn对此表示抱歉。我是新来的。这是宏(我没有像你看到的那样完成所有的操作,因为我使用了复制和粘贴来复制)——我对其他私有子命令Button1_Click()使用了相同的方法,只要CategoriesComboBox.Value=“Househouse”然后RowCount=工作表(“数据列表”).Range(“C7”).CurrentRegion.Rows.Count With Worksheet(“数据列表”).Range(“C7”).Offset(RowCount,0).Value=Me.NameTextBox.Value以End If+1结束PS。另外,请注意:您可能希望(错误,应该)使用您希望运行的工作表限定
单元格()
行。计数
(使用
With
或仅在
单元格()之前添加工作表名称)
.Rows.Count
+1是的,这是一个很好的做法,但是,这在很大程度上取决于上下文,例如,如果用户表单仅从只能在工作表中访问的序列调用(即:一个命令按钮),我想它可以为您节省几行代码,并使流程更易于理解其工作方式。它确实如此不是以正确的方式工作。它会增加行与行之间的两倍间距是否尝试删除代码中注释的“+1”?如果行为超过1,则所需的行为将更改为“-1”。解释为“Cells(Rows.Count,“C”).End(xlUp)。Row“这将检查列“C”中的最后一行是什么”不管中间是否有空格,例如,在图像中为13,如果要添加到下一个,则不应将我的字符串添加到第14行,因此为13+1,因此为单元格(Rows.Count,“C”)。结束(xlUp)。row+1?检查我的更新答案,让我知道这是否有效
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").Cells(Rows.Count, "D").End(xlUp).Row - 6 'since offset is starting at D7

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