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) Formulas タグに移動します。3) Name Manager をクリックします。4) STATE_COLORS 配列を選択します。5) 値を 20 に増やします。

他にご不明な点がございましたら、お気軽にお問い合わせください。

于 2013-04-14T23:43:58.890 に答える