|
Sub CommandButton1_Click()
tmp = [a65536].End(xlUp).Row
z = InputBox("请输入排列数(<=" & tmp - 1 & "):", "排列组合", tmp - 1)
If z = "" Then Exit Sub
If (Not IsNumeric(z)) Then Exit Sub
z = Int(z)
If z > tmp - 1 Or z < 1 Then
MsgBox "输入参数错误!"
Exit Sub
End If
Set D = CreateObject("scripting.dictionary")
Range("A2:A" & tmp).Select
arr = Selection.Value
r = UBound(arr)
vb = "sub my1(arr):"
st = ""
st1 = ""
For i = 1 To z
st = st & "arr(i" & i & ",1) & "
vb = vb & "for i" & i & " = 1 to " & r & ":"
If i > 1 Then
st1 = st1 & "end if:next:"
st2 = "if"
For j = 1 To i - 1
st2 = st2 & " i" & i & "<> i" & j & " and "
Next
vb = vb & Left(st2, Len(st2) - 4) & " then:"
End If
Next
vb = vb & "d(" & Left(st, Len(st) - 3) & ")=0:" & st1 & "next:end sub:"
Set s = CreateObject("MSScriptControl.ScriptControl")
s.Language = "VBScript"
s.AddCode vb
s.AddObject "d", D
s.Run "my1", arr
Range("B2:B65536").Clear
[b2].Resize(D.Count, 1) = Application.Transpose(D.Keys)
End Sub
Set s = CreateObject("MSScriptControl.ScriptControl")这一行出错了,我的表格是2013的,高手帮我看看,谢谢!!!64位系统
本帖最后由 roych 于 2015-6-3 16:39 编辑
单看这一句是没问题的。问题在于你的VBSCript语句,下面这段供参考(请拿strProgram来对比你的VBScript语句): - Sub test()
- Dim strProgram As String
- Set sc = CreateObject("MSScriptControl.ScriptControl")
- '编写代码
- strProgram = "Sub My1" & vbCrLf & _
- "MsgBox ""运行时设置代码"" ,vbInformation,""我的代码""" & vbCrLf & _
- "End Sub"
- '设置代码语言,并将代码添加到 ScriptControl
- Set sc = CreateObject("ScriptControl")
- sc.Language = "VBScript"
- sc.AddCode strProgram
- '运行代码
- sc.Run "My1"
- End Sub
复制代码只是好端端的干吗用VBScript呢?如果是在Excel或者Access上处理的话,直接调用sub或者function就可以了啊
|
|