求VBA高手优化for循环代码
时间:2011-09-09
来源:互联网
For l_lonY = 8 To l_lonLastY
l_booFlag = False
l_strFeeTyp = Trim(Sheets(CNT_SHEET_YUN).Cells(l_lonY, 2).Value)
If l_strFeeTyp <> "" Then
l_strCarNum = Trim(Sheets(CNT_SHEET_YUN).Cells(l_lonY, 5).Value)
l_strTransTyp = Trim(Sheets(CNT_SHEET_YUN).Cells(l_lonY, 7).Value)
l_strVbeln = Trim(Sheets(CNT_SHEET_YUN).Cells(l_lonY, 3).Value)
l_strLfimg = Trim(Sheets(CNT_SHEET_YUN).Cells(l_lonY, 4).Value)
End If
If Trim(Sheets(CNT_SHEET_YUN).Cells(l_lonY, 12).Value) = "" Then
l_douWight = 0
Else
l_douWight = CDbl(Trim(Sheets(CNT_SHEET_YUN).Cells(l_lonY, 12).Value))
End If
If Trim(Sheets(CNT_SHEET_YUN).Cells(l_lonY, 14).Value) = "" Then
l_douTransFee = 0
Else
l_douTransFee = CDbl(Trim(Sheets(CNT_SHEET_YUN).Cells(l_lonY, 14).Value))
End If
l_strVbeln = Trim(Sheets(CNT_SHEET_YUN).Cells(l_lonY, 3).Value)
aa = Trim(Sheets(CNT_SHEET_YUN).Cells(l_lonY, 12).Value)
bb = Trim(Sheets(CNT_SHEET_YUN).Cells(l_lonY, 14).Value)
l_strNextVbeln = Trim(Sheets(CNT_SHEET_YUN).Cells(l_lonY + 1, 3).Value
If l_strFeeTyp = "代垫" Or l_strFeeTyp = "自提" Or l_strFeeTyp = "我方承担" Or l_strFeeTyp = "调整" Then
If fm_getEachItem(l_strFeeTyp, l_strVbeln, obSAPExpTable15_TMP, l_lonY) = False Then
MsgBox "第" & l_lonY & "行的系统提单信息与上传模板中填写的不一致。上传失败。"
executeFunZTBWRG013 = CNT_RFC_ERR1
Exit Function
Else
l_intIndex = l_intIndex + 1
obSAPExpTable13.APPENDROW
'集团
obSAPExpTable13.Columns("MANDT").Value(l_intIndex) = CNT_STR_CLIENT
' obSAPExpTable13.Columns("MANDT").Value = CNT_STR_CLIENT '
'公司代码
obSAPExpTable13.Columns("BUKRS").Value(l_intIndex) = g_strCop '用户登录输入的公司代码
'会计年度
obSAPExpTable13.Columns("GJAHR").Value(l_intIndex) = l_intYear
'期间
obSAPExpTable13.Columns("RPMAX").Value(l_intIndex) = l_intMonth
'科目号
obSAPExpTable13.Columns("SAKNR").Value(l_intIndex) = "7000002"
'备选科目号
obSAPExpTable13.Columns("LOKKT").Value(l_intIndex) = "6601"
'Sheet中的上传行号
obSAPExpTable13.Columns("ZESHROW").Value(l_intIndex) = l_lonY
'运费性质(编号)
obSAPExpTable13.Columns("ZTRID").Value(l_intIndex) = fm_checkTyp(l_strFeeTyp)
'运费性质(描述)
obSAPExpTable13.Columns("ZTRTP").Value(l_intIndex) = l_strFeeTyp
'更新人
obSAPExpTable13.Columns("ERNAM").Value(l_intIndex) = g_strUsr
'更新日期
obSAPExpTable13.Columns("ERDAT").Value(l_intIndex) = g_strSysDatum
'更新时间
obSAPExpTable13.Columns("ERTIM").Value(l_intIndex) = g_strSysUzeit
'提单
obSAPExpTable13.Columns("VBELN").Value(l_intIndex) = l_strVbeln
'提单行项目
obSAPExpTable13.Columns("POSNR").Value(l_intIndex) = l_strPosnr
'车号
obSAPExpTable13.Columns("ZTRAID").Value(l_intIndex) = l_strCarNum
End If
If l_strFeeTyp <> "调整" Then
'计费重量
obSAPExpTable13.Columns("TSL01").Value(l_intIndex) = aa
'计费重量单位
obSAPExpTable13.Columns("VRKME").Value(l_intIndex) = "MT"
Else
'计费重量
obSAPExpTable13.Columns("TSL01").Value(l_intIndex) = 0
'计费重量单位
obSAPExpTable13.Columns("VRKME").Value(l_intIndex) = ""
End If
'合计
obSAPExpTable13.Columns("TSL02").Value(l_intIndex) = bb
'合计金额单位
obSAPExpTable13.Columns("WAERS").Value(l_intIndex) = "CNY" l_booNflag = False
End If
End If
End If
End If
Next
此代码是将excel里的记录一行一行赋值给obSAPExpTable13.Columns。如果数据量很大(5000条以上)时。这个循环相当的慢,有没有能优化下的办法呢?
(注:此程序相当于个接口,目的是把excel里的数据上传到我某个系统(SAP系统)的表里去)
l_booFlag = False
l_strFeeTyp = Trim(Sheets(CNT_SHEET_YUN).Cells(l_lonY, 2).Value)
If l_strFeeTyp <> "" Then
l_strCarNum = Trim(Sheets(CNT_SHEET_YUN).Cells(l_lonY, 5).Value)
l_strTransTyp = Trim(Sheets(CNT_SHEET_YUN).Cells(l_lonY, 7).Value)
l_strVbeln = Trim(Sheets(CNT_SHEET_YUN).Cells(l_lonY, 3).Value)
l_strLfimg = Trim(Sheets(CNT_SHEET_YUN).Cells(l_lonY, 4).Value)
End If
If Trim(Sheets(CNT_SHEET_YUN).Cells(l_lonY, 12).Value) = "" Then
l_douWight = 0
Else
l_douWight = CDbl(Trim(Sheets(CNT_SHEET_YUN).Cells(l_lonY, 12).Value))
End If
If Trim(Sheets(CNT_SHEET_YUN).Cells(l_lonY, 14).Value) = "" Then
l_douTransFee = 0
Else
l_douTransFee = CDbl(Trim(Sheets(CNT_SHEET_YUN).Cells(l_lonY, 14).Value))
End If
l_strVbeln = Trim(Sheets(CNT_SHEET_YUN).Cells(l_lonY, 3).Value)
aa = Trim(Sheets(CNT_SHEET_YUN).Cells(l_lonY, 12).Value)
bb = Trim(Sheets(CNT_SHEET_YUN).Cells(l_lonY, 14).Value)
l_strNextVbeln = Trim(Sheets(CNT_SHEET_YUN).Cells(l_lonY + 1, 3).Value
If l_strFeeTyp = "代垫" Or l_strFeeTyp = "自提" Or l_strFeeTyp = "我方承担" Or l_strFeeTyp = "调整" Then
If fm_getEachItem(l_strFeeTyp, l_strVbeln, obSAPExpTable15_TMP, l_lonY) = False Then
MsgBox "第" & l_lonY & "行的系统提单信息与上传模板中填写的不一致。上传失败。"
executeFunZTBWRG013 = CNT_RFC_ERR1
Exit Function
Else
l_intIndex = l_intIndex + 1
obSAPExpTable13.APPENDROW
'集团
obSAPExpTable13.Columns("MANDT").Value(l_intIndex) = CNT_STR_CLIENT
' obSAPExpTable13.Columns("MANDT").Value = CNT_STR_CLIENT '
'公司代码
obSAPExpTable13.Columns("BUKRS").Value(l_intIndex) = g_strCop '用户登录输入的公司代码
'会计年度
obSAPExpTable13.Columns("GJAHR").Value(l_intIndex) = l_intYear
'期间
obSAPExpTable13.Columns("RPMAX").Value(l_intIndex) = l_intMonth
'科目号
obSAPExpTable13.Columns("SAKNR").Value(l_intIndex) = "7000002"
'备选科目号
obSAPExpTable13.Columns("LOKKT").Value(l_intIndex) = "6601"
'Sheet中的上传行号
obSAPExpTable13.Columns("ZESHROW").Value(l_intIndex) = l_lonY
'运费性质(编号)
obSAPExpTable13.Columns("ZTRID").Value(l_intIndex) = fm_checkTyp(l_strFeeTyp)
'运费性质(描述)
obSAPExpTable13.Columns("ZTRTP").Value(l_intIndex) = l_strFeeTyp
'更新人
obSAPExpTable13.Columns("ERNAM").Value(l_intIndex) = g_strUsr
'更新日期
obSAPExpTable13.Columns("ERDAT").Value(l_intIndex) = g_strSysDatum
'更新时间
obSAPExpTable13.Columns("ERTIM").Value(l_intIndex) = g_strSysUzeit
'提单
obSAPExpTable13.Columns("VBELN").Value(l_intIndex) = l_strVbeln
'提单行项目
obSAPExpTable13.Columns("POSNR").Value(l_intIndex) = l_strPosnr
'车号
obSAPExpTable13.Columns("ZTRAID").Value(l_intIndex) = l_strCarNum
End If
If l_strFeeTyp <> "调整" Then
'计费重量
obSAPExpTable13.Columns("TSL01").Value(l_intIndex) = aa
'计费重量单位
obSAPExpTable13.Columns("VRKME").Value(l_intIndex) = "MT"
Else
'计费重量
obSAPExpTable13.Columns("TSL01").Value(l_intIndex) = 0
'计费重量单位
obSAPExpTable13.Columns("VRKME").Value(l_intIndex) = ""
End If
'合计
obSAPExpTable13.Columns("TSL02").Value(l_intIndex) = bb
'合计金额单位
obSAPExpTable13.Columns("WAERS").Value(l_intIndex) = "CNY" l_booNflag = False
End If
End If
End If
End If
Next
此代码是将excel里的记录一行一行赋值给obSAPExpTable13.Columns。如果数据量很大(5000条以上)时。这个循环相当的慢,有没有能优化下的办法呢?
(注:此程序相当于个接口,目的是把excel里的数据上传到我某个系统(SAP系统)的表里去)
作者: luoping007 发布时间: 2011-09-09
用EXCEL本身就慢,试下用ACCESS或SQL SERVER
作者: xiaoyao961 发布时间: 2011-09-09
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28