• 締切済み

エクセルテーブルのカーソルで行を

エクセル2013で作成したテーブル上にカーソルがある時、カーソルがある行の色を変えたいのですがそのようなことができますでしょうか。

みんなの回答

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.5

>うまく動きません。 おそらくコードを記述している場所が間違っているか、マクロ実行が有効になっていないかではないかと思います。 前者については、ALT+F11で表示されるVBEの画面で、下記URLをご参考になさって下さい。 xl2013は触った事も無いですが、当方xl2000->xl2010に変わった際にもVBE自体は代わり映えしませんでしたので、同様に使えるのではないかと予想します。 http://excelvba.pc-users.net/fol3/3_6.html 実行画面を添付します。横長高解像ディスプレイなら効果を発揮するかもしれませんね。 セルに色を塗っている訳では無いので、既存の色等に影響されず、影響しないのがミソです。(人様のアイデアですが)

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.4

他人のまわしで土俵に立ってみます(笑)。 #2さん、#3さんの応用させていただきました。 (私自身も勉強させていただきました。ありがとうございます。) 「テーブルの左上のセル」がC4セルである場合、 テーブル内のアクティブ行列を水色で塗り潰しします テーブル外のセルがアクティブになると、テーブル内のすべての塗り潰しを解除します。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim myRange As Range     Application.EnableEvents = False     Set myRange = Range("C4").CurrentRegion     myRange.Interior.ColorIndex = xlNone     If Not Intersect(Target, myRange) Is Nothing Then         Intersect(myRange, Range(Target.EntireRow.Address)).Interior.ColorIndex = 20         '列も塗り潰すなら         'Intersect(myRange, Range(Target.EntireColumn.Address)).Interior.ColorIndex = 20     End If     Application.EnableEvents = True End Sub #2さん同様、「その他の塗り潰しなど」があると アクティブ行から外れたときに「塗り潰しなし」になってしまいます。 不都合であれば、「myRange.Interior.ColorIndex = 0」の後にでも 「その他の塗り潰し」を設定しておきましょう。 2013では試していませんが、2003・2010で動作確認しました。

verify
質問者

お礼

ありがとうございます。 2013のせいなのでしょうか。 うまく動きません。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.3

昔どこかで感心させられたコードをアレンジしてみました。xl2013は所有しておりませんので、xl2010で試しています。 考えてみると、テーブルの範囲外の行の色が変わっても実用上支障はないと思うので、アレンジの必要もなかったかも... Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim tableArea As Range 'テーブルの範囲を設定 Set tableArea = Range("C6:H20") If Intersect(Target, tableArea) Is Nothing Then Exit Sub If Target.Cells.Count > 1 Then Exit Sub Application.EnableEvents = False With Target If .Cells.Count > 1 Then Exit Sub Intersect(tableArea, Range(.EntireRow.Address)).Select '列も変えたいとき ' Intersect(tableArea, Range(.EntireColumn.Address & "," & .EntireRow.Address)).Select .Activate End With Application.EnableEvents = True End Sub

verify
質問者

お礼

ありがとうございます。 2013のせいなのでしょうか。 うまく動きません。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! >作成したテーブル上にカーソルがある時 は Excelのデータ範囲(データが入力されている列までの範囲)という解釈で・・・ (A列は何らかのデータが入っているとします) 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてデータ範囲内をクリックしてみてください。 (行数が判らないので行範囲は考慮していません) Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'この行から Dim j As Long j = ActiveSheet.UsedRange.Columns.Count Cells.Interior.ColorIndex = xlNone If Target.Column <= j Then Range(Cells(Target.Row, 1), Cells(Target.Row, j)).Interior.ColorIndex = 36 '←薄い黄色 End If End Sub 'この行まで ※ 手作業でセルの塗りつぶしがあると、そのセルは「塗りつぶしなし」になってしまいます。m(_ _)m

verify
質問者

お礼

ありがとうございます。 2013のせいなのでしょうか。 うまく動きません。

  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.1

http://hamachan.info/win7/Excel/active.html こちらを参考にしてください。

関連するQ&A