对于任何有兴趣的人,这对我来说都适用。我认为我之前遇到的问题是我使用的是.select,这导致了问题
Public Sub updateChart()
'搜索今天的日期并选择过去12个月的所有内容
Dim month
Dim year
Dim stringToFind
Dim newRange
Dim foundString
Dim newRange1
Dim newrange2
'为月份和年份分配值
month = VBA.DateTime.month(Date)
year = VBA.DateTime.year(Date)
'搜索等于月+年变量的字符串
stringToFind = month & "/" & year
'声明您将查找月份和年份的范围
Set newRange = Worksheets("Sheet1").Range("C16:Z16")
'搜索月份和年份
Set foundString = newRange.Find(stringToFind)
'找到正确的日期后,将范围调整为新的数据源 - 必须分两个阶段执行此操作,因为无法在调整大小时使用 - 编号
Set newRange1 = foundString.Offset(0, -12)
Set newrange2 = newRange1.Resize(2, 12)
'使用新数据源更新图表
Worksheets("Sheet2").ChartObjects("chartName").Chart.SetSourceData
Source:=newrange2
End Sub
Public Sub updateChart()
' Searches for today's date and selects everything for the last 12 months
Dim rgFound As Range
Dim month
Dim year
Dim stringToFind
Dim newRange
Dim newRange1
Dim newRange2
month = VBA.DateTime.month(Date)
year = VBA.DateTime.year(Date)
stringToFind = month & "/" & year
Worksheets("Sheet1").Activate
Set rgFound = Worksheets("Sheet1").Range("C16:z17").Find(stringToFind)
Set newRange = rgFound.Offset(0, -12)
Set newRange1 = newRange.Resize(2, 12)
newRange1现在在第16行中保存了一系列日期(正如文本所以我的发现有效)和第17行中的相应值
Charts("Chart1").SetSourceData Source:=newRange1
我正在尝试将源数据设置为chart1的newRange1,但它返回一个错误:下标超出范围。该图表与存储在newRange1中的信息位于不同的表格中。我不确定如何将newRange1设置为chart1的新源数据 - 非常感谢任何帮助!
End Sub