1

我在使用“9”以上的编码时遇到问题。

              Sub ColourStates()

Dim intState As Integer
Dim strStateName As String
Dim intStateValue As Integer
Dim intColourLookup As Integer
Dim rngStates As Range
Dim rngColours As Range

Set rngStates = Range(ThisWorkbook.Names("STATES").RefersTo)
Set rngColours = Range(ThisWorkbook.Names("STATE_COLOURS").RefersTo)

With Worksheets("MainMap")
    For intState = 1 To rngStates.Rows.Count
        strStateName = rngStates.Cells(intState, 1).Text
        intStateValue = rngStates.Cells(intState, 2).Value


            ' single colour
            intColourLookup = Application.WorksheetFunction.Match(intStateValue, Range("STATE_COLOURS"), True)
            With .Shapes(strStateName)
                .Fill.Solid
                .Fill.ForeColor.RGB = rngColours.Cells(intColourLookup, 1).Offset(0, 1).Interior.Color
            End With

    Next
End With

结束子

这是文件本身的链接:https ://dl.dropboxusercontent.com/u/41007907/MapOfStates.xls

它适用于低于 9 的值,但我需要它工作到 20。

4

1 回答 1

1

您的数组 STATE_COLORS 仅包含 0 到 9 区间内的值。以下是您需要继续执行的步骤:1) 打开 excel 文件 2) 转到公式标签 3) 单击名称管理器 4) 选择 STATE_COLORS 数组 5) 将值增加到 20

如果您有任何其他问题,请回复我。

于 2013-04-14T23:43:58.890 回答