我目前正在使用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
答案 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语句。