
Sub test()
Dim rng As Range
Set rng = Selection
Dim f As WorksheetFunction
Set f = WorksheetFunction
If fCountIf(rng, "<0") > 0 Then
If MsgBox("该单元格中的数值小于0,是否需要更正", vbOKCancel) = vbCancel Then Exit Sub
Dim cel As Range
For Each cel In rng
If celValue < 0 Then
If IsNumeric(celValue) Then
cel = celValue 10
End If
End If
Next
End If
End Sub
加个按钮引用上面宏
Sub TEST()
'2a+3b+5c=20
Dim arr(20, 2)
Dim brr(2)
Dim n
n = 0
minf = 20
'进入循环,如果f=0结果存入arr,如果f<>0且f比minf更靠近0,将结果存入brr
For a = 1 To 9
For b = 1 To 6
For c = 1 To 3
f = 20 - 2 a - 3 b - 5 c
If f = 0 Then
arr(n, 0) = a
arr(n, 1) = b
arr(n, 2) = c
n = n + 1
ElseIf Abs(f) < Abs(minf) Then
minf=f
brr(0) = a
brr(1) = b
brr(2) = c
End If
Next c, b, a
'如果有正整数解,写入单元格,如果没有 选择f最靠近0的写入单元格
If n > 0 Then
ss = Int((n + 1) / 2)
Cells(1, 1) = arr(ss - 1, 0)
Cells(1, 2) = arr(ss - 1, 1)
Cells(1, 3) = arr(ss - 1, 2)
Else
MsgBox "没有正整数解"
Cells(1, 1) = brr(0)
Cells(1, 2) = brr(1)
Cells(1, 3) = brr(2)
End If
End Sub
这个代码虽然有点笨,但不论你有多少工作表,都可以一网打尽。
如果仍然觉得删除的力度不够,可以把1 to 10设置为1 to 20应该就没什么问题了
Sub ClearBlank()
ApplicationScreenUpdating = False
For t = 1 To 10
For sh = 1 To SheetsCount
Sheets(sh)Select
For i = 1 To ActiveSheet[h65536]End(xlUp)Row
If ActiveSheetRange("H" & i) = "" Then ActiveSheetRows(i)EntireRowDelete
Next
Next
Next
ApplicationScreenUpdating = True
End Sub
记得加分,总是0分,是不好的,要尊重劳动成果
以上就是关于Excel中VBA程序编写(紧急求助)谢谢大家!全部的内容,包括:Excel中VBA程序编写(紧急求助)谢谢大家!、如何用 VBA 写这个程序、VBA EXCEL 如何写以下的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)