2017-04-04 84 views
0

我正在使用Excel 2013 vba。我有2種形式:frmMain和。在frmMain中,我只有一個帶有代碼UserForm1.show的cmd按鈕,但是我無法打開UserForm1。我無法打開主用戶表單中的用戶表單

這裏是我的代碼:

Private Sub Workbook_Open() 

Application.Visible = False  'This code hides the workbook 
UserForm1.Show     'Brings the UserForm 

End Sub 

「模塊1代碼..

Sub hidden() 

Sheet1.Visible = False 

End Sub 

UserForm1

代碼UserForm1的截圖...

'Application.ScreenUpdating = False 

'Sheets("Sheet1").Visible = True 

Private Sub cmbCalltype_Change() 

'==========sayon rani dri======= 

'If cmbCalltype.List(cmbCalltype.ListIndex) = "Training" Then 
' cmbGc.Enabled = False 
'ElseIf cmbCalltype.List(cmbCalltype.ListIndex) = "Wrong GC" Then 
' cmbGc.Enabled = False 
'ElseIf cmbCalltype.List(cmbCalltype.ListIndex) = "Wrong Number" Then 
' cmbGc.Enabled = False 
'ElseIf cmbCalltype.List(cmbCalltype.ListIndex) = "Resident" Then 
' cmbGc.Enabled = False 
'Else 
' cmbGc.Enabled = True 
'End If 

If cmbCalltype.Text = "Training" Then 
    cmbGc.Enabled = False 

ElseIf cmbCalltype.Text = "Resident" Then 
    cmbGc.Enabled = False 

ElseIf cmbCalltype.Text = "Wrong GC" Then 
    cmbGc.Enabled = False 

ElseIf cmbCalltype.Text = "Wrong Number" Then 
    cmbGc.Enabled = False 
Else 
    cmbGc.Enabled = True 

End If 

End Sub 

Private Sub cmdApplicationshow_Click() 

Application.Visible = True  'This will open the excel file... 

End Sub 

Private Sub cmdClear_Click() 

'==========sayon rani dri======= 

'Call UserForm_Initialize 

txtName.Value = "" 
cmbCalltype.Value = "" 
cmbGc.Value = "" 
cmbVisit.Value = "" 

End Sub 

Private Sub cmdHidden_Click() 

Application.Visible = False  'This will open the excel file... 

End Sub 

Private Sub cmdMove_Click() 

'Dim emptyRow As Long 

'Sheet1.Activate  'Make Sheet1 active 

'emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1 

'Transfer information 
'Cells(emptyRow, 1).Value = txtName.Value 
'Cells(emptyRow, 2).Value = cmbCalltype.Value 
'Cells(emptyRow, 3).Value = cmbVisit.Value 

With Sheet1 
     With .Range("A" & .Rows.Count).End(xlUp) 
     .Offset(1).Resize(1, 4).Value = Array(txtName.Value, cmbCalltype.Value, cmbGc.Value, cmbVisit.Value) 
     End With 

     txtLeasing.Value = Application.CountIf(.Columns(2), "Leasing")  'counting the number of instances leasing text occur 

     txtGc.Value = Application.CountIf(.Columns(3), "Yes") 

     'txtYes.Value = Application.CountIf(.Columns(4), "Yes") 
     'txtNo.Value = Application.CountIf(.Columns(4), "No") 

     txtPercentage.Value = txtGc.Value/txtLeasing.Value * 100 



     ''================== 
     txtVisLeasing.Value = txtLeasing.Value 
     txtTotvisit.Value = Application.CountIf(.Columns(4), "Yes") 

     txtVisitper.Value = txtTotvisit.Value/txtVisLeasing * 100 


End With 

End Sub 


Private Sub UserForm_Initialize() 

'Worksheets("Sheet1").Activate 
'Sheets("Sheet1").Visible = False 


txtName.Value = ""   'Empty Customer 
cmbCalltype.Value = ""  'Empty Call Type 
cmbGc.Value = ""   'Empty GC 
cmbVisit.Value = ""   'Empty Visit 

cmbCalltype.Clear 
With cmbCalltype 
    .AddItem "Leasing" 
    .AddItem "Training" 
    .AddItem "Resident" 
    .AddItem "Wrong GC" 
    .AddItem "Wrong Number" 

End With 

cmbGc.Clear 
With cmbGc 
    .AddItem "Yes" 
    .AddItem "No" 
End With 

cmbVisit.Clear 

With cmbVisit 
    .AddItem "Yes" 
    .AddItem "No" 

End With 
txtName.SetFocus 

End Sub 
+0

你是什麼意思*「無法打開UserForm1」*?在啓動?那是你在你展示的代碼中打開它的唯一地方。 –

回答

0

的是在立場UserForm1調用Workbook_Open()相同的實例UserForm1調用frmMain

  • 如果,然後創建一個模塊,並在聲明Module1UserForm1的實例作爲Public
  • 如果,則在frmMain中聲明表格級別實例UserForm1

像下面的東西。

'frmMain Code 
Dim fUser As UserForm1 

Private Sub CommandButton1_Click() 
    If fUser Is Nothing Then 
    fUser = New UserForm1 
    End If 

    fUser.Show 

End Sub 
+0

嗨Mukul可以將2個文件發送給你..? –

+0

@DylanMecagami,好的。 –