移至下一个空行以从用户窗体填充单元格

时间:2018-12-31 19:14:24

标签: excel vba excel-vba

我目前正在使用VBA创建一个系统,供学生选择大学课程。我已经为学生创建了一个用户表单``AMForm'',每个班级都有相邻的选项按钮,因此如果他们想注册该班级,他们可以选择``是''或``否''。旁边带有“是”或“否”选项按钮的“机械工程”。

他们提交表单后-我希望能够在电子表格“ AMChoices”上记录他们的选择。该电子表格在上述标题中包含每个类别,因此如果要选择“ x”,我想用“ x”填充单元格。如果选择了“机械工程”选项按钮,它将填充该单元格下面的“ x”。

我正在为多个用户执行此操作,因此我希望它能够填充单元格,然后当下一个用户记录他们的选择时,他们的选择将填充到下一个空行中。

请在下面查看我的代码。

Set CurrentCell = Range("B2").End(xlDown).Offset(1, 0).Select
If Me.optAMIB1 Then
Total = Total + 20
Worksheets("AMChoices").Range("CurrentCell").Value = "X"
End If

2 个答案:

答案 0 :(得分:1)

首先,不需要Select要添加值"X"的单元格。

第二,设置CurrentCell范围对象后,可以直接与CurrentCell.Value2 = "X"一起使用。

尝试以下代码,并在代码内进行更多说明:

Dim AMChoiceSht As Worksheet
Dim CurrentCell As Range
Dim LastRow As Long

' set the worksheet object
Set AMChoiceSht = ThisWorkbook.Worksheets("AMChoices")

With AMChoiceSht
    LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row ' find last row in column B

    Set CurrentCell = .Range("B" & LastRow + 1) ' set the range of next empty row
End With

If Me.optAMIB1 Then
    Total = Total + 20
    CurrentCell.Value2 = "X"
End If

答案 1 :(得分:0)

我假设您有一列用于序列号或卷号,一列用于学生姓名和其他,然后一列用于他们可以选择的每个主题。如果是这种情况,并且您需要在标题下方进行标记,则可以使用以下代码

Dim lastRow as Long
lastRow = Sheet1.Cells( "B" & Rows.Count). End( xlUp ).Offset(1,0).Row

AMChoices.Range("A" & lastRow).Value = <Serial number or Roll number>
AMChoices.Range("B" & lastRow).Value = <Student's Name> 

if Me.optAMIB1 Then
   AMChoices.Range("<Column name of the choice>",lastRow).Value = "X"
End If

如果需要,可以使用with语句。