判断Map Chart是否绘制成功的VBA宏需求(Office 2021)
Excel 2021地图图表绘制判断方案
1. 可成功绘制地图图表的VBA代码
以下代码能正常生成地区地图:
Public Sub Macro1() For i = ActiveSheet.Shapes.Count To 1 Step -1 ActiveSheet.Shapes(i).Delete Next i ActiveSheet.Range("A1").Value = "Region" ActiveSheet.Range("A2").Value = "Germany" ActiveSheet.Range("B1").Value = "Header" ActiveSheet.Range("B2").Value = "99" ActiveSheet.Range("A1:B2").Select ActiveSheet.Shapes.AddChart2(497, xlRegionMap, 111, 222, 600, 300, False).Select End Sub
2. 无法绘制地图图表的VBA代码
以下代码因地区名称不存在("Xermany"为虚构名称),无法生成有效地图:
Public Sub Macro2() For i = ActiveSheet.Shapes.Count To 1 Step -1 ActiveSheet.Shapes(i).Delete Next i ActiveSheet.Range("A1").Value = "Region" ActiveSheet.Range("A2").Value = "Xermany" ' 不存在名为Xermany的地区 ActiveSheet.Range("B1").Value = "Header" ActiveSheet.Range("B2").Value = "99" ActiveSheet.Range("A1:B2").Select ActiveSheet.Shapes.AddChart2(497, xlRegionMap, 111, 222, 600, 300, False).Select End Sub
3. 绘制失败时的提示信息
运行Macro2后,地图图表顶部会弹出如下提示:
Map charts work best with geographical data such as state/province and country/region in separate columns. Check your data and try again.
4. 判断地图图表是否绘制成功的VBA宏(Office 2021标准版适用)
针对Office 2021版本,可通过检查图表内是否存在错误提示文本框来判断绘制结果,代码如下:
Public Sub CheckMapChartSuccess() Dim targetChart As Chart Dim shp As Shape Dim isSuccess As Boolean ' 获取刚创建的目标图表(默认最后添加的形状为新图表) Set targetChart = ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Chart isSuccess = True ' 遍历图表内所有形状,检查是否包含错误提示文本框 For Each shp In targetChart.Shapes If shp.Type = msoTextBox Then ' 匹配提示文本关键词,判断是否绘制失败 If InStr(shp.TextFrame2.TextRange.Text, "Map charts work best with geographical data") > 0 Then isSuccess = False Exit For End If End If Next shp ' 输出判断结果 If isSuccess Then MsgBox "地图图表绘制成功!" Else MsgBox "地图图表绘制失败,请检查地理数据!" End If End Sub
使用说明
- 先运行绘制地图的宏(如Macro1或Macro2)
- 立即运行
CheckMapChartSuccess宏,即可得到绘制结果的判断提示
内容的提问来源于stack exchange,提问作者George Costanza
相关产品推荐
相关产品推荐

