- ベストアンサー
エクセルでシートを選択したらA列の最下行にセル
いつもお世話になっております。 横に大きいシートに移動した時に、隠れている列を知らずに、左端の列をA列のつもりで入力してしまうミス防止です。 特定のシート(Sheet「A」とSheet「あ」とSheet「イ」)を選択したらA列、出来れば最下行の入力セルに飛ぶようにしたいのですが。 よく考えたら、全てのシートに適用でも良いかもしれませんが、オペミス防止として適用したいBookが多数なので、シート毎か全シートに適用かは実際に使ってみないとわからないので、贅沢を言うようですが両方ご指導いただければ幸いです。
- akira0723
- お礼率68% (647/940)
- Excel(エクセル)
- 回答数4
- ありがとう数4
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
シート毎でしたらそれぞれのシートモジュールに Private Sub Worksheet_Activate() Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Select End Sub Bookで全シート指定の場合はThiesWorkbookのモジュールに Private Sub Workbook_SheetActivate(ByVal Sh As Object) Sh.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0).Select End Sub
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17068)
ThisWorkbookにSheetActivateイベントがあるので Private Sub Workbook_SheetActivate(ByVal Sh As Object) Select Case Sh.Name Case "Sheet1", "Sheet3", "Sheet5" Sh.Range("A100000").End(xlUp).Offset(1, 0).Select End Select End Sub ーー Case "Sheet1", "Sheet3", "Sheet5"の行は シートに名前を付けている場合は、そのシート名の文字列に変えて記述すること。(質問ではAやあやイです。) Case分を使って、IF文利用を避けて、カンマで区切って列挙できる点を利用した。スッキリするだろう。
お礼
早々のご回答ありがとうございます。 期待通りに動くこと確認しました。 残念ながら、かつ申し訳りありませんが(すでにお気づきとは思いますが)当方にはスッキリ度合いが分らず共感出来ない悲しい実力です。
- HohoPapa
- ベストアンサー率65% (454/690)
追記します。 >特定のシート(Sheet「A」とSheet「あ」とSheet「イ」)を 要求2 1つのブックに複数のシートがあり、 その中のシート名が、「A」、「あ」、「イ」に限って そのシートの使われているセルたちの範囲の 最終行の次行のA列を選択したい ということであれば、 ThisWorkbookモジュールに以下を配置します。 Private Sub Workbook_SheetActivate(ByVal Sh As Object) Dim LastRow As Long If ((Sh.Name <> "A") And _ (Sh.Name <> "あ") And _ (Sh.Name <> "い")) Then Exit Sub If WorksheetFunction.CountA(Sh.UsedRange) = 0 Then Sh.Cells(1, 1).Select Else LastRow = Sh.UsedRange.Rows.Count + Sh.UsedRange.Row Sh.Cells(LastRow, 1).Select End If End Sub
お礼
昨夜動作確認したのですが、その時にはすでにこの追加回答までいただいてしまっており申し訳ありません。 同じ作業をしているBookが多数あり、年間200以上のファイルに入力作業をします。 ここで教えてもらった種々のコードをC&Pで使えるようにシート名を極力統一しています。 このコードは該当するシート名が無くてもエラーにならないことを確認しましたので今回のBook以外で便利に使えると思っています。 該当するシート名をandで追加するだけで指定のシートの指定の列に移動するのは便利です。 いつもご丁寧なご回答ありがとうございます。
- HohoPapa
- ベストアンサー率65% (454/690)
要求1 1つのブックに複数のシートがあり、 どのシートを選択しても、 そのシートの使われているセルたちの範囲の 最終行の次行のA列を選択したい ということであれば、 ThisWorkbookモジュールに以下を配置します。 Private Sub Workbook_SheetActivate(ByVal Sh As Object) Dim LastRow As Long If WorksheetFunction.CountA(Sh.UsedRange) = 0 Then Sh.Cells(1, 1).Select Else LastRow = Sh.UsedRange.Rows.Count + Sh.UsedRange.Row Sh.Cells(LastRow, 1).Select End If End Sub 要求2 1つのブックに複数のシートがあり、 その中の、いくつかのシートに限って そのシートの使われているセルたちの範囲の 最終行の次行のA列を選択したい ということであれば、 そのシートたち、それぞれのシートモジュールに 以下を配置します。 Private Sub Worksheet_Activate() Dim LastRow As Long If WorksheetFunction.CountA(UsedRange) = 0 Then Cells(1, 1).Select Else LastRow = UsedRange.Rows.Count + UsedRange.Row Cells(LastRow, 1).Select End If End Sub
お礼
いつも大変お世話になっております。 早々のご回答に感謝!!! 昨夜動作確認し期待通りに動くことを確認しました。 但し、今朝早々に2番目のご回答で実シートで確認したら1つ当方の質問内容に不備がありました。 単純にA列の最終行としか記載していませんので、「セルたち」という発想はなかったです。 横に広い表でいくつかのセルには式が入っていますので「セルたち」だと表の一番下のA列に飛ぶことに気付きました。 質問の内容不備でごめんなさい。。。
関連するQ&A
- A1から最下行までを選択するVBA
offise2000です。 EXCEL VBAです。 A1からセルの最下行までの範囲を別シートに貼付するVBAを教えてください。 Range("A1").End(xlDown).select で最下行のセルを選択するところまでは調べたのですが、基本がないので応用がききません。宜しくお願いします。
- ベストアンサー
- オフィス系ソフト
- 複数行の最下行の範囲選択
こんにちは、マクロ初心者です。 A B C D E F G H I 1 あ あ あ あ あ あ 2 あ あ あ あ あ あ 3 あ あ あ 4 あ あ 5 あ あ 6 あ あ 7 あ あ 8 あ あ 9 あ 10 上記のような表があるとき セル"A"列から"I"列までの最下行にあたる行を検索し、 更に最下行までの範囲をコピーして、別シートにコピーさせたいのです。 (上記の例だと、セル"A1"~"I9"の範囲をコピーする) Range("A1", Range("I1").End(xlDown)).Select Selection.Offset(0, 0).Select 上記のコードでできると思ったのですが、なぜか不必要な範囲まで選択されてしまいます。 (下方向に数行余計に選択されてしまう) これではダメなのでしょうか? ちなみに、数式などは入っておらず、入力されていないセルは全て空白です。 A列だけの最下行を選択するというのは簡単に出来たのですが、このように複数の範囲を 選択する場合は、どのようにコードを書くべきでしょうか。 マクロのスキルが無い為困っています。 アドバイスをよろしくお願いいたします。
- ベストアンサー
- Visual Basic
- EXCEL セル値のシートにリンクを付ける
同じブック内の別シートのセルにハイパーリンクを設置したいのですが、 シートの選択を、セルの値に設定する事は出来ないでしょうか。 シート1: A列:シート名 B列:各シートへのハイパーリンクを付けたいセル B1セルに、A1セルのシート名シートのA1セルへのリンク B2セルに、A2セルのシート名シートのA1セルへのリンク を付けたいのです。 シート名はたびたび変更をするため、 A列のシート名を変更すると、各シート名も変更になるように設定しています。 よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- 同じ行だが、A列を選択させるマクロ
マクロを組んでいます。 以下のように、4行3列のデータがある場合に・・・ 1 A ア 2 B イ 3 C ウ 4 D エ 「B」のセルが選択されていても、その左端にある数字の2のセルを選択させるようにする。 「エ」のセルが選択されていても、その左端にある数字の4のセルを選択させるようにする。 ・・・というマクロは、どのように組んだらよいでしょうか? アドバイスを、よろしくお願いいたします!
- ベストアンサー
- その他MS Office製品
- 【エクセル】他のBookの、シート名を抽出したい
ブックA,Bがあって、 ブックAのSheet1に「商品名、シリアル番号、商品サイズ・・・」とい ったような項目の表があります。また、Sheet1の表を基にして、数値の 違う表がSheet30まであります。 ブックBのSheet1のA列にはブックAのデータに対応するシリアル番号が ずらっと並べてあります(抜けてたり、多かったりするかもしれません)。 そこで、隣のB列に、A列に書いてあるシリアル番号をブックAから参照 (検索?)して、同じシリアル番号が入力されたセルのあるシートの、 シート名を表示したいです。おねがいします。 VLOOKUPで対応するシリアル番号のセルを探し出して、そのシートを表 示させるようなことを考えていたのだけど、参照するデータの列が左端 ではないし、検索するシートがたくさんあるし、ぜんぜんわかりませ ん。マクロを使用すれば出来るのでしょうか? エクセル2003を使用しています。 長文になってしまい、わかりにくいかと思いますが回答お願いします。
- 締切済み
- オフィス系ソフト
- エクセルで、文字列の入ったセルを他のシートへ自動的に入るようにしたいのですが・・・
エクセルで、文字列の入ったセルを他のシートへ自動的に入るようにしたいのですが・・・ 例 シート1のA1セルに「○○会社」と入力 自動的にシート2のA1にも同じ「○○会社」が入力される。
- ベストアンサー
- オフィス系ソフト
- Excelで同一列セルで行方向の非空白の最下行値を取得する関数は?
Excelで、同一列セルで行方向の非空白の最下行値を取得する関数は何でしょうか? 例)A列を走査して、200という値を取得したい A 1 (空白) 2 300 3 (空白) 4 100 5 200 6 (空白) 7 (空白) : 65536 (空白)
- ベストアンサー
- オフィス系ソフト
- エクセルでアクティブなセルの行と列を反転表示したい
セルのかたちが正方形に近い、約100行(日付)と100列(項目)の表があります。 ひとつのセルの中には2桁(0~99)までの数字を入力し、縦横それぞれの最後尾でSUM関数により 合計値を出しています。 すべてのセルに数字を入力するわけではないので、よく間違ってとなりの項目に 数字を入力してしまうことがあります。 入力ミスを防ぐ為に、入力する際にアクティブなセルの行と列同時に反転表示する方法はありますでしょうか。(十文字のイメージ) 動作はブック全体ではなく任意のシート(Sheet1)のみで行いたいです。 エクセル2003です。 よろしくお願いします。
- 締切済み
- オフィス系ソフト
- エクセルにてsheet1にA列(会社名)B列(金額)が入力されている場
エクセルにてsheet1にA列(会社名)B列(金額)が入力されている場合、sheet2のセルC5にsheet1のA1が入る場合sheet2のセルH7にはsheet1のB1が入力されるような・・・sheet2のセルC5を入力(=sheet1!A1)した場合のSheet2のセルH7のもとめ方をお願いします。
- 締切済み
- オフィス系ソフト
- 列の値と一致するシートを選び、指定セルをコピぺする
マクロの勉強をしている初心者です。 タイトルにありますように、あらかじめ列に入力する値と一致するシートを検索し、そのシートの中の所定の場所にあるセルの値をひろう、というマクロをつくりたいのですがご教示頂けないでしょうか。 わかりづらいので例を画像を添付します。 (手書きですみません。) まず、左のbookと右のbookは別であり、右は読み込み用で、左bookに入力をしていくものです。 左bookの売上げ(赤塗)、目標(青塗)という部分に、右bookのというセルの場所の値をコピペすることを希望です。 毎回人の入れ替わりが頻繁にあるため、Aと同じ値のシートを選ばせるというところからプログラムさせたいです。左bookは上から田中、山下、と並んでいますが、その都度何行目に誰がくるかはかわります。 右bookのコピーしたいセルの場所(B列6行目、C列6行目)はどのシートも変わりません。 恐れ入りますがご教示の程宜しくお願いします。
- ベストアンサー
- Excel(エクセル)
お礼
早々のご回答ありがとうございます。 実質1行のコードで解決、やはりというかそれにしてもすごい、と改めてマクロのすごさを実感しました。(1行のマクロが自作できないのが情けないですが。。。) 現在はファイルオープン時に決まったシートの指定の列に飛ぶことは、マクロの記録とオープンイベントというのをNETで調べて組み合わせて出来るのですが、今回は起動後のシート移動時だったのでお手上げでした。(SheetActivateというのがあるのですね) 昨夜自宅で試して期待通りに動くことを確認しましました。 但しA列にデータがない場合は2行目に飛ぶのはご愛敬ということで全く問題なし。 このためにコードが増えるより、シンプルな方が良いです。 聞いてよかった。