|
楼主 |
发表于 2009-3-28 22:40
|
显示全部楼层
原帖由 anjing572 于 2008-10-14 18:59 发表
楼主应该在作几个例子吗
感谢朋友们的支持!继续期待朋友们的关注,也欢迎共同交流和进行VBA开发!
下面的例子是:封装工作表事件 Worksheet_SelectionChange 下的代码。
'工作表事件代码为:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim r As Long, c As Integer
r = Target.Row
c = Target.Column
If c = 2 Then
Cells(r, c).Offset(, 2).FormulaR1C1 = "=IF(RC[-1]>0,ROUND(0.00005806186*RC[-3]^1.9553351*RC[13]^0.89403304*RC[-2],4),"""")"
MsgBox "写公式"
End If
End Sub
封装为DLL的源代码,封装成 Test.dll (其中工程名为Test,类名为 T):
Sub mySheet_SelectionChange(EApp As Excel.Application, r As Long, c As Integer)
Dim wb As Excel.Workbook, sh As Excel.Worksheet
Set wb = EApp.ThisWorkbook
Set sh = wb.ActiveSheet
If c = 2 Then
sh.Cells(r, c).Offset(, 2).FormulaR1C1 = "=IF(RC[-1]>0,ROUND(0.00005806186*RC[-3]^1.9553351*RC[13]^0.89403304*RC[-2],4),"""")"
MsgBox "写公式"
End If
End Sub
请比较以上两个代码的区别和联系。
调用时的代码:
标准模块中定义语句为:
Public T1 As New Test.T
sheet2中的工作表代码为:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim r As Long, c As Integer
r = Target.Row
c = Target.Column
T1.mySheet_SelectionChange Application, r, c
End Sub
附加说明以下两个常用到的问题--------------------------------------------------------------
'====加载与卸载引用的语句========================================================
shell "Regsvr32 /u /s " & Chr(34) & ThisWorkBook.path & "\test.dll"& Chr(34) '卸载引用的Dll
shell "Regsvr32 /s " & Chr(34) & ThisWorkBook.path & "\test.dll"& Chr(34) '加载引用的Dll
/s 表示不出现对话框
'=========================================================
怎样去掉"工程-引用"中曾经引用的自制的DLL历史记录?
在注册表的 HKEY_CLASSES_ROOT\TypeLib\ 分支中查找“数据”等于“Test”(需要删掉的历史记录),然后会找到一个键值,该键值的数据等于“Test”,看看这个分支下面的数据,是否包含你DLL的位置等信息,如果确定。则删除这个键值所在HKEY_CLASSES_ROOT\TypeLib\下的{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}分支。(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx根据你的实际情况是不同的16进制)
[ 本帖最后由 GoodFortune 于 2009-3-28 22:45 编辑 ] |
评分
-
1
查看全部评分
-
|