【发布时间】:2017-09-11 19:44:20
【问题描述】:
这里是我遇到困难的所有适用代码(尽管是大型程序的一部分)。我正在制作一个执行仪表板,这些数据汇总到单独的表格上的图表中,查看每月的实用程序使用情况。它应该从可变数量的月份中复制可变数量的实用程序。
整数 m 是月份(我使用 3/March 作为示例),因此从 i=1 到 3 它应该从打开的 ns 复制/粘贴行到 ws。它不断给出错误 1004,所以我认为我错误地调用了我的范围,但我不确定如何/为什么。在我的代码中,错误出现在那个 For 循环中,似乎没有任何行起作用
我需要某种变量,以便以后可以将其汇总到我的图表中。这是一些应该过来的照片(只有标题过来了,它没有使用.Cell()。另外,如果有人知道编码我倒数第二行的正确方法,请分享(虽然不是我的主要挑战)。
fNameAndPath = Application.GetOpenFilename(FileFilter:="Excel Files (*.XLSX), *.XLSX", Title:="Select Trend Income Statement for " & os.Range("B2") & " " & os.Range("B3"))
If fNameAndPath = False Then Exit Sub
'We are opening and pulling data from the selected workbook, so lets turn off screen updating and get to work
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set nb = Workbooks.Open(fNameAndPath)
Set ns = nb.Sheets(1)
m = Month(ws.Range("B1"))
'Build out the Utility Section
Let FindIt = "50100-000"
Set FoundCell = ns.Range("A:A").Find(What:=FindIt)
fRow = FoundCell.Row + 1 'This will be the first Util GL
Let FindIt2 = "50199-999"
Set FoundCell2 = ns.Range("A:A").Find(What:=FindIt2)
fRow2 = FoundCell2.Row - 1 ' This will be the last Util GL
ns.Range("B" & fRow - 1 & ":B" & fRow2 + 1).Copy 'Copy the header range
ws.Range("G16").PasteSpecial Paste:=xlPasteValues
For i = 1 To m
Set cRange = ns.Range(ns.Cells(fRow, 2 + i), ns.Cells(fRow2, 2 + i))
ns.Range(cRange).Copy
Set pRange = ws.Range(ws.Cells(17, 7 + i))
ws.Range(pRange).PasteSpecial Paste:=xlPasteValues
ws.Range(Cells(15, 7 + i)).Formula = "=TEXT(i*30, mmmmm)"
Next i
【问题讨论】:
-
经过 2 多个小时的研究,看起来使用 .Address() 将其转换为 VBA 更容易阅读的 A1 格式。我将用它冲洗它,看看它是否适合我的需要,如果它有效,请更新。
-
哪一行代码出错了?
-
似乎您可以只使用带有过滤器的数据透视表或 PowerPivot
标签: vba excel for-loop charts range