一起,
我正在尝试创建一个区域地图,以显示每个国家/地区的数据。数据由动态表提供。 我创建了一个图表表并将区域地图插入其中。 图表现在显示了当前国家/地区的数据,但我无法更改数据。 字符串mapInput是正确的,并且还显示了正确的Range。 例如:“ A4293:A4295,BJ4293:BJ4295”
错误1004出现在最后一行。
我也尝试了不使用“ Source:=“ 而且也没有“图表”
l = Split(ws.Cells(lastRowR, lastColR - 2).Address, "$")(1)
mapInput = "A" & lastRowR - 1 - cCount & ":A" & lastRowR - 1 & "," & l &
lastRowR - 1 - cCount & ":" & l & lastRowR - 1
Sheets("map").ChartObjects(1).Chart.SetSourceData Source:=ws.Range(mapInput)
运行时错误1004“应用程序定义的错误或对象定义的错误”
答案 0 :(得分:0)
如果使用图表表,请使用以下代码设置数据源:
Dim Cht As Chart
Set Cht = Charts("map")
Cht.SetSourceData ws.Range(mapInput)
确保mapInput
代表正确的数据范围
注意:图表表不包含ChartsObject
集合
答案 1 :(得分:0)
我没有解决您的确切问题,但是我建立了一个有效的示例。如果您正确指定了图表和数据范围,那么它应该对您有用。
我的工作表上有两个范围,一个名为MapInputNE,另一个名为MapInputSW。我有两个“ Filled Mpa”类型图表,一个嵌入在工作表中,另一个移到图表中。这些地图最初是从MapInputNE绘制数据的。
我写了一个通用例程来更改图表数据,无论它在哪里。向其提供图表和数据范围,并更新图表,并调整投影和映射级别。
Sub UpdateChartData(cht As Chart, rng As Range)
With cht
.SetSourceData Source:=rng
With .SeriesCollection(1)
.GeoProjectionType = xlGeoProjectionTypeMercator
.GeoMappingLevel = xlGeoMappingLevelDataOnly
End With
End With
End Sub
然后,我制定了一些特定的例程来更改嵌入式地图或海图图纸以使用新英格兰或西南数据:
Sub UpdateEmbeddedChartDataNE()
Dim cht As Chart
Set cht = Worksheets("Sheet1").ChartObjects(1).Chart
Dim rng As Range
Set rng = Worksheets("Sheet1").Range("MapInputNE")
UpdateChartData cht, rng
End Sub
Sub UpdateEmbeddedChartDataSW()
Dim cht As Chart
Set cht = Worksheets("Sheet1").ChartObjects(1).Chart
Dim rng As Range
Set rng = Worksheets("Sheet1").Range("MapInputSW")
UpdateChartData cht, rng
End Sub
Sub UpdateChartSheetDataNE()
Dim cht As Chart
Set cht = Charts(1)
Dim rng As Range
Set rng = Worksheets("Sheet1").Range("MapInputNE")
UpdateChartData cht, rng
End Sub
Sub UpdateChartSheetDataSW()
Dim cht As Chart
Set cht = Charts(1)
Dim rng As Range
Set rng = Worksheets("Sheet1").Range("MapInputSW")
UpdateChartData cht, rng
End Sub
这些例程中的每个例程都定义了图表和数据范围,并将它们馈入第一个例程,然后相应的图表切换到所指示的数据源。
虽然我只在此处显示了嵌入式地图,但是在两张地图上都能很好地工作。