循环有问题。如图红色部分:
1,m是循环变量,不要在循环体内用其他计算方法去改变它,很容易出错。应该另外设立一个变量,比如k
2,h1是循环终值,随着行数增加,这个终值应该增加
3,变量k在小循环后也应该自增一次,才能切换到大循环。
另外,如图蓝色部分,不用每次开关一次数据库,会给数据库带来很大压力。
包括dim声明变量也不用在循环体内反复申明。
按蓝色内容把语句移一下位置。
我不妨给你举一个标准的例子:
Sub test()
start_row = 2
end_row = 11
current_row = start_row
For i = start_row To end_row
For j = 1 To 3
current_row = current_row + 1
Rows(current_row).Insert xlUp
end_row = end_row + 1
Next
current_row = current_row + 1
Next
End Sub
Private iRiQi As Integer, iStr As StringPrivate Sub CommandButton1_Click()
iRiQi = Application.InputBox("输入日期修正值:", "日期修正值", 0, Type:=1)
iStr = Application.InputBox("输入日期修正值:", "日期修正值", "A", Type:=2)
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 And Target.Column = 5 And Target.Row >1 Then
Target.Offset(0, 1) = Date + iRiQi
Target.Offset(0, 2) = IIf(iStr = "", "A", iStr)
End If
End Sub
可以用这个转码网站试一下,C#代码和VB代码互转,但是个别地方肯定还是需要微调的,毕竟不是同一个语言。
http://www.developerfusion.com/tools/convert/vb-to-csharp/
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)