こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

EXCEL マクロの指定の仕方

マクロで線の色を指定したいのですが、上手くいかず困っています
.ForeColor.RGB = Worksheets("sheet1").Range("F2").Interior.ColorIndex
赤色を指定したいのですがBにどういうコードを入れれば良いですか?
FはVlookupで列Bより色を指定するようにしています。
マクロは始めたばかりで良く分からないので、他に必要な情報もわかりません
必要な情報なども併せて教えてください。
よろしくお願いします。

Dim rngStart As Range
Dim rngEnd As Range
Dim BX As Single, BY As Single, EX As Single, EY As Single


Set rngStart = Worksheets("sheet2").Cells.Find(What:=Worksheets("sheet1").Range("D2"), LookIn:=xlValues, LookAt:=xlWhole)
Set rngEnd = Worksheets("sheet2").Cells.Find(What:=Worksheets("sheet1").Range("E2"), LookIn:=xlValues, LookAt:=xlWhole)
BX = rngStart.Left
BY = rngStart.Top
EX = rngEnd.Left + rngEnd.Width
EY = rngEnd.Top
With Worksheets("sheet2").Shapes.AddLine(BX, BY + 10, EX, EY + 10).line
.ForeColor.RGB = Worksheets("sheet1").Range("F2").Interior.ColorIndex
.Weight = 3
.EndArrowheadStyle = msoArrowheadTriangle
End With

投稿日時 - 2016-06-02 15:34:03

QNo.9181736

困ってます

質問者が選んだベストアンサー

こんにちは。

マクロを教わるのは、
翻訳や清書を頼むようなものですから、
<どんなことを書き表したいのか>
<何をしたいのか>
という、
自分しか知らないことを十分に伝えること
をもっと意識するようにしてください。
画像を添付するにしても、
直接目にしたことのない者にとって、
どこまで読み取れるだろう、という想像力を持って、
見やすい画像にすることも大事ですね。
 デジタルライフ > Windows > その他(Windows) > 『EXCEL マクロの指定の仕方』
 http://okwave.jp/qa/q9181693.html
あちら↑の説明も読んでみて、類推した内容でお応えします。
ひとまずは、
[実行マクロ単一セル用]の行指定を書き換えるなどして、
試してみて下さい。
試した結果が、お望みと違うようでしたら、
 何が伝わっていなくて、何が誤解されているのか、
 想像した上で説明を尽くすようにするか、
 求める結果と実行結果の相違を明らかにするなど、
補足してみて下さい。
[実行マクロ複数セル用forループ版]の方は、
応用的な使用例、ということになります。

設問への理解が至っていませんから、
こちらからは、特に説明を加えません。
まず、そちらで確認してみた上で、
解らない部分についてご質問あれば、またお応えします。

' ' //

Sub 実行マクロ単一セル用()
  LetLineColor 行:=2
End Sub

' ' //

Sub 実行マクロ複数セル用forループ版()
Dim i As Long
  For i = 2 To Sheets("Sheet1").Cells(Rows.Count, "D").End(xlUp).Row
    LetLineColor 行:=i
  Next i
End Sub

' ' //

Sub LetLineColor(行 As Long)
Dim wks1 As Worksheet
Dim rngStart As Range
Dim rngEnd As Range
Dim TargetValueS, TargetValueE, nColor As Long
Dim BX As Single, BY As Single, EX As Single, EY As Single

  With Sheets("Sheet1")
    TargetValueS = .Cells(行, "D")
    TargetValueE = .Cells(行, "E")
    If TargetValueS = "" Or TargetValueE = "" Then Debug.Print 行; "行", "EmptyParam!!": Exit Sub
    
    If IsError(.Cells(行, "F")) Then Debug.Print 行; "行", "Color'sError": Exit Sub
    nColor = -1
    Select Case UCase(.Cells(行, "F")) ' 大文字に直してから判別
    Case "RED": nColor = RGB(255, 0, 0)
    Case "GREEN": nColor = RGB(0, 255, 0)
    Case "BLUE": nColor = RGB(0, 0, 255) ' 以下、適宜追加可
    End Select
    If nColor = -1 Then Debug.Print 行; "行", "Color??": Exit Sub
  End With

  With Sheets("Sheet2")
    Set rngStart = .Cells.Find( _
          What:=TargetValueS, _
          LookIn:=xlValues, LookAt:=xlWhole, _
          SearchOrder:=xlByRows, SearchDirection:=xlNext, _
          MatchCase:=False, MatchByte:=False)
    If rngStart Is Nothing Then Debug.Print 行; "行", "NotFound!! ""Start"":" & TargetValueS: Exit Sub

    Set rngEnd = .Cells.Find( _
          What:=TargetValueE, _
          LookIn:=xlValues, LookAt:=xlWhole, _
          SearchOrder:=xlByRows, SearchDirection:=xlNext, _
          MatchCase:=False, MatchByte:=False)
    If rngEnd Is Nothing Then Debug.Print "NotFound!! ""End"":" & TargetValueE: Exit Sub

    BX = rngStart.Left + 10
    BY = rngStart.Top
    EX = rngEnd.Left + rngEnd.Width
    EY = rngEnd.Top + 10

    With .Shapes.AddLine(BX, BY, EX, EY).Line
      .ForeColor.RGB = nColor
      .Weight = 3
      .EndArrowheadStyle = msoArrowheadTriangle
    End With

  End With

End Sub

' ' //

投稿日時 - 2016-06-02 22:32:19

お礼

色々ご丁寧にありがとうございます。
上手くいかなかったのですが、この質問で続けても伝えられないと
思いますので、改めて問題が伝わる形で質問させていただきます。
ご指摘ありがとうございました

投稿日時 - 2016-06-03 06:04:35

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

>.ForeColor.RGB = Worksheets("sheet1").Range("F2").Interior.ColorIndex
>赤色を指定したいのですがBにどういうコードを入れれば良いですか?
.ForeColor.RGB = RGB(255, 0, 0)

投稿日時 - 2016-06-02 16:23:42

補足

色は直接マクロ内で指定するのではなくてB2セルに
入力した値をもって色指定としたいのです。
というのも、繰り返し処理を行うけど、色は変えるというのが
目的なので。
言葉が足りなくて申し訳ないですが、よろしくお願いします

投稿日時 - 2016-06-02 22:09:04

あなたにオススメの質問