EXCEL VBAdynamic数据input

在这里输入图像说明

  1. 范围(“D:D”)中的RED颜色框是从Me.ComboBox1.Value引用的值
  2. 黄色和绿色分别是来自Me.TextBox1Me.TextBox2的数据。 在Me中, Me.TextBox1Me.TextBox2值将根据Me.ComboBox1选定的值插入到此工作表中。
  3. 因此,在这种情况下,我希望黄色和绿色相应地input到用户select的红色。
  4. 另一个额外的事情是,我把黄色和绿色数据的最后一行.OffSet(1,0).EntireRow.Insert

这应该做到这一点:

 nextrow = Sheets("DB Cust").Range("C" & Sheets("DB Cust").Rows.Count).End(xlUp).Row + 1 

更新在编辑之后,我认为类似于这个的东西可能是你需要的。 请注意,这取决于E列中每个数据块始终有一个值,以使其工作:

 Dim lngNewRow As Long Dim strLookupValue As String strLookupValue = "A" ' or B/C/D etc. lngNewRow = Sheets("DB Cust").Range("D:D").Find(strLookupValue).Offset(, 1).End(xlDown).Row + 1 Sheets("DB Cust").Rows(lngNewRow).Insert Sheets("DB Cust").Cells(lngNewRow, "E").Value = "Data for column E" Sheets("DB Cust").Cells(lngNewRow, "F").Value = "Data for column F" 

关于你的观点4,如果“D”是列表中的最后一个值,那么为什么你需要插入额外的空白行,大概所有的行都是空白的呢?

我不确定,但是你打电话给你的范围似乎很奇怪。 尝试一种定义计数范围的不同方式。

改变这个:

 nextrow = WorksheetFunction.CountA(Sheets("DB Cust").Range("C:C")) + 2 

对此:

 Dim myWB as Workbook, DBcust as Worksheet Set myWB = Excel.ActiveWorkbook Set DBcust = myWB.Worksheets("DB Cust") nextrow = Excel.WorksheetFunction.CountA(DBcust.Range(DBcust.Cells(1,3),DBcust.Cells(DBcust.UsedRange.Rows.Count,3)) + 2 

为了更加可靠,我将书和表分配给了一个variables,但是如果你愿意的话,你可以再次明确地说明它们。 此代码假定工作簿是当前活动的工作簿,否则您将不得不使用工作簿名称来设置variables。

此外,它看起来并不像在“With”块中需要offset函数的“rfound”部分。 。 。 那就是“With”的意思。 这只是一个小东西,但是像这样毫无意义的代码只会让你头痛,所以我的build议就是把它拿出来。

我还没有加载到VBA IDE,所以请仔细检查拼写错误。 谢谢!

更新:

在阅读您的评论之后,我仔细研究了您的代码,以及您正在尝试做什么。 看起来你正在尝试将textbox1的值(无论这可能是什么…这将有助于,如果你稍微解释一下这部分)转换成一个单元格偏移用户在combobox1中定义的search结果的位置。 nextrowvariables位于行偏移参数内,但位置已经在您想要的位置。 尝试改变这一点:

 With rfound rfound.Offset(nextrow, 1).Value = TextBox1.Value rfound.Offset(nextrow, 2).Value = TextBox1.Value rfound.Offset(nextrow, 3).Value = TextBox1.Value rfound.Offset(nextrow, 4).Value = TextBox1.Value rfound.Offset(nextrow, 5).Value = TextBox1.Value rfound.Offset(nextrow, 6).Value = TextBox1.Value rfound.Offset(nextrow, 7).Value = TextBox1.Value rfound.Offset(nextrow, 8).Value = TextBox1.Value MsgBox ("Data entry success") End With 

对此:

 With rfound .Offset(0, 1).Value = TextBox1.Value .Offset(0, 2).Value = TextBox1.Value .Offset(0, 3).Value = TextBox1.Value .Offset(0, 4).Value = TextBox1.Value .Offset(0, 5).Value = TextBox1.Value .Offset(0, 6).Value = TextBox1.Value .Offset(0, 7).Value = TextBox1.Value .Offset(0, 8).Value = TextBox1.Value MsgBox ("Data entry success") End With 

您可能会注意到我也删除了多余的“rfound”,根据我以前的build议。 看看这是否工作,如果是这样,你可能想要一起删除newrowvariables。

祝你好运,让我们知道如何去。