我是一般的编程新手。使用VBA我试图遍历范围(“b6:b18”)。通过每次传递,我从值中减去b3
,并在单元格中添加日期,并偏移一列,直到该值小于b3
。基本上我正在尝试设置自动付款。示例:我有5个帐户。 250.36,17.23,96.12,600.00,5.46。我的付款是每月36.12。因此,1/1/13 = 36.12直到第一个帐户<1。 36.12。但每个月必须等于付款。可能会在一个月内从每个帐户中扣除一笔钱。
我无法弄清楚的代码是:
pmt = b3
for each cell in range("b6:b18")
if cell.value > pmt then
activecell.value= cell.value -pmt
activecell =activecell.offset(0,1)
但是当下一个endif关闭时,该代码什么也不做,我不知道如何按顺序显示日期。
答案 0 :(得分:1)
我可以告诉您如何修复上述代码以使其“有效”,但您的整体描述令人困惑。
话虽如此,希望它能让你走上正轨
dim pmt as double
dim i as long
pmt = Range("B3").value
for i = 6 to 16
if Range("B" & i).value > pmt then
range("B" & i).value = range("B" & i).value - pmt
end if
next i
答案 1 :(得分:1)
我不清楚你到底要做什么,也不清楚你的数据是如何布局的,所以我不能给你解决问题的代码,但这里有一些提示可能会让你正确的道路。
Option Explicit
作为Module
的第一行。这将迫使您对所有变量进行十分转换。 ActiveCell
或Select
。有关如何避免这些内容的一些提示,请参阅this answer。 分配对象时,例如设置Range
变量,请使用Set
。
Dim rng as Range
Set rng = Range("B3")
不这样做意味着使用默认属性,即
Dim rng as Range
rng = Range("B3")
和
rng.Value = Range("B3").Value
等同于
使用Range
引用而未指定Worksheet
表示活动工作表。
Set rng = Range("B3")
和
Set rng = ActiveSheet.Range("B3")
等同于
Step Into
(F8
)一次一行地运行代码,如果您提供有关数据布局和预期结果的更多信息,可以提供更多帮助