如何在Excel VBA中的列的末尾进行用户表单输出

我试图使这个用户表单输出选项button结果在一列的结尾。 最初我尝试使用相同的我在我的主要模块中的下一个循环,但用户表单将无法识别该variables,即使将其作为公共的尺寸后。 有任何想法吗?

Private Sub cmdOk_Click() If opt1 Then Range(Range(“E3”), Range(“E3”).End(xlDown)) = "None" ElseIf opt2 Then Range(Range(“E3”), Range(“E3”).End(xlDown)) = "3/8 Plain" ElseIf opt3 Then Range(Range(“E3”), Range(“E3”).End(xlDown)) = "1/2 Plain" ElseIf opt4 Then Range(Range(“E3”), Range(“E3”).End(xlDown)) = "1/2 Herringbone" ElseIf opt5 Then Range(Range(“E3”), Range(“E3”).End(xlDown)) = "1/2 Diamond" End If Unload frmLagging End Sub 

您需要find该列中的最后一行,然后写入。 这是一个例子( 未经testing )。 你可以阅读更多有关查找最后一行的信息

 Dim ws As Worksheet Dim lRow As Long Dim rng As Range Set ws = ThisWorkbook.Sheets("Sheet1") With ws '~~> We add 1 so that we get the next empty cell lRow = .Range("E" & .Rows.Count).End(xlUp).Row + 1 Set rng = .Range("E" & lRow) If opt1 Then rng.Value = "None" ElseIf opt2 Then rng.Value = "3/8 Plain" ElseIf opt3 Then rng.Value = "1/2 Plain" ElseIf opt4 Then rng.Value = "1/2 Herringbone" ElseIf opt5 Then rng.Value = "1/2 Diamond" End If End With Unload frmLagging 

另外,这是我最喜欢的iif声明之一,

 Private Sub CommandButton1_Click() Dim Rws As Long, Rng As Range, x Rws = Cells(Rows.Count, "E").End(xlUp).Row Set Rng = Cells(Rws + 1, "E") x = IIf(Opt1, "None", IIf(Opt2, "3/8 Plain", IIf(Opt3, "1/2 Plain", IIf(Opt4, "1/2 Herringbone", IIf(Opt5, "1/2 Diamond", "Nada"))))) Rng = x Unload Me End Sub