Me.ComboBox1.Value
Me.TextBox1
和Me.TextBox2
的数据。在Me中,Me.TextBox1
和Me.TextBox2
中的值将根据Me.ComboBox1
中选择的值插入此工作表。.OffSet(1,0).EntireRow.Insert
答案 0 :(得分:1)
这应该这样做:
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”是列表中的最后一个值,那么为什么你需要插入额外的空白行,大概是它下面的所有行都是空白的?
答案 1 :(得分:0)
我不确定,但你打电话给你的范围的方式对我来说似乎很奇怪。尝试一种不同的方式来定义您的计数范围。
改变这个:
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
我将书籍和工作表分配给变量以获得更高的可靠性,但如果您愿意,可以再次明确说明它们。此代码假定工作簿是当前活动的工作簿,如果不是,则必须使用工作簿名称设置变量。
此外,看起来您不需要“With”块中的偏移功能的“rfound”部分。 。 。这就是“With”的用武之地。这只是一件小事,但像这样无意义的代码只会让你更加头痛,所以我的建议是把它拿出来。
我没有将其加载到VBA IDE中,因此请仔细检查拼写错误。谢谢!
更新:
在阅读完评论后,我仔细研究了您的代码以及您正在尝试做什么。看起来你正试图将textbox1的值(无论可能是什么......如果你稍微解释一下这会有所帮助)放入一个偏离用户在combobox1中定义的搜索结果位置的单元格中。 nextrow变量位于行偏移参数内,但该位置已经是您想要的位置。尝试更改此内容:
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”。看看这是否有效,如果是,你可能想要一起删除newrow变量。
祝你好运,让我们知道它是怎么回事。