gufengaoyue 发表于 2015-9-7 14:19
A列是有公式的。
非常感谢,代码很简洁!
我对shapes对象属性太不清楚了。
我用笨方法也写了一段,目的是实现了,就是要加一句
On Error Resume Next,不知道为何?- Sub fill_color()
- Application.ScreenUpdating = False '暂停刷新屏幕
- On Error Resume Next
- ' 全国的图
- For i = 11 To 41 '为数据源的起始和结束行号
- ActiveSheet.Shapes(Range("DataMap!B" & i).Value).Fill.ForeColor.RGB = Range(Range("DataMap!D" & i).Value).Interior.Color
- '对各省的图形使用其颜色栏的值作为名称所指向的单元格的颜色填充
- If Cells(i, 3).Value > Cells(i, 5).Value Then Sheet1.Shapes(Range("DataMap!F" & i).Value).TextFrame.Characters.Font.Color = -16776961
- If Cells(i, 3).Value = Cells(i, 5).Value Then Sheet1.Shapes(Range("DataMap!F" & i).Value).TextFrame.Characters.Font.ColorIndex = xlAutomatic
- If Cells(i, 3).Value < Cells(i, 5).Value Then Sheet1.Shapes(Range("DataMap!F" & i).Value).TextFrame.Characters.Font.Color = -11489280
- Next i
- ' 山东省图
- For j = 49 To 65 '为数据源的起始和结束行号
- ActiveSheet.Shapes(Range("DataMap!B" & j).Value).Fill.ForeColor.RGB = Range(Range("DataMap!D" & j).Value).Interior.Color
- '对各省的图形使用其颜色栏的值作为名称所指向的单元格的颜色填充
- If Cells(j, 3).Value > Cells(j, 5).Value Then Sheet1.Shapes(Range("DataMap!F" & j).Value).TextFrame.Characters.Font.Color = -16776961
- If Cells(j, 3).Value = Cells(j, 5).Value Then Sheet1.Shapes(Range("DataMap!F" & j).Value).TextFrame.Characters.Font.ColorIndex = xlAutomatic
- If Cells(j, 3).Value < Cells(j, 5).Value Then Sheet1.Shapes(Range("DataMap!F" & j).Value).TextFrame.Characters.Font.Color = -11489280
- Next j
- Application.ScreenUpdating = True '恢复刷新屏幕
- End Sub
复制代码 另外我把山东的地图也加上了,需要的朋友可以下载。
20150907-全国和山东生猪价格生成模板.part1.rar
(1 MB, 下载次数: 11)
|