• 締切済み

エクセル セルクリックで行全体を選択するマクロ

住所録を見やすくするために、一つのセルをクリックすることで 行全体の色を変えるマクロをつけようと思っています。 クリックごとにシート全体の色をなくしてアクティブセルの存在する行を選択して、行全体に色をつける、という感じです。 行の選択方法が分からないので教えてください。 よろしくお願いします。

みんなの回答

  • rurusanjo
  • ベストアンサー率26% (5/19)
回答No.8

セルの色を変えるのは、Undoが効かなくなるのでお勧めできないかも。 条件付き書式と名前定義を組み合わせるのもよいかもしれませんが、面倒&重くなるのでボツ。 ってことで、こんな感じがお勧めです。 Private Sub Workbook_SheetSelectionChange( _ ByVal Sh As Object, _ ByVal Target As Range) If Target.Count = 1 Then SendKeys "+{ }" '{ と } の間は半角スペースです End Sub 追記: Target.Count=1を条件にしておけば、セルの書式設定等で困りません。 複数セル範囲の設定を行いたければ、マウスでその範囲を選択すればよいですし、一つのセルのみ書式を設定したければ、右クリックで選択すればよいです。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.7

No.6です。 質問は行全体に色をつける、を小生は列全体に色をつけると見誤ってしまいました。すみません。Column-->Row Columns-->Rowsに訂正してください。 ===== その後も考えて 標準モジュールに(アクチブセルの列を捉える)ユーザー関数を作りました。 Function actc() actc = ActiveCell.Column End Function ーー 操作=条件付き書式 シートで色をつける範囲を範囲指定。 A1がアクチブになっていることを確認。 書式 セル 条件付き書式 「数式が」を選ぶ 式に =COLUMN(A1)=actc() パターン色を淡い色に設定 OK ーーー 以上では画面の変換が、ぎこちない、というかうまく行かない。 先ほどのテスト経験上、わざわざ、シート切り替えして戻ると、色表示転換がうまく行ったのでそれでやっていたが、Application.ScreenUpdating = True があるというヒントでやってみると、色表示転換がスムーズにうまく行った。それで下記を入れる Worksheet_SelectionChangeイベントに Private Sub Worksheet_SelectionChange(ByVal Target As Range) Application.ScreenUpdating = True End Sub ーー 上記ではVBAでのセルへの色設定はやっていないので、今まで設定されたセルの色は崩れないようで、私の心配して言ったことも解決できそう。 ーー その後既出回答の紹介のサイトなど見るとCELL関数を使う手があることを知った。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.6

(1)クリックしたときに、飛んできてくれるイベントの扱い (2)クリックしたセルの列の全セル選択のコード (3)色付けしたセルを消すコード (4)以前の色付けした列を消すコード ただし(3)に関連して、直前の列を覚えておくのが難しい。 が必要。 (1)はわかっているのかな。 ーーー 下記でそれに近い機能になる。 しかし完全ではない。ブックを保存した時の列の色は残ったままとか。 セルに色を設定することを妨げられるとかあって、本質問は思いつき倒れで、主旨をまっとうすることが難しいと思う。 それに初心者・中級には難しい課題と思う。 私も自信はない。Public変数など使っていること、ブックを保存した時の列の色は残ったままとか、普通の目的の為に自由にセルに色を設定することが 出来なくなる(消えてしまう)こととか。 小生の力不足・コードの未熟もあろうが、この質問の仕様を固めることさえ難しい。 VBAレベルでなく、セルのパターン色とは違った、もっと構造的な、別の色をつける仕組みを考えないといけないと思う。 Public mc Private Sub Worksheet_SelectionChange(ByVal Target As Range) Application.EnableEvents = False If mc <> 0 Then ActiveSheet.Cells(1, mc).EntireColumn.Select Selection.Interior.ColorIndex = xlNone End If Target.EntireColumn.Select Selection.Interior.ColorIndex = 6 mc = Target.Column Application.EnableEvents = True End Sub

全文を見る
すると、全ての回答が全文表示されます。
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.5

http://okwave.jp/qa4029237.html の、higekumanさんの回答が決定版でしょう。 ただ、ブック全体に設定するとうるさいので、シートモジュールに記載し、動作するセル範囲を下記の様に制限した方が吉かも。 下記コードは、ご質問に添って、行方向のみの着色に改造してあります。(原典は行列反転表示) Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Intersect(Target, Range("B2:D10")) Is Nothing Then Exit Sub Application.EnableEvents = False With Target Range(.EntireRow.Address).Select .Activate End With Application.EnableEvents = True End Sub

全文を見る
すると、全ての回答が全文表示されます。
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.4

おはよう御座います こうゆう事 '----------------------------------------------------------- Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim a As Long a = Target.Row If Target.Interior.ColorIndex <> xlNone Then Rows(a).Interior.ColorIndex = xlNone Else Rows(a).Interior.ColorIndex = 3 End If End Sub '----------------------------------------------------------- それともこれかな '----------------------------------------------------------- Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim a As Long a = Target.Row Cells.Interior.ColorIndex = xlNone Rows(a).Interior.ColorIndex = 3 End Sub '----------------------------------------------------------- 適当なシートにコードコピペして あとはセルをダブルクリックして見てください また外しましたか、外れた場合はスルーで・・・お願いします

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 意外に知られたマクロですが、この種のマクロは、あまり洗練されていないようですね。 条件付き書式は、重くて使えなかった覚えがあります。 Dim i As Long Private Sub Worksheet_Activate()  '色の残りを、シートのアクティベートの際に消す  'もし、色を消したくないものがあれば、ここで設定する 'Cells はすべてのセル  Cells.Interior.ColorIndex = xlColorIndexNone End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) If i > 0 Then  'ここで、消す部分の範囲を決める  Rows(i).Interior.ColorIndex = xlColorIndexNone End If  Rows(Target.Row).Interior.ColorIndex = 34  i = Target.Cells(1).Row End Sub

全文を見る
すると、全ての回答が全文表示されます。
noname#70958
noname#70958
回答No.2

たまにある要望ですね。 下記のようなやり方がスマート(?)らしいです。 ■アクティブセルのある行・列を目立たせる http://www.relief.jp/itnote/archives/001406.php ■行の自動的ハイライト http://blog.livedoor.jp/andrewj/archives/18035971.html この課題の難点は 「既に塗り潰してあるセルがある場合はどうするのか」という部分ですが、 上記のように条件付書式を使えば、既に塗り潰されているセルは影響を受けません。 ただ、私の個人的な好みで言えば、 「塗り潰しはまず使わない」一方で「条件付書式は多用する」ことが多いので、 Private Sub Worksheet_SelectionChange(ByVal Target As Range)  Cells.Interior.ColorIndex = xlNone  Target.EntireRow.Interior.ColorIndex = 34 End Sub (シートモジュールに記述) といった感じで、素朴に塗り潰しちゃいますね。 ご参考まで。

全文を見る
すると、全ての回答が全文表示されます。
  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.1

行番号をクリックしたことはありますか? 行全体が選択されます

hyomaguren
質問者

補足

行番号をちまちま選択するのは非常に面倒なので このマクロを付けたいと思った次第です。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセル マクロ 行 非表示

    マクロについてご教授お願い出来ないでしょうか。 マクロ初心者です。 エクセル アクティブセル(ex A120セルやA20セル)の行から1行目までを非表示にさせるマクロがわかりません。 アクティブセルから下の行を非表示にさせるマクロは下記URLにて紹介がありましたが・・ https://www.relief.jp/docs/excel-vba-hide-below-active-cell.html また、もし可能でしたら、アクティブセルからA2行目までの非表示、つまり 1行目は残すマクロが可能でしたら、合わせてご教授どうぞよろしくお願い致します。 

  • ”アクティブセル行」の一行下を選択”するマクロ

    ■ ”アクティブセルの、1個下の行を選択し、新しい空白行を一行挿入” ■次にその”アクティブセルのA列とB列の値を、  新しく作った空白行に、コピー  ・・・といったマクロを組もうとしております。 たとえば 12行目を選択するプログラム(コマンド?マクロ?)は、  Rows(12:12) となっていたので、それにならって Rows(activecell:B) などとやってみたのですが、うまくいきませんでした。 このような場合、どうしたらよいのかアドバイスをいただけると助かります。 どうぞ、よろしくお願いいたします。  

  • マクロでの行選択

    Excelのマクロについて質問です。 例えば、A1~A5セルをセル結合したときに、3行目~5行目を行選択 しようとしたときに手動で行なうとうまく選択できるのですが、マクロ で実行するとなぜか結合されている1行目から5行目が選択されて しまいます。 具体的に以下のようなマクロを書きました。 Rows.("3:5").select 手動のみでマクロ化は無理なのでしょうか? 今のままですと、一回連結をといてセルを選択して処理を実行、その のちにセルを再び連結させるということをやらなければいけなくなって しまいます。

  • EXCELで行を検索選択し印刷するマクロを組みたい

    EXCELのマクロについて教えてください。 検索により選択した複数のセルを 行単位で印刷することはできるでしょうか? たとえば住所録を作ったとして どこかに「東京都」と入れ ボタンを押すと 東京都が含まれる複数の行を 1枚で印刷できるようにしたいです。 なお、検索については特定の列のみを 対象にします。 引っ越し前の住所が別の列に書かれていても これは無視するという感じです。 マクロについてはまったくの初心者です。 よろしくお願いいたします。

  • 【Excelマクロ】 行全体を選択したい

    下記マクロはデータが入っている最終行の次のセル(A列)を選択するマクロです。 但し、A列はデータが入っていないこともあるため、必ずデータが入っているB列をキーにしています。 NT = Cells(Rows.Count, "B").End(xlUp).Row + 1 Range("A" & NT).Select B125までデータが入っていた場合A126にカーソルが置かれますが、本当は126行全体を選択したいのです。 「Range("A" & NT).Select」部分をどのようなマクロに変更したらよろしいでしょうか?

  • エクセルで特定のセルを選択したい(マクロ)

    以下のようなマクロを組もうとしていますが、出来ません。 sheet1において 1)マクロを実行すると、メッセージボックスが出る。 2)メッセージボックスに入力した文字と同じ文字が入力されているセルを選択する。 3)2)のセルの1行下のセルを選択する。 2)で必ずエラーが出てしまいます。どのような方法が良いのか教えていただけるとありがたいです。よろしくお願いします。

  • 繰り返し処理のマクロ

    下記のマクロをご教示いただけるでしょうか。 ①シートAのアクティブセルをコピーし、シートBのE1セルにペースト ②マクロ「結果反映」を実行 ➂シートAのアクティブセルを1行下に移動 ①から➂をアクティブセル=空白セルになるまで繰り返し

  • エクセルのマクロでセル選択するには

    初心者です! エクセルのSheet1に30箇所のセルをマクロで選択したいのですが、 たまに選択するセルが変わります。 そこで、Sheet2のA1から下へSheet1の選択する位置を「B2」「C5」「D10」・・・としてマクロで一発で30箇所のセルを選択する方法を教えてください Sheet2のA1から下へ入力するセル位置はその都度変化します。 変化したときにそのマクロを実行すると選択できるといいのですが!! よろしくお願いします。

  • 任意の1行を選択していないと実行できないマクロ

    教えてください。 任意の行番号をクリックしてまるまる1行選択してから、「切り取る」「別のシートに挿入、貼付ける」というマクロを実行しています。 1行選択していないとそのマクロを実行できないという風にするにはどのようなコードを書けばよいでしょうか? 選択する行番号はその都度違います。 欲を言えば、間違った選択でマクロを実行した時にエラー表示が出ると大変ありがたいのですが… どうかよろしくお願いします。 使用するエクセルは97です。

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

    仕事でエクセルを使う事が多く、特に列、行がたくさんある一覧を表を日常業務で使っています。そこで選択セルの行全体が色付けされるような仕組みを作りたく。(イメージ的には、今触っているセルがどの行なのか目で追い易くする感じです)このようなマクロを作りました。ただ、これでは元々色が付いているセルの色が、色無しに変化してしまう為、使えません。使っている表の元々の色を変化させずに、色で簡単に行全体を目で追えるようにするにはどうしたら良いでしょうか?本当に申し訳ないですが、わかる方いらっしゃいましたら、ご教授お願い致します。 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

専門家に質問してみよう