- ベストアンサー
マクロの記録でエラーになる!WindowsXPでExcel2007を使用した際に起こる現象とは?
- マクロを記録する際に使うデータの総行数が500だったとして、そのマクロを別のエクセルファイルで実行したい場合、別ファイルのデータ行数が500行より少ない(または多い)場合にエラーになってしまいます。
- マクロ記録では、別ファイルで行数の違うデータに対して柔軟に対応することはできません。例えば、B列にデータがある行までカウントするように指定することはできません。
- マクロ初心者の方でも安心してご利用いただけるよう、詳しい操作手順や注意事項などを提供しています。マクロの使い方に関しては、初めての方でも簡単に理解することができます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>下記コーディングをモジュール?のどこかに追加すればいいということでしょうか? > > Worksheets("Sheet1").Activate > Range("A1").CurrentRegion.Select これだけでいいのです。これで「セルA1から、空白なく連続してデータが入って いる四角いエリア」が選択されます。 逆に言えば、セルA1からデータが連続して入っていない場合、選択はやってくれ ません。カウントしたいデータがA列に「空白なく連続して」入っていないと ダメなんです。例えばデータが"B4"から連続しているなら、 Range("B4").CurrentRegion.Select ですね。 Excelで「一気に選択」させるためには、データがどのセルから始まっていたと しても、セル内容が「空白なく連続して」入っている必要があるんです。 ですので、データベースでは空白の代わりに"0"を入れるとか、データ側で 何らかの手当てをしておく必要があります。 何らかの理由で「データの途中を空白で残さざるを得ない」場合は、視認では 一発で分かる「データの終わり」を具体的にデータとして指示してやる必要が あります。例えば最終セルに"end"と入力しておいて、こんなことをするとか。 Dim DATA_ADR As String Range("A1").Select Do Until Selection.Value = "end" Selection.Offset(1).Select Loop Selection.Offset(-1).Select DATA_ADR = Selection.Address Range("A1:" & DATA_ADR).Select 上のコードは「A1から順にセル内容を確かめ、中身がENDなら、A1からそのすぐ 上までを選択しなおす」という処理になります。
その他の回答 (2)
- FEX2053
- ベストアンサー率37% (7991/21371)
これ、参考になるかな? http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_cell.html 下の方にある「CurrentRegion」で上手く行けば簡単ですが。 そうでない場合、xlDownなどでアクティブセルの最終まで飛ぶとか、 行数を数えて置いてResizeするとか、色々考えられます。
お礼
ご回答ありがとうございます! 素人ながらこれを読んだら出来そうな感じがしました。が、すみません…わからないことが多いのですが、下記コーディングをモジュール?のどこかに追加すればいいということでしょうか? Worksheets("Sheet1").Activate Range("A1").CurrentRegion.Select >[Ctrl]+[*]キーで選択される範囲になります。 また、空白セルまでを選ぶ作業で↑とありますが、Ctrlと「け」のキー(*があったので)をjavascript:void(0);押しても時間がA1セルに入るだけで、できませんでした。押すキーが違うのでしょうか?
- aokii
- ベストアンサー率23% (5210/22062)
マクロ記録では、この辺りを柔軟に「A列にデータがあるところまで」というような指定の仕方はできません。マクロを編集して下さい。
お礼
さっそく回答ありがとうございました。 やはりできませんか…マクロの編集をするとして、例えば何行まで指定したらいいものか、と思っています。どんどん増えていく予定のデータ編集にこのマクロを使いたいので(実際はCOUNTIFだけではなく関数やコピペなどいくつもステップがあります。)マクロを実行するたびに手作業で編集するのでは大変だし、と思っていたのですが・・・
お礼
お礼が遅くなり申し訳ありません。 ご回答ありがとうございました。エクセルってこんなことができるんですね。すごく勉強になりました。おかげ様で必要な作業ができるようになりました。