エクセルのマクロについてわからない点がありますので、どうか教えて頂けないでしょうか。
Windows XP Pro、Office XPの環境で、マイクロソフトのOffice Onlineで下記の2007年カレンダーをダウンロードしました。
http://office.microsoft.com/ja-jp/templates/TC10 …
そこで、例えば1月のカレンダーの1日の「1」のセルを最初に選択しておきます。
ここからマクロを相対参照で記録開始し、方向キーで右へ1つ移動させてマクロの記録を終了します。
そして記録したマクロを実行すると、私の記録した動きではないようなのです。
具体的に言うと、例えば「2日」の位置からマクロを実行すると、「赤口」だけ選択して欲しいのに、「赤口」とその右の「3」の2つの部分が選択されてしまうのです。
この動きが私には理解できずに困っているのです。
何故このような結果になってしまうのでしょうか。
マクロに詳しい皆さん、どうかよろしくお願いします。
No.2ベストアンサー
- 回答日時:
質問のテンプレートダウンロードしてみました。
おかしい原因は、結合セルでマクロ記録しているからです。
結合セルだとセル範囲を余分にとってしまいます。
で、どうすればいいかお分かりですよね。
質問のマクロ記録を結合してないセルですればいいわけです。
例えば、
セルP1を選択しておいてマクロ開始(相対参照)
方向キーで右へ一つセル移動、そして終了。
これで上手くいきます。
ご回答ありがとうございます。
仕事の都合で返答が遅れた事をどうかお許しください。
結合セルを含んだ場合の記録マクロの性質を理解できました。
以前はVBAで大きなプログラムも組んでいたんですが…
お恥ずかしい限りです。
ご助言、深く感謝いたします。
No.3
- 回答日時:
こんにちは。
#1 のWendy02です。>たったこれだけのことも記録マクロの限界を超えている、
というよりも、VBAは、「結合セルとマクロとは相性が悪い」と覚えておいたほうがよいです。結合セルが入ると、非常に手数が多くなります。
マクロの仕組みが分かって記録マクロを作るというのは、以下のようなコードの場合は、テクニックとしては有効でも、その必要はありませんね。
ActiveCell.Offset(, 1).Select
少しでもよいから、本格的なVBAの言語を学んだらよいかと思います。
再度のご回答、どうもありがとうございます。
返答が遅れた事をどうかお許しください。
5年位前まではVBAである程度大きなプログラムも組んでいたのですが、記録マクロは殆ど行った事がなく、今回本当に久しぶりに使ってみたのです。
カレンダーの日付の数字を大きくして「大安」などの文字を日付の下に配置するマクロを簡単に記録してみようと試みたのですが、2,3分で出来るだろうと考えていた事がうまくいかず、悩んでしまいました。
落ち着いて考えてみると原因はすぐに判明したのですが、「記録マクロ」ってこんなものだったの?と、思ってしまったのです。
結合セル以外にも記録マクロと相性の悪いものが多分あるはずなので、これから少し調べてみようと思います。
ご助言、どうもありがとうございました。
No.1
- 回答日時:
こんにちは。
単に、右に行くだけですから、マクロにしなくても、右の矢印キーで動かせばよいと思いますが、こういうのは、記録マクロの範囲でもないけれど、マクロ(VBA)にするには、あるレベルが必要になると思います。
うまくいかないのは、記録マクロでは、次のセルの範囲を取っているだけだからです。
Sub RightMoving()
If Intersect(ActiveCell.Offset(, 1), Columns("AY")) Is Nothing Then
ActiveCell.MergeArea.Offset(, 1).Select
ElseIf InStr(ActiveCell.Offset(6, -3).Value, "平成") = 0 Then
ActiveCell.Offset(6, -44).Select '次の月
Else
ActiveCell.Offset(13, -44).Select
End If
End Sub
この回答への補足
回答ありがとうございます。
>うまくいかないのは、記録マクロでは、次のセルの範囲を取っているだけだからです。
という意味がよくわからないのですが、所詮「記録マクロ」だけではうまくいかないこともある、たったこれだけのことも記録マクロの限界を超えている、ということなのでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) ワードのマクロについて教えてください。 1 2023/01/22 11:43
- Excel(エクセル) マクロだと数式が表示される 2 2022/09/10 14:48
- Excel(エクセル) マクロでコピーすると数式が表示される 1 2022/09/09 20:21
- Excel(エクセル) 現在のセルの文字列を右隣のセルの名前にするマクロをつくりたい 4 2023/01/12 09:01
- その他(Microsoft Office) Office2013サポート終了後、何を選ぶか 8 2022/11/21 15:45
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Excel(エクセル) 【マクロ】プリントスクリーンした画像をエクセルに貼付して印刷したい 6 2022/11/30 20:11
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- Excel(エクセル) マクロを教えてください 3 2023/07/31 21:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで複数のシートのクリ...
-
Excelで数字を入れたら対応する...
-
Excelのシート上のShapeにイベ...
-
Excel VBAでのWorksheet_Change...
-
エクセルファイルを開いた回数...
-
エクセルで○をつけるマクロ設定
-
エクセル シート内の一番下のセ...
-
excel定数の違いについて。xlAu...
-
長い時間かかるマクロが実行中...
-
エクセル:セル内の文字列の最...
-
フォルダ内にある全ファイルの...
-
エクセルのワークシート(テン...
-
Excelでセル内の文字をファイル...
-
【エクセル】フリーワード検索...
-
複数のブックに一括で値入力す...
-
エクセルで特定の行だけ行削除...
-
エクセルでマクロを作りすぎた...
-
指定値をマクロで検索&シート移動
-
エクセルのマクロでコマンドボ...
-
Excelマクロでブック全体を検索...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでのWorksheet_Change...
-
Excelで数字を入れたら対応する...
-
エクセルで複数のシートのクリ...
-
エクセルファイルを開いた回数...
-
Excelのシート上のShapeにイベ...
-
エクセルで特定の行だけ行削除...
-
長い時間かかるマクロが実行中...
-
エクセル シート内の一番下のセ...
-
【エクセル】フリーワード検索...
-
Excelでセル内の文字をファイル...
-
【エクセル】「実行時エラー’10...
-
シートではなくBOOK間で重複し...
-
フォルダ内にある全ファイルの...
-
EXCELのダイアログシートって、...
-
エクセル:セル内の文字列の最...
-
自分の専門分野の仕事。初見で...
-
セルの一部分だけを太字にする方法
-
エクセルで○をつけるマクロ設定
-
エクセル マクロ 一定時間おき...
-
Excelにて、同じ画像を複数のセ...
おすすめ情報