macros改变地图的颜色(国家)

我需要帮助编写这个VBA的工作项目。 我有一个名为所有形状(国家)的地图,我有列U2:U52与国家缩写和列V2:V52与数据。 我需要一个macros来运行“If Then”语句来更改颜色,并根据input的数据循环遍历每个状态(数据行)。

Sub map1() Dim Rng As Range Dim ShapeName As String Dim SHP As Shape ShapeName = "AL" Set Rng = ThisWorkbook.Worksheets("Sheet1").Range("V2") Set SHP = Rng.Parent.Shapes(ShapeName) If Rng.Value <= 1.6 Then SHP.Fill.ForeColor.RGB = RGB(255, 0, 0) 'Red End If If Rng.Value > 1.6 And Rng.Value < 2.4 Then SHP.Fill.ForeColor.RGB = RGB(0, 255, 0) 'Green End If If Rng.Value >= 2.4 Then SHP.Fill.ForeColor.RGB = RGB(255, 255, 0) 'yellow End If End Sub 

它的书写方式只是一种forms,我怎么改变它来运行所有的状态,而不编码它52次?

这是一个简单的循环,应该工作。

 Sub map1() Dim Rng As Range Dim ShapeName As String Dim SHP As Shape For i = 2 to 52 ShapeName = ThisWorkbook.Worksheets("Sheet1").Range("U" & i).Value Set Rng = ThisWorkbook.Worksheets("Sheet1").Range("V" & i) Set SHP = Rng.Parent.Shapes(ShapeName) If Rng.Value <= 1.6 Then SHP.Fill.ForeColor.RGB = RGB(255, 0, 0) 'Red ElseIf Rng.Value > 1.6 And Rng.Value < 2.4 Then SHP.Fill.ForeColor.RGB = RGB(0, 255, 0) 'Green ElseIf Rng.Value >= 2.4 Then SHP.Fill.ForeColor.RGB = RGB(255, 255, 0) 'yellow End If Next i End Sub