在For ... Next循环中使用变量在Excel中指定R1C1

时间:2017-09-22 16:03:01

标签: excel vba excel-vba

我正在尝试运行For Next循环,从特定单元格中提取特定数字,以便使用Excel计算时间卡的总小时数(这是我用它的最佳程序)。我无法弄清楚如何做到这一点,因为我正在使用R1C1,因为我正在运行位置的计数。我并不是对这种特殊处理方法的隐藏,但它的一个变体在Access中起作用(但由于原因,我不能使用Access)。

附件是我正在使用的代码段。

For Weekday = 11 To 17  'Determine the day of the week by Row Reference (R1C1 format)
    For DayValue = 29 To 34     'Determin time input (Call, Meal In, Meal Out, Wrap, etc.) for day of the week
        WrkTimes(DayValue) = ActiveSheet.Cells.FormulaR1C1 = "R" & (Weekday) & "C" & (DayValue) 'Select the correct time input
    Next DayValue   'Process the next time input    
    TotHrs(Weekday) = WrkTimes(34) - WrkTimes(29) - (WrkTimes(31) - WrkTimes(30)) - (WrkTimes(33) - WrkTimes(32))   'Calculate total hours for the day
    ActiveSheet.Cells(Weekday, 37) = TotHrs(Weekday)    'Display total hours for the day in the proper cell

是的,在这个循环的底部有一个Next命令,我在这个和结尾之间只有其他不相关的代码。我在DayValue行上收到错误

2 个答案:

答案 0 :(得分:0)

我的第一个建议是使用

Cells(r, c) 

然后你可以输入你的偏移量,如

Cells(r-3, c)

您只需要存储r和c值,这些值已经作为Weekday(r)和DayValue(c)完成。

如果您正在使用循环查看内容:

Cells(Weekday, DayValue).Value

这将给出您引用的单元格中的值。

修改

我的评论建议:

Dim i as Long, j as Long, k as Long
For Weekday = 11 To 17
    i = Cells(Weekday, 34).Value 'Should allow you to have an output for each row
    For DayValue = 33 To 29 Step -1 'Saving column 34 outside of the dayvalue loop
        j = i
        k = Cells(Weekday, DayValue).Value
        i = j - k
    Next DayValue
    Cells(Weekday, 37).Value = i
Next Weekday

答案 1 :(得分:0)

因此,为了澄清为什么我继续将下标超出范围(在遵循Scott和Phylogenesis的建议之后),事实证明我的工作日(x)设置为7时应该设置为17。 / p>

感谢您的帮助。