2017-04-25 36 views
1

對於大學設置的電子表格任務,我被要求在學生數據庫電子表格中包含一個VBA用戶表單。我已經寫了一個子例程,將新學生輸入到工作表內的一個特定行(AddStudent)中,Vba沒有正確處理此功能的任何明顯原因。下面的行顯示我使用的代碼。使用基本的VBA Userform按鈕編譯錯誤(在大學的第一個VBA項目)

Private Sub CommandButton1_Click() 
If Me.txtStudent.Value = "" Or Me.txtBirth.Value = "" Or Me.txtFirstAdd.Value = "" Or Me.txtSecondAdd.Value = "" Or Me.txtTown.Value = "" Or Me.txtCounty = "" Or Me.txtPost.Value = "" Then MsgBox "Please fill in all details" 
Else 
Call AddStudent 
End If 
End Sub 

這是我的第一VBA的任務,我不是程序員,所以我對什麼可能看起來是一個簡單的問題表示歉意。(還有我有格式化了一點小麻煩,因爲這是我的籌碼的第一篇文章當按下按鈕,我收到以下錯誤消息溢出)

「編譯錯誤;否則沒有IF」

謝謝你的人誰可能有時間幫我在這裏。

+0

選擇代碼的文本,然後按看起來像按鈕兩個大括號,這會將其格式化爲代碼。或者,確保每行至少有4個空格。 –

回答

0

把你MsgBox聲明一個新行:

Private Sub CommandButton1_Click() 
If Me.txtStudent.Value = "" Or Me.txtBirth.Value = "" Or Me.txtFirstAdd.Value = "" Or Me.txtSecondAdd.Value = "" Or Me.txtTown.Value = "" Or Me.txtCounty = "" Or Me.txtPost.Value = "" Then 
    MsgBox "Please fill in all details" 
Else 
    Call AddStudent 
End If 
End Sub 

的理由:VBA讓你做If {condition} Then {Action}作爲一個單獨的語句,但是當你構建你的代碼這種方式,你不能有一個Else條款。這基本上是一個辦法速記:

If {condition} Then 
    {Action} 
Else 
    'Do Nothing 
End If 

另外,如果你有幾個OR條件下,可以提高可讀性與Case語句來代替:

Private Sub CommandButton1_Click() 
    Select Case "" 
     Case Me.txtStudent.Value, Me.txtBirth.Value, Me.txtFirstAdd.Value, Me.txtSecondAdd.Value, Me.txtTown.Value, Me.txtCounty, Me.txtPost.Value 
      MsgBox "Please fill in all details" 
     Case Else 
      Call AddStudent 
    End Select 
End Sub 
+0

只想說一個很大的謝謝。我非常感謝你的快速回復和附加解釋。代碼現在按需要工作。現在改進我的格式:)再次感謝! – David