在EXCEL中如何用VB控制单元格下移,并能判断当条件满足时相加
具体是这样的,在EXCEL中做了一个库存,当点”入库”按钮时,”库存”列自动与”预入数”相加.但现在的问题是下列的代码过多,达几百行,这样电脑在计算时速度很慢.所以现在想...
具体是这样的,在EXCEL中做了一个库存,当点”入库”按钮时,”库存”列自动与”预入数”相加.
但现在的问题是下列的代码过多,达几百行,这样电脑在计算时速度很慢.所以现在想通过更改VB的代码,使其”智能”化,即判断F列是否为0,当为0时不进行运算,不为0时,进行计算.
Sub 出库_单击()
Range("d48").Value = Range("d48").Value + Range("e48").Value
Range("d49").Value = Range("d49").Value + Range("e49").Value
Range("d50").Value = Range("d50").Value + Range("e50").Value
Range("d51").Value = Range("d51").Value + Range("e51").Value
Range("d52").Value = Range("d52").Value + Range("e52").Value
Range("d53").Value = Range("d53").Value + Range("e53").Value
End sub
以上代码的目的是当按下”入库”按钮后,D列数据与F列数据自动相加,当F列数据归0时,D列数据仍然为相加后的数据,不会因F列的改变而在次改变(除非在次按下”入库”按钮)
D48=1000
如果F48单元格<>0,则进行相加, D48=D48+F48,
如果F48=0,则不计算,相下查找即F49,F50,F51…….,当在次发现某个单元格<>0时,则相加
如F52=3,则计算D52=D52+F52,
Dim n As Integer
n=100
Private Sub Command9_Click()
For i = 1 To 100
If Cells(f, i) <> 0 Then
Cells(d, i) = Cells(d, i) + Cells(f, i)
End If
Next
End Sub
为什么在执行上面的代码时VB提示:缺少END SUB ? 展开
但现在的问题是下列的代码过多,达几百行,这样电脑在计算时速度很慢.所以现在想通过更改VB的代码,使其”智能”化,即判断F列是否为0,当为0时不进行运算,不为0时,进行计算.
Sub 出库_单击()
Range("d48").Value = Range("d48").Value + Range("e48").Value
Range("d49").Value = Range("d49").Value + Range("e49").Value
Range("d50").Value = Range("d50").Value + Range("e50").Value
Range("d51").Value = Range("d51").Value + Range("e51").Value
Range("d52").Value = Range("d52").Value + Range("e52").Value
Range("d53").Value = Range("d53").Value + Range("e53").Value
End sub
以上代码的目的是当按下”入库”按钮后,D列数据与F列数据自动相加,当F列数据归0时,D列数据仍然为相加后的数据,不会因F列的改变而在次改变(除非在次按下”入库”按钮)
D48=1000
如果F48单元格<>0,则进行相加, D48=D48+F48,
如果F48=0,则不计算,相下查找即F49,F50,F51…….,当在次发现某个单元格<>0时,则相加
如F52=3,则计算D52=D52+F52,
Dim n As Integer
n=100
Private Sub Command9_Click()
For i = 1 To 100
If Cells(f, i) <> 0 Then
Cells(d, i) = Cells(d, i) + Cells(f, i)
End If
Next
End Sub
为什么在执行上面的代码时VB提示:缺少END SUB ? 展开
3个回答
展开全部
代码简单的。不过除了用代码以外,还有不用代码的方法啊。
Sub ThanksME
Application.ScreenUpdating = false
Range("D48").select
While Selection <> ""
if(Selection <> 0)Then
Selection = Selecton + Selection.offset(0,1)
end if
Selection.offset(1).select
Wend
Application.ScreenUpdating = true
End Sub
你试试在 E48 单元中输入:=IF(D48<>0,D48+E48,D48)
然后,再用自动填充功能就可以把值算出来了。
最后,把 E:E 复制下来,到 D:D 处“选择性粘贴”选值粘贴。不就OK了嘛。要VB干嘛。
Sub ThanksME
Application.ScreenUpdating = false
Range("D48").select
While Selection <> ""
if(Selection <> 0)Then
Selection = Selecton + Selection.offset(0,1)
end if
Selection.offset(1).select
Wend
Application.ScreenUpdating = true
End Sub
你试试在 E48 单元中输入:=IF(D48<>0,D48+E48,D48)
然后,再用自动填充功能就可以把值算出来了。
最后,把 E:E 复制下来,到 D:D 处“选择性粘贴”选值粘贴。不就OK了嘛。要VB干嘛。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
for R = 1 to 100
if cells(R ,6) <> 0 then cells(R ,4) + cells(R ,6)
next R
if cells(R ,6) <> 0 then cells(R ,4) + cells(R ,6)
next R
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询