簡體   English   中英

如何使用戶窗體輸出在Excel VBA中的列的末尾

[英]How to make User Form Output at the end of a column in Excel VBA

我試圖使此用戶窗體輸出選項按鈕的結果在列的末尾。 最初,我嘗試在主模塊中的for next循環中使用相同的i,但即使將其標注為public,用戶窗體也無法識別該變量。 有任何想法嗎?

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

您需要在該列中找到最后一行,然后對其進行寫入。 這是一個示例( 未經測試 )。 您可以在此處閱讀有關查找最后一行的更多信息。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM