- 締切済み
エクセルテーブルのカーソルで行を
エクセル2013で作成したテーブル上にカーソルがある時、カーソルがある行の色を変えたいのですがそのようなことができますでしょうか。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- mitarashi
- ベストアンサー率59% (574/965)
>うまく動きません。 おそらくコードを記述している場所が間違っているか、マクロ実行が有効になっていないかではないかと思います。 前者については、ALT+F11で表示されるVBEの画面で、下記URLをご参考になさって下さい。 xl2013は触った事も無いですが、当方xl2000->xl2010に変わった際にもVBE自体は代わり映えしませんでしたので、同様に使えるのではないかと予想します。 http://excelvba.pc-users.net/fol3/3_6.html 実行画面を添付します。横長高解像ディスプレイなら効果を発揮するかもしれませんね。 セルに色を塗っている訳では無いので、既存の色等に影響されず、影響しないのがミソです。(人様のアイデアですが)
- tsubuyuki
- ベストアンサー率45% (699/1545)
他人のまわしで土俵に立ってみます(笑)。 #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で動作確認しました。
- mitarashi
- ベストアンサー率59% (574/965)
昔どこかで感心させられたコードをアレンジしてみました。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
お礼
ありがとうございます。 2013のせいなのでしょうか。 うまく動きません。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! >作成したテーブル上にカーソルがある時 は 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
お礼
ありがとうございます。 2013のせいなのでしょうか。 うまく動きません。
- kokorone
- ベストアンサー率38% (417/1093)
http://hamachan.info/win7/Excel/active.html こちらを参考にしてください。
お礼
ありがとうございます。 2013のせいなのでしょうか。 うまく動きません。