2015-07-03 60 views
0

我是VBA初學者,我一直有這個問題。我有一個工作表,我需要UserForm將客戶端名稱輸入到特定的單元格中。名字應該去的單元格是「B3」。當用戶提交信息時,表格應該清楚,下一個客戶應該在「B4」中,依此類推。問題是我不能使用下一行選項,因爲下一行已經被填入並且需要保持那樣。有沒有辦法開始「B3」,每次用戶輸入時在最後一個單元格中添加一個?謝謝你的幫助!用戶將輸入輸入到特定的單元格中,然後從VBA中從那裏下去

回答

1

根據你想要這樣做的方式,你可以有一個從B3開始的循環檢查它是否爲空。如果它是空的,它會放入信息,如果不是,則增加1到下一行並檢查那些行。循環直到找到空單元。另一種方式,如果你知道行將被統一填充是簡單地使用函數ActiveSheet.UsedRange.Rows.Count這將給你最後一行的數據,然後只是添加1

基本上它會是:

Private Sub CommandButton1_Click() 

Dim I As Long 

Sheets("Sheet1").Activate 
ActiveSheet.Range("B3").Activate 

Do While IsEmpty(ActiveCell.Offset(I, 0)) = False 
    I = I + 1 
Loop 

ActiveCell.Offset(I, 0).Value = ComboBox1.Value 

End Sub 
+0

如何在命令按鈕中設置該循環?對不起,我已經在/ vba中找到了很少的命令,並且都是自學的。 – PRPAWill

+0

謝謝,福爾摩斯,這正是讓我難過的東西。你是救生員。 – PRPAWill

0

您可以使用Ranga對象的End方法。我的意思是,如果你使用set rng = Range(「E3」)。End(xlDown)給你下一個使用過的單元格,但是你有檢查rng.Row是否爲Cel​​ls.Rows.Count(1.048.576)if下面的所有單元格都是空的

0

我剛剛在基本的用戶窗體上使用單個文本框嘗試了這一點,所以需要稍微修改以適合您的需求。

Private Sub TextBox1_Change() 
    Application.EnableEvents = False 
    Cells(LastRow("Sheet1", "B") + 1, 2).Value = TextBox1.Value 
    TextBox1.Value = "" 
    Application.EnableEvents = False  
End Sub 

Public Function LastRow(SheetName As Variant, Col As Variant) As Long 
    Application.Volatile True 

    With ThisWorkbook.Sheets(SheetName) 
     If .Cells(.Rows.Count, Col).Value <> "" Then 
      LastRow = .Rows.Count 
      Exit Function 
     End If 
     LastRow = .Cells(.Rows.Count, Col).End(xlUp).Row 
    End With 
End Function 

此外,請勿使用UsedRange查找最後一行。請參閱Error in finding last used cell in VBA

+0

好吧,所以我試圖以幾種不同的方式來解決這個問題,但我無法運行它。另外,我應該指定客戶端是從組合框輸入的,並且它是一個啓動輸入過程的命令按鈕。 – PRPAWill

相關問題