You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

判断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

使用说明

  1. 先运行绘制地图的宏(如Macro1或Macro2)
  2. 立即运行CheckMapChartSuccess宏,即可得到绘制结果的判断提示

内容的提问来源于stack exchange,提问作者George Costanza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 01:27:11