VBAでExcelのシートで1行しか選択できない方法を教えてください

このQ&Aのポイント
  • Excel2003を使用している方が、スケジュールボードを作成中です。現在、複数行選択できてしまうため、1行しか選択できないようにする方法を教えてほしいです。
  • 複数行選択できてしまう問題に対して、VBAを使用して1行しか選択できないようにする方法を教えてほしいです。
  • Excelのセルを選択する際に、1行のみしか選択できないようにする方法を教えてください。
回答を見る
  • ベストアンサー

VBA シート 1行しか選択できないようにする

お世話になっております。 Excel2003を使用しております。 現在、スケジュールボードみたいなものをExcelで作っております。 作るに当たり、単に、セルを選択したら色が変わる…というようにしているのですが、 複数行選択できてしまうので困っています。 選択し始めたら、1行しか選択できないようにする方法は何かありますか? 色を変更するのは、 Application.Intersect(Range(Target.Address), Range("D5:AA64"), Rows(Target.Row)).Interior 上記方法で1行しか変更できないようにしていますが、 下から上に複数行選択した場合も、 上から下に複数行選択した場合も 一番上の行の色が変わります(当たり前ですが) これでは困るので、 セルを選択する段階で、1行のみしか選択できないようにしたいです。 何か方法はないでしょうか? 回答お待ちしております。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

方法1) >1行のみしか選択できないようにしたい シートモジュールに private sub Worksheet_SelectionChange(byval Target as excel.range) if target.rows.count > 1 then target.resize(1, target.columns.count).select end sub とでもしてみる 方法2) ご質問に掲示されてる部分を Application.Intersect(Range(Target.Address), Range("D5:AA64"), Rows(activecell.Row)).Interior とでもしてみる #もっともご相談で採用されてるようにセル(行)を塗り替えてしまう方法では、 ●ボードに目的があって色塗りをしていても塗り潰してしまう ●シートを開いたときに反応がおかしい場合がある  みたいな問題が起きる場合があります。 http://www.relief.jp/itnote/archives/001406.php などを参考にしてみて下さい。

satoron666
質問者

お礼

回答ありがとうございます! 行数をカウントして1以上だったらリサイズ! そんな方法があったのですね… ありがとうございました! 上手くいきました^^

関連するQ&A

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

    エクセルで選択した行に色をつけて見易くしたいと思い、以下の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 どなたかお助けください、、宜しくお願い致します。

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

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

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

    エクセルについて質問させて頂きます。 エクセルのアクティブになったセルの色を変えたいのですが 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 上記の表記で行単位の変更は出来たのですが、セル単位での変更方法が分かりません。 変更の条件として、 ・アクティブなセルの色のみを変える ・アクティブからノンアクティブになった場合、前回指定されていた色へ戻す。 といった風にする事は可能でしょうか? 可能であればぜひご教授お願いいたします。

  • EXCEL(VBA)で1行おきに行を選択する方法

    こんにちは。VBAは苦手なので教えてください。 EXCELのsheet1にあるリストに、下記マクロで1行おきに 空白行を挿入しました。 Sub test1() '隔行で空白行を挿入 Dim rw As Long 'セル For rw = Range("A1").End(xlDown).Row To 2 Step -1 Rows(rw).Insert Next End Sub 同じファイルのSheet2の1行目<Rows("1:1")>に、計算式が入力されています。 マクロで挿入した空白行全てを選択し、そこへSheet2の1行目のコピーを 貼り付けたいです。 ぜひ、良い方法を教えてください。

  • エクセルVBAについて

    エクセルVBAについて range("B5") = 1行の、選択したセルの値 というようなマクロを作成したいと思っています。 というのも、B5セルの値が、1行で選択したセルの値に変化できればと思っています。 ちなみに下のようなコードを書いてみたのですが、うまくいきません orz Private Sub Worksheet_SelectionChange(ByVal Target As Range) Range("B5") = Rows(1).ActiveCell.Value End Sub 初心者で申し訳ありませんが、よい方法がありましたら、 よろしくお願いいたします。

  • EXCEL2003 VBA 行選択について 

    初心者です。 10行目から、20行目まで選択するには、    Rows("10:20").Select ですが、 10行目から、i行目を選択するのに   Rows("10:i").Select とすると(iは、セルに入力した任意の値(≧11)で定義します)、エラーが出ます。 任意の複数行を選択する方法をご教授下さい。 なお、この選択した複数行に対し、行削除や行挿入をするつもりです。

  • エクセル VBA の行選択

    エクセルVBAで行を選択する場合 Rows(1,1).select Range(Cells(2,2),Cells(5, 5)).EntireRow.Select の方法があると知りました。 この数値の部分に変数を入れるとエラーがでてしまいました。 どうすれば変数で行を選択することができるのか教えてください。 2003を使用しております。

  • エクセルVBAについて

    エクセルVBAについて 下にある、1行目に入力された数値の、選択したセルの数値を、B5セルに表示させるマクロなのですが、1行目が結合していると、うまくB5セルに表示できません。 Private Sub Worksheet_SelectionChange(ByVal Target As Range)  If Target.Count > 1 Then Exit Sub    '●複数セル選択は無視  If Target.Row <> 1 Then Exit Sub    '●1行目以外の選択は無視  If Target.Column > 6 Then Exit Sub   '●F列目以降の選択は無視  If Target.Value = "" Then Exit Sub   '●選択セルが未入力なら無視    Range("B5").Value = Target.Value End Sub このマクロで、結合しているセルをB5に表示させることはできますでしょうか? 1行目で選択するセルは、すべて2つのセルが結合しています。 よろしくお願いいたします。

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

    横に長いデータがあり、その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

  • エクセルVBAで行のコピー貼り付けについて

    初心者、勉強中でエクセル2007です。 A1行からK40行までの表があります。 これを下にコピーをしながら増やしていってるのですが、マクロでしようと思い下記のとおり 考えました。 selecion.row.Offset(39, -1).Select ここでオブジェクトが必要ですと出ます。 それからその下の?とを色々ぐぐってみますがどうしてもわかりません。 それと2007ですので65536行ではないのですが、MaxRow = Cells(Rows.Count, 1).End(xlUp).Row だと動かないみたいですので下記としています。 よろしくご教授お願いします。 Sub Gcopy() MaxRow = Range("B65536").End(xlUp).Offset(-39, -1).Select データの入ってる最終行を取得 Selecion.row.Offset(39, -1).Select 選択された行から上に39行移動し選択 ?                    下へ39行まで選択   MaxRow = Range("B65536").End(xlUp).Offset(1, -1) 最終行を取得 ActiveSheet.Paste 貼り付け End Sub

専門家に質問してみよう