2015-04-03 107 views
0

我有一個用戶窗體,其中有許多文本框和一個組合框,組合框的值來自Excel工作表。我想要的是如果單元格A,F,J,K爲空,我希望它們通過文本框手動輸入(如果可用),則應該在文本框中看到它們。請查找代碼。如果文本框爲空,則使用文本框爲單元格添加值

Private Sub cbox5_Change() 
    Dim r As Long 
    Dim wks As Worksheet 
    Set wks = Worksheets("Sheet2") 
    r = cbox5.ListIndex + 2 
    On Error Resume Next 
    If wks.Cells(r, "R") = "" Then 
     txt8.Value = wks.Cells(r, "N") 
    Else 
     txt8.Value = wks.Cells(r, "R") 
    End If 
    txt10.Value = wks.Cells(r, "F") 
    txt11.Value = wks.Cells(r, "A") 
    txt16.Value = wks.Cells(r, "J") 
    txt17.Value = wks.Cells(r, "K") 
    If cbox5.Value = "" Then 
     Sheets("Sheet2").Select 
     Range("A65536").Select 
     Selection.End(xlUp).Select 
     ActiveCell.Offset(1).Select 
     Me.txt8.Value = "" 
     Me.txt9.Value = "" 
     Me.txt10.Value = "" 
     Me.txt11.Value = "" 
     Me.txt15.Value = "" 
     Me.txt16.Value = "" 
    End If 
End Sub 

此外,我無法看到組合框中的值,直到userform被關閉並再次打開。任何人都可以讓我知道什麼可能會導致這個問題?我需要在哪裏更改代碼?

我無法獲得此代碼工作:

If wks.Cells(r, "D") = "" Then 
    wks.Cells(r, "D").Value = Me.txt9.Value 
Else 
    txt9.Value = wks.Cells(r, "D") 
End If 
+0

根據您的ComboBox是'cbox5'的假設,我沒有看到這個代碼中的任何地方,你正在分配任何東西。因此,沒有理由改變組合框的值。 – FreeMan 2015-04-03 12:53:49

+0

@Freeman這是cbox5的代碼, 'With Worksheets(「Sheet2」) cbox5.List = .Range(「I2:I150」&.Range(「I」&.Rows.Count).End(xlUp) .Row).Value End With' – user2842252 2015-04-03 12:58:17

+0

在評論中閱讀代碼非常困難。編輯您的原始帖子,將它放在適當的位置,並詳細說明您可能收到的錯誤消息以及它們出現在哪一行。 – FreeMan 2015-04-03 13:00:11

回答

0

它看起來對我像你在OnChange事件的組合框填充組合框。您的用戶將無法從cbox5中選擇任何內容,因爲它裏面什麼也沒有,所以它永遠不會被觸發。您需要將代碼填入InitializeActivate事件中的組合框中。

+0

該代碼先前在Userform_Initialize事件中,但問題仍然存在,即使I cell中有一些數據,我不得不關閉並再次打開Userform。 – user2842252 2015-04-03 13:34:05