所以我目前正在尝试让用户输入一些信息,并根据选择下拉列表中的值将该信息放在特定范围内。例如,我选择星期一,所以我希望信息进入范围A1:A12,但如果他们选择星期二,则进入范围G1:G12。
此外,如果范围已满数据,我希望它告诉用户它已满。没有任何示例代码,但这是一个伪代码示例
Private Sub cbSubmit_Click()
range("A2").Select
ActiveCell.End(xlDown).Select
lastrow = ActiveCell.Row
MsgBox lastrow
If ComboBox1.Value = "Monday" Then
Cells(lastrow + 1, 1).Value = tb1.Text
Cells(lastrow + 1, 2).Value = tb2.Text
End If
If ComboBox1.Value = "Tuesday" Then
range("G2").Select
ActiveCell.End(xlDown).Select
lastrow2 = ActiveCell.Row
Cells(lastrow2 + 1, 1).Value = tb1.Text
Cells(lastrow2 + 1, 2).Value = tb2.Text
End If
End Sub
另外,在上面的代码中,有没有更好的方法来查找空白范围内的最后一个单元格?这个只有在范围内已有数据且情况并非总是如此时才有效。 并检查某种CountA或其他东西,看看范围是否已经充满了数据。提前谢谢!
答案 0 :(得分:1)
我会回答,这样我可以更好地展示代码。
正如我在评论中所说,如果你想检查一个范围内的每个值,你可以这样做:
Dim c
For Each c in Range("A1:A10") 'Whatever your range to check is
If c <> vbNullString Then
'Found Data - not empty
Exit For
End If
Next
如果你只是检查2个单元格,你应该只使用:
If Cells(lastrow2 + 1, 1) <> vbNullString and Cells(lastrow2 + 1, 2) <> vbNullString
如果您只是想将数据添加到列表底部,那么您的代码已经到了最后一行并添加到它...所以每次调用它时都会这样:
ActiveCell.End(xlDown).Select
lastrow2 = ActiveCell.Row
它是最后一行,其余的代码将它添加到最后。
还有一件事。你应该真的取代它:
range("G2").Select
ActiveCell.End(xlDown).Select
lastrow2 = ActiveCell.Row
有了这个:
lastrow2 = range("G2").End(xlDown).Row
您应该尽量避免使用select。
根据我的经验,只有在显示不同的工作表时才需要。