AAA.XLS的模块1的代码:
Sub 隐藏空行()
dim obj as Object
set obj=createobject("MyDll.MyObj")
set obj.application=application '把APPLICATION对象传进DLL里
call obj.HideRows '把原来直接写在宏里的代码写到这个方法里面
End Sub
我在MYDLL的类MYOBJ里的代码:
public application as object '定义的APPLICATION对象
public sub HideRows()
' 原来宏里隐藏空行的代码:
Dim i As Integer
Dim r As Integer
Worksheets("汇总表").Select
i = 3
Do Until Cells(i, 2) = "合计"
i = i + 1
If Cells(i, 4) = 0 Then
Rows(i).Select
Selection.EntireRow.Hidden = True
End If
If Cells(i, 2) = "合计" Then
Rows(i).Select
Selection.EntireRow.Hidden = False
End If
Loop
end sub
请问以下语句在AAA.XLS里是可以执行的,做成DLL又不成了,是什么原因?
'1、
Private Sub CommandButton2_Click()
Unload Me
Application.Quit
ActiveWorkbook.Close savechanges:=False
End Sub
'2、
Application.CommandBars("定额").Visible = True
Function 公式(Action As String, Key As String, Src As String) As String
Dim Count As Integer, KeyPos As Integer, KeyLen As Integer, SrcAsc As Integer, test As String, offset As Integer, TmpSrcAsc, SrcPos
KeyLen = Len(Key)
'……
End Function
------------------------------
应该改成这样:
AAA.XLS里:
Private Sub Workbook_Open()
dim obj as Object
set obj=createobject("MyDll.MyObj")
set obj.application=application '把APPLICATION对象传进DLL里
call obj.ShowForm2
End Sub
MYDLL的类MYOBJ里:
public application as object '定义的APPLICATION对象
Public sub ShowForm2()
'把APPLICATION和ACTIVEWORKBOOK对象传进FORM里
set userform2.application=application
set userform2.activeworkbook=application.activeworkbook
userform2.show 0
end sub
MYDLL的USERFORM2里:
public application as object
public activeworkbook as object
Private Sub CommandButton2_Click()
Unload Me
Application.Quit
ActiveWorkbook.Close savechanges:=False
End Sub