• 締切済み

エクルで選択した行に色をつけて見易くしたい

エクセルで選択した行に色をつけて見易くしたいと思い、以下のVBAを見つけて実行してみましたが、元のセルに色がついているとエラーが出てしまいます。 解決方法はないものでしょうか? Private m_ROW As Long '変更前の行番号 Private m_IRO As Long '変更前の色 Private Const MYCOLOR As Long = 36 '変更する色番号 Private Sub Worksheet_SelectionChange(ByVal Target As Range) '選択した行に色を付ける If Target.Row > 1 Then '2行目以降を対象とする '変更前の色に戻す If m_ROW <> 0 Then Rows(m_ROW).Interior.ColorIndex = m_IRO End If '変更前の行番号と色を記憶 m_ROW = Target.Row m_IRO = Rows(Target.Row).Interior.ColorIndex '色を変更 Rows(Target.Row).Interior.ColorIndex = MYCOLOR End If End Sub どなたかお助けください、、宜しくお願い致します。

みんなの回答

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

m_IRO = Rows(Target.Row).Interior.ColorIndex を m_IRO = Target.Interior.ColorIndex したらエラーはでなくなりましたが、違ってますか?

tekepuku
質問者

お礼

有難うございました。 エラー出なくなりました。

関連するQ&A

  • エクセルのアクティブセルの色を変えるには

    エクセルについて質問させて頂きます。 エクセルのアクティブになったセルの色を変えたいのですが Private m_ROW As Long '変更前の行番号 Private m_IRO As Long '変更前の色 Private Const MYCOLOR As Long = 36 '変更する色番号 Private Sub Worksheet_SelectionChange(ByVal Target As Range) '選択した行に色を付ける If Target.Row > 1 Then '2行目以降を対象とする '変更前の色に戻す If m_ROW <> 0 Then Rows(m_ROW).Interior.ColorIndex = m_IRO End If '変更前の行番号と色を記憶 m_ROW = Target.Row m_IRO = Rows(Target.Row).Interior.ColorIndex '色を変更 Rows(Target.Row).Interior.ColorIndex = MYCOLOR End If End Sub 上記の表記で行単位の変更は出来たのですが、セル単位での変更方法が分かりません。 変更の条件として、 ・アクティブなセルの色のみを変える ・アクティブからノンアクティブになった場合、前回指定されていた色へ戻す。 といった風にする事は可能でしょうか? 可能であればぜひご教授お願いいたします。

  • コンパイルエラー 属性が違う?

    はじめて、質問させていただきます。 マクロの勉強を始めたばかりの初心者ですが、こちらの質問や回答を拝見し、勉強させて頂いております。 早速ですが過去の質問で『選択行のセルの色を変更する』というマクロ(下記のコード)があったのですが、私にとっては実用的で魅力のあるコードでしたので活用させて頂いております。現在シートに、このコードを記録してシートがアクティブになった時に実行させているのですが、これを単純にマクロ(1)とマクロ(2)にコードを記載してマクロの実行で、有効と無効に出来るようにしたいのですが、『コンパイルエラー 属性が適切ではありません』というエラーになります。 現在、私のスキルはマクロの記録で覚えさせたコードを組み合わせる位のレベルです。 初歩的でお恥ずかしい質問ですが、ご指導下さい。 ----------コード---------- Private m_ROW As Range '変更前の行番号 Private m_IRO As Variant '変更前の色 Private Const MYCOLOR As Long = 36 '変更する色番号 Sub test() '選択した行に色を付ける Dim Target As Range Dim i As Integer Dim 処理対象セル As Range Dim 処理対象セル色 As String Set Target = Selection If Target.Row > 1 Then '2行目以降を対象とする '変更前の色に戻す If Not m_ROW Is Nothing Then i = 0 For Each 処理対象セル In m_ROW 処理対象セル.Interior.ColorIndex = CInt(m_IRO(i)) i = i + 1 Next Set m_ROW = Nothing m_IRO = "" Else '変更前の行番号と色を記憶 Set m_ROW = Target For Each 処理対象セル In m_ROW m_IRO = m_IRO & " " & 処理対象セル.Interior.ColorIndex Next m_IRO = Split(Trim(m_IRO)) '色を変更 Target.Interior.ColorIndex = MYCOLOR End If End Sub

  • セルの選択でその行に色を付けたい

    横に長いデータがあり、その1つのセルを選択するとその行全体に色が付くようにしたいのです。過去の質問で以下のようなものを見つけましたが、問題はその場合、通常のコピー→貼り付けができない点です。 その辺を問題なく行える方法はないでしょうか? よろしくお願いいたします。 Public m, n Private Sub Worksheet_SelectionChange(ByVal Target As Range) If m <> 0 Then Range(Cells(m, 1), Cells(m, 256)).Interior.ColorIndex = n End If m = Target.Row n = Target.Interior.ColorIndex Range(Cells(Target.Row, 1), Cells(Target.Row, 256)).Interior.ColorIndex = 6 End Sub

  • エクセルで選択中の列や行を見やすくしたい

    タイトルのとおり、選択中の列や行の色が一列全部変るように したいと思い調べ、以下のVBEコードを見つけたんですが Public m Private Sub Worksheet_SelectionChange(ByVal Target As Range)  If m <> 0 Then   Range(Cells(m, 1), Cells(m, 256)).Interior.ColorIndex = xlNone  End If  Range(Cells(Target.Row, 1), Cells(Target.Row, 256)).Interior.ColorIndex = 6  m = Target.Row End Sub 確かに色は変るんですが、もともとついている箇所の色が 消えていってしまいます。 色が消えずに同じことは出来ないでしょうか。 ご存知の方いらっしゃいましたら教えてください。 よろしくお願いします。

  • 選択セルの行全体の色付け

    仕事でエクセルを使う事が多く、特に列、行がたくさんある一覧を表を日常業務で使っています。そこで選択セルの行全体が色付けされるような仕組みを作りたく。(イメージ的には、今触っているセルがどの行なのか目で追い易くする感じです)このようなマクロを作りました。ただ、これでは元々色が付いているセルの色が、色無しに変化してしまう為、使えません。使っている表の元々の色を変化させずに、色で簡単に行全体を目で追えるようにするにはどうしたら良いでしょうか?本当に申し訳ないですが、わかる方いらっしゃいましたら、ご教授お願い致します。 Public m Private Sub Worksheet_SelectionChange(ByVal Target As Range)  If m <> 0 Then   Range(Cells(m, 1), Cells(m, 256)).Interior.ColorIndex = xlNone  End If  Range(Cells(Target.Row, 1), Cells(Target.Row, 256)).Interior.ColorIndex = 6  m = Target.Row End Sub

  • 行に色を付ける

    本を片手にやっているのですが 分かっている人にしたらあほみたいなことなんでしょうがよろしくお願いします。 A列には日付B列には曜日(WEEKDAY関数で日曜が1)を入力してあります。土日の行ににピンクを塗りつぶしたいのですが Sub iro() Dim i As Integer, gyou As Long gyou = Range("b65536").End(xlUp).Row For i = 2 To gyou If Range("b65536").End(xlUp).Value = 1 Or 7 Then Rows(i).Interior.ColorIndex = 7 Else Exit For End If Next End Sub なんとなくここまでできたのですが、これだと 全部の行に色がついてしまいます。 何がいけないのでしょうか? よろしくお願いします。

  • Excelで選択しているセルの行を色づけしたい

    以前、このサイトでVBAを以下のように設定したのですが、 一度、ファイルを閉じてしまうと、無効になってしまいます。どうすれば、いいのでしょうか? Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) ActiveSheet.Rows.Interior.ColorIndex = xlNone Rows(Target.Row).Interior.ColorIndex = 15 End Sub

  • VBAでのセルの複数選択時の処理について

    現在EXCEL VBAである行の値が変わったときにその列の塗りつぶしの 色を変えるといった処理を作成しております。 そこで、複数選択して値を変えた場合の処理が変数の型が一致しません 的なエラーが表示されてしまいます。 どのように修正したらうまくいくでしょうか? 教えてください。 ソースは下記の通りとなります。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column <> 13 Then Exit Sub Application.EnableEvents = False MsgBox (Target.Rows.Count) Dim rngSelectRng As Range For Each rngSelectRng In Target If rngSelectRng.Value = "" Then rngSelectRng.Value = " " 'ステータス欄の入力の判断 'Select Case Target.Rows.Value MsgBox (Target.Row) Select Case rngSelectRng.Value Case "あああ" Worksheets("表1").Rows(Target.Row).Interior.ColorIndex = 24 Case "いいい" Worksheets("表1").Rows(Target.Row).Interior.ColorIndex = 35 Case "ううう" Worksheets("表1").Rows(Target.Row).Interior.ColorIndex = 38 Case "えええ" Worksheets("表1").Rows(Target.Row).Interior.ColorIndex = 36 Case "おおお" Worksheets("表1").Rows(Target.Row).Interior.ColorIndex = 16 Case Else Worksheets("表1").Rows(Target.Row).Interior.ColorIndex = 2 End Select Next Application.EnableEvents = True End Sub

  •  条件付き書式での色付けで以下のコードを教えて頂いたんですが、色付けを

     条件付き書式での色付けで以下のコードを教えて頂いたんですが、色付けを 適用する範囲をどうやって変更すればいいのでしょうか? もしよろしければ、範囲の変更の仕方と、コードの意味を教えて頂けますか? めんどうですがよろしくお願いします・・・。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Columns(3).Interior.ColorIndex = xlNone Dim i, j As Long For i = 1 To Cells(Rows.Count, 3).End(xlUp).Row For j = 1 To Cells(Rows.Count, 6).End(xlUp).Row If Cells(i, 3) = Cells(j, 6) Then Cells(i, 3).Interior.ColorIndex = Cells(j, 7).Interior.ColorIndex End If Next j Next i End Sub

  • VBAのセルの色の設定について

    EXCEL・VBAにて.Interior.Color=RGB(152, 251, 152)と設定しましたが 思った色(緑系の色)ではなくグレー系の色になってしまったのですが、 何か間違っているのでしょうか? 何かわかる方いらっしゃいますでしょうか? 実際のソースはしたの通りとなります。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column <> 13 Then Exit Sub Application.EnableEvents = False 'ステータス欄の入力の判断 Select Case Target.Value Case "あああ" Worksheets("シート1").Rows(Target.Row).Interior.Color = RGB(152, 251, 152) Case "いいい" Worksheets("シート1").Rows(Target.Row).Interior.Color = RGB(254, 208, 224) Case "ううう" Worksheets("シート1").Rows(Target.Row).Interior.Color = RGB(255, 255, 0) Case "えええ" Worksheets("シート1").Rows(Target.Row).Interior.Color = RGB(192, 192, 192) Case Else Worksheets("シート1").Rows(Target.Row).Interior.Color = RGB(255, 255, 255) End Select Application.EnableEvents = True End Sub