2017-10-04 32 views
0

我需要做一個VBA程序,它可以把序列號在列表中基於什麼用戶通過rollbox進入一個特定的工作表。把價值在未來的無細胞在特定的表

這是我現在有:

Private Sub ComboBox1_Change() 
    Dim emptyRow As Long 
    Dim MyRange As Range 

    Set MyRange = Range("M:M") 

    emptyRow = Application.WorksheetFunction.CountA(MyRange) + 1 

    If ComboBox1.Value = "BMW" Then Sheets("BMW").Cells(emptyRow, 1).Value = serial_textbox.Text 
    If ComboBox1.Value = "AUDI" Then Sheets("AUDI").Cells(emptyRow, 1).Value = serial_textbox.Text 
    If ComboBox1.Value = "VW" Then Sheets("VW").Cells(emptyRow, 1).Value = serial_textbox.Text 
    If ComboBox1.Value = "Porsche" Then Sheets("Porsche").Cells(emptyRow, 1).Value = serial_textbox.Text 
    If ComboBox1.Value = "Lamborghini" Then Sheets("Lamborghini").Cells(emptyRow, 1).Value = serial_textbox.Text 
End Sub 

不幸的是,它只有在進入A1在彼此的值(在正確的紙張)和它的過去。

+0

'MyRange'沒有被定義爲任何以下參照的片(實際上沒有片材指定),使得可能是問題。你的意思是你想讓結果從M10開始? – SJR

+0

我使用用戶窗體在文本框中輸入序列號,然後通過滾動框(均在同一用戶窗體中)選擇正確的汽車。所以現在我想讓序列號在M10的正確工作表中開始,適用於所有的汽車。 –

回答

0

試試這個。您可以縮短代碼,因爲在每種情況下您都在做同樣的事情,並且您的工作表名稱與組合框列表相對應。

Private Sub ComboBox1_Change() 

Dim emptyRow As Long 

emptyRow = WorksheetFunction.Max(10, Sheets(ComboBox1.Value).Range("M" & Rows.Count).End(xlUp).Row + 1) 

Sheets(ComboBox1.Value).Cells(emptyRow, "M").Value = serial_textbox.Text 

End Sub 
+1

這工作。非常感謝你! –

0

這樣如何:

Private Sub ComboBox1_Change() 

Dim emptyRow As Long 
Dim MyRange As Range 
Dim wsSheet As Excel.Worksheet 

Set wsSheet = ThisWorkbook.Worksheets(ComboBox1.Value) 
Set MyRange = wsSheet.Range("M:M") 

emptyRow = Application.WorksheetFunction.CountA(MyRange) + 1 
wsSheet.Cells(emptyRow, 1).Value = serial_textbox.Text 

End Sub