【发布时间】:2016-03-17 21:02:22
【问题描述】:
这里我有一些关于引用的问题。我有一个项目,我在其中创建了一些工作时间表。这是一个简单的日历,在一列中我有日期,并且该列中的每一行都有有关计划工作时间和实际工作时间的信息。我创建了一个工作簿,其中有配置数据和一些按钮来运行工作表创建过程。每个员工的工作表。所有公式均由宏注入。目标是用一些算法计算加班时间。要完成此操作,我需要检查:
- 每月的第一天检查上个月的最后一天是否为工作日;
- 如果下个月是工作日,则检查当月的最后一天是否为第一天;
所以我通过 vba worksheet.cell.formula 插入了一些公式。当公式引用上一张表时,它会正确计算。但是当我参考下一张表使用公式时,得到#ARG错误。但是如果我用这个公式选择单元格并按 Enter 键,它会正确计算。通过工作表名称和 cell.address 进行引用,但效果相同。
第一步是将 12 个工作表添加到 config Worksheet via
For arkusze = 1 To 12
SheetName = miesiace(arkusze)
Set wkbk = ThisWorkbook
Set wks1 = ThisWorkbook.Worksheets.Add(After:=wkbk.Worksheets(wkbk.Worksheets.Count))
wks1.Name = SheetName
Next arkusze
好的公式是:=daj50pr_new3(C" & dni + 5 & ":G" & dni + 5 & "," & wkbk.Worksheets(arkusze + 1).Cells(Day(pierw_dzien_mies - TimeValue("01:00:01")) + 5, 4).Address(External:=True) & ",D" & dni + 6)
不好的是:=daj50pr_new3(C" & dni + 5 & ":G" & dni + 5 & ",D" & dni + 4 & "," & wkbk.Worksheets(arkusze + 3).Cells(6, 4).Address(External:=True))
最后 12 张工作表通过For Z = 3 To 14
wkbk.Worksheets(Z).Copy After:=wbNew.Sheets(wbNew.Sheets.Count)
next Z
工作表正在使用 FileFormat:=52 保存。
如何解决这个问题?为什么引用下一张表会产生错误?
【问题讨论】:
-
您是否在插入公式时在同一个宏中动态创建这些工作表?
-
您能否在您的问题中显示代码的样子以及实际公式的样子。
-
是的。同样的宏创建工作表并插入公式。
-
第一步是通过
For arkusze = 1 To 12 SheetName = miesiace(arkusze) Set wkbk = ThisWorkbook Set wks1 = ThisWorkbook.Worksheets.Add(After:=wkbk.Worksheets(wkbk.Worksheets.Count)) wks1.Name = SheetName Next arkusze向配置工作表添加12张工作表 -
好的公式是:
daj50pr_new3(C" & dni + 5 & ":G" & dni + 5 & "," & wkbk.Worksheets(arkusze + 1).Cells(Day(pierw_dzien_mies - TimeValue("01:00:01")) + 5, 4).Address(External:=True) & ",D" & dni + 6)
标签: vba excel macros excel-formula