2017-04-04 83 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,好的。 –