- ベストアンサー
作業したいセルにすぐカーソルをもっていく方法
こんばんは。 セルの移動について教えてください。 1.Excelで自分が作業しているセルから、指定したセルに すぐカーソルがいくような何かよい方法はありませんか? たとえば、C3のセルからA1にもどりたければCtrl+Homeで 戻ることはわかったのですが。。。 C3からすぐにP9のセルにダイレクトでカーソルをうごかしたい、 といったときです。 2.VBA初心者のため自動マクロでプログラムを作成し、 それをいじって作業しています。 文字列がはいってる対象のセルの範囲をすべて削除したく 対象の最初のセルを選択し、Ctrl+Shift+↓+→ でやってみたところ、実は途中に空白セルがあり、 すべての文字列がはいっている範囲が選択できませんでした。 今は手でセルの範囲を指定していますが、セルの範囲が広がる 可能性もあり、できればCtrl+Shift+↓+→のような 方法でセル範囲を指定したいのです。 たとえば、A3からD20までの範囲を選択したいとします。 A行には空白行があります。そのためA3を選択後 上記Ctrl+Shift+↓+→をおこなうと、Dの途中の列で 選択が終わってしまいます。 ですが、B列はすべて空白ではない列となっています。 その空白ではないこのB列のまず行を数えて、 それからA列からD列までの上記で数えた行分選択 するといった方法でプログラムすれば、セルの範囲 が広がったあとでも対応するのでしょうか? わかりづらくて申し訳ありません。 VBAは本当に自動マクロをいじるくらいしかできないので、 超初心者にわかりやすく教えていただけたら幸いです。 よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>指定したセルにすぐカーソルがいくような何かよい方法はありませんか? >C3からすぐにP9のセルにダイレクトでカーソルをうごかしたい 1.シートの左上の「名前ボックス」に「P9」と直接入力し、EnterでP9セルに飛びます。 2.カーソルの移動先がP9セルで固定されている場合は、P9セルを選択しておいて、名前ボックスに例えば「選択先P9」のような文字列を入力し、Enterで確定すれば、名前ボックスに登録されます。どこからでも名前ボックスのプルダウンリストを開いて「選択先P9」を選択し左クリックでカーソルはセルP9に飛びます。 3.VBAの場合は、必要なところで、Range(P9).Selectの1行を入れれば、そこでカーソルP9に飛びます。 >自動マクロでプログラムを作成し… >…セルの範囲が広がったあとでも対応するのでしょうか? VBAでデータの入っている範囲を設定するとき、データの端のセルの位置を見つけるには、RANGEオブジェクトの、ENDプロパティーを使用します。 あなたの例では、A3からD20までの範囲を選択したい、しかしB列以外は空白のセルがある設定ですので、B列の最後の行を見つけるには、上から下への検索でなく、下から上への検索となります。コードは、 RowMax = Range("B65534").End(xlUp).Row で、変数RowEndに最下段の行番20が入ります。 Range("B65534")の65534はエクセルの最大行番ですが、データの入っている最終行番より大きい数字ならいくつでも構いませんが、上のようにしておくとデータ数がどんなに増えようが影響ありませんので、多くはこの値をとります。 列番についても同じように、RANGEオブジェクトの、ENDプロパティーを使用しますが、 ColumnMax = Range("IV20").End(xlToLeft).Column で、変数ColumnMaxには「D」でなく「4」が入ります。 Endプロパティについては、上記以外のにもいくつかの用法がありまが、長くなりますので、詳しくは、ヘルプなどを参考にしてください。 VBAを使うときは、ツール(T)→オプション(O...)⇒オプションダイアログの全般タブ左上→設定欄→R1C1 参照形式を使用する(C)をクリックしチェックマークをつけます。 これで、行/列ともに数字の表示になり使いやすくなります。 RANGEオブジェクトの、ENDプロパティーをヘルプを見つける場合について一言。 エクセルのヘルプには、VB、エクセル、VBAの3種類があるので、エクセルのマクロについてはVBAのヘルプを見ないといけないので、必ず、Bisual Basic Editorを開き、この中のヘルプを見るようにします。ヘルプの質問欄にendまたはENDを入れて、検索をクリックすると、下にトピックが表示されます。その中の「End プロパティ」「End プロパティの使用例」をみてください。また、WEBで探せば多くの記事が引っかかります。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
1.名前を定義しておけば、名前ボックスクリックでそこへ飛ぶ コマンドボタンで1箇所のセルに飛ぶVBAも作れるが大げさ。 あとは何か特徴があれば、ここに補足するか再質問しては。 例えば毎回固定したセルでなく。動的なもの。入力済みの最右列の右とか 2.Range("A65536").End(xlup).Rowなど良く使うが、間に余分なものがあると用を成さない。例えば合計行が前もって設定してあり、合計の文字があるなど。 そのときは合計のすぐ上のセルを、Range("A65536"). に指定すればよい。 それもできないときは UsedRange.rows.Count Currentregion.Rows.Count などをWEB照会(UsedRange、Currentregion VBAでGoogle照会など)して、使い方を勉強してみてください。 それぞれクセがあるので、使用上の注意をよく読んで使ってください。
お礼
ありがとうございます。 1.については、なにかいい方法があったら程度でしたので、 VBAにするほどではなく。。。申し訳ありませんでした。 2.については、大変勉強になりました。 UsedRange,Currentregionですね。勉強いたします。 ありがとうございました。
- papayuka
- ベストアンサー率45% (1388/3066)
1.については 左上に名前ボックスに直接 P9 と入力するくらいしか思いつきません。 2.については下記のような感じで可能です。 Test1 は汎用性がありますが絶対で無く、行または列が完全に途切れていないのが条件です。 Test2 はB列の最終行を見て範囲をA~D列までを選択します。 Sub Test1() ActiveCell.CurrentRegion.Select End Sub Sub Test2() ActiveSheet.Range("A3:D" & ActiveSheet.Range("B65536").End(xlUp).Row).Select End Sub
お礼
ありがとうございました。 1.については名前ボックスにいれて。。。ということですね。 ありがとうございます。 そして2.についてですが、Test2で試してみました。 できました。思い通りです。 ありがとうございます。 イメージもわきました。 勉強をしていても、実務でなかなかどう使ったらよいか わからなかったのですが、papayukaさんの回答を みたあとに参考書をみたら、よりわかりました。 本当にありがとうございました。
お礼
ありがとうございました。 1.については名前ボックスにいれて。。。ということですね。 ありがとうございます。 そして2.についてですが、試してみました。 できました。思い通りです。 ありがとうございます。 ここで最終行の数字をみつけて、ループしてセルを選択 させることもできそうな気がいたします。 列についてもありがとうございました。 勉強をしていても、実務でなかなかどう使ったらよいか わからなかったのですが、Yoshaさんの回答を みたあとに参考書をみたら、よりわかりました。 本当にありがとうございました。