- Range("D:D") 中的红色颜色框是参考的值
Me.ComboBox1.Value
- 黄色和绿色分别是来自
Me.TextBox1
和的数据Me.TextBox2
。在 Me 中,Me.TextBox1
和Me.TextBox2
中的值将根据在Me.ComboBox1
. - 因此,在这种情况下,我希望根据用户选择的红色输入黄色和绿色。
- 另一个额外的事情是我
.OffSet(1,0).EntireRow.Insert
为最后一行黄色和绿色数据放了一个
2 回答
这应该这样做:
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
我将书籍和工作表分配给一个变量以获得更高的可靠性,但如果您愿意,您可以再次明确说明它们。此代码假定工作簿是当前活动的工作簿,否则您必须使用工作簿名称设置变量。
此外,看起来您不需要“With”块中偏移函数的“rfound”部分。. . 这就是“With”的用途。这只是一件小事,但像这样毫无意义的代码只会让你更加头疼,所以我的建议是把它拿出来。
我还没有将它加载到 VBA IDE 中,所以请仔细检查拼写错误。谢谢!
更新:
阅读您的评论后,我仔细查看了您的代码以及您正在尝试做什么。看起来您正在尝试将 textbox1 的值(无论可能是什么......如果您稍微解释一下这部分会有所帮助)到一个与用户在组合框 1 中定义的搜索结果位置偏移的单元格中。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 变量。
祝你好运,让我们知道进展如何。