作者:乔山办公网日期:
返回目录:excel表格制作
不算太难,百可以试试,留你度邮箱。。。
可以了,你自己版再微调下,下权班啦
Sub Test1()
Dim Cnt1, Cnt2 As Integer
Dim i, j, j0, k As Integer
i = 2
j = 2
Cnt1 = Cells(2, 12)
Do While Cnt1 <> ""
j0 = j
Cnt2 = 0
Do While Cnt2 < Cnt1
Cnt2 = Cnt2 + Cells(j, 4)
j = j + 1
Loop
If Cnt2 = Cnt1 Then
For k = j0 To j
Cells(k, 3) = Cells(i, 9)
Next k
End If
If Cnt2 > Cnt1 Then
Cells(i, 13) = "未分配"
j = j - 1
End If
i = i + 1
Cnt1 = Cells(i, 12)
Loop
End Sub
先要在 Visual Basic 编辑器来中添加对“规划求解”的引用
1、先在“Excel 选项”对话框中源启用规划求解加载项。
2、Visual Basic 编辑器百中,单击“度工具”菜单上的“引用”知,然后选择“可使道用的引用”下面的“规划求解”。英文版可能显示是“Solver”。
#If VBA7 Then
Private Declare PtrSafe Function Solv Lib "Solver32.dll" (ByVal object, ByVal app, ByVal wkb, ByVal x As Long) As Long
#Else
Private Declare Function Solv Lib "Solver32.dll" (ByVal object, ByVal app, ByVal wkb, ByVal x As Long) As Long
#End If
Sub tt()
Dim i As Integer
For i = 3 To 100
SolverReset
SolverOk SetCell:="$L$" & i, MaxMinVal:=3, ValueOf:="0", byChange:="$G$" & i & ":$J$" & i
SolverAdd CellRef:="$G$" & i & ":$J$" & i, Relation:=4, formulaText:="整数"
SolverAdd CellRef:="$G$" & i & ":$J$" & i, Relation:=1, formulaText:="10"
SolverAdd CellRef:="$G$" & i & ":$J$" & i, Relation:=3, formulaText:="0"
SolverOk SetCell:="$L$" & i, MaxMinVal:=3, ValueOf:="0", byChange:="$G$" & i & ":$J$" & i
SolverSolve Userfinish = False
Next i
End Sub
上面这段是我以前做的规划代码你比较一下
你前面好像 SolverReset 没有重置
还有最后SolverSolve Userfinish = False 我用的时候是用的FALSE 就是最后规划的时候那个提示我是过滤掉的
还有 在VBA界面要把工具 引用 SOLVER勾上
最后你录制的代码中可能有错误的 VBA录制规划求解的时候 有的代码是错的
上面的ByChange 你自己改过来了其他要还有报错 你再改下看看
我搞了半天没搞请你代码 你把问题描述一下
G21-YANG@163.COM 我给你录代码吧
我测试了一下 加上SolverReset是可以的 就是最后面7a64e78988e69d83338的
Engine:=1, EngineDesc:="GRG Nonlinear"
我这里没这参数 你用的EXCEL 07么 我这里提示找不到参数删除这段我就可以运行了