在EXCEL中如何用VB控制单元格下移,并能判断当条件满足时相加

具体是这样的,在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 ?

LZ给的代码给错了,你给的是出库......
dim n as integer
n=val(text1.text) *n 用来放excel表格的行数,因为不知道你有多少行,暂时用这个表示吧
Private Sub Command1_Click()
for i=1 to n
if cells(f,i)<>0 then
cells(d,i)=Cells(d, i)+cells(f,i)
end if
next
End Sub
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-08-03
代码简单的。不过除了用代码以外,还有不用代码的方法啊。

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干嘛。
第2个回答  2009-08-03
for R = 1 to 100
if cells(R ,6) <> 0 then cells(R ,4) + cells(R ,6)
next R
相似回答