Я не смог точно решить вашу проблему, но я создал рабочий пример. Если вы правильно указали свою диаграмму и диапазон данных, он должен работать для вас.
У меня есть два диапазона на моем листе, один с именем MapInputNE, а другой MapInputSW. У меня есть две диаграммы типа «Заполненный 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
Каждая из этих подпрограмм определяет диаграмму и диапазон данных и передает их в первую подпрограмму, а соответствующая диаграмма диаграммы переключается на указанный источник данных.
Хорошо работает с обеими картами, хотя я показал здесь только встроенную.