ExcelマクロA実行時にマクロBをクリアする方法

このQ&Aのポイント
  • ExcelのマクロAを実行した際に、マクロBで格納されている変数(cnt)の値を「0」にクリアする方法を教えてください。
  • 現在の処理は、マクロBを使用してテンプレートをコピーし、セルの下に一つまたは複数回貼り付け、データを入力するという形で行われています。その後、マクロAを使用してデータを別のシートに転記し、整形しています。
  • マクロBで実行回数(cnt)を参照し、次に貼り付ける位置を決定しています。cntの定義は「Static cnt As Integer」となっています。マクロAを実行するタイミングで変数cntを「0」にクリアしたいのですが、具体的な記述方法がわからずに困っています。お手数ですが、教えていただけると助かります。
回答を見る
  • ベストアンサー

Excel マクロAが動作した時にマクロBをクリア

Excelのマクロで、 マクロAを動作した時に、マクロBで変数(cnt)に格納していた値を「0」にする方法を教えて下さい。 現在やっていることは、 テンプレートをマクロBを使って1回ないし複数回セルの下に続けてコピーし、データを入力、 マクロAを使って別シートにそのデータを転記して清書すると言う形にしています。 マクロBで実行回数をcntに格納し、次にコピーする位置をcntを使って出しています。 cntの定義は、「Static cnt As Integer」になっています。 この変数cntを、マクロAを実行した時に、0にしたいのですが、 どの様に記述するのか独学なのでうまくいきません。 ご教授下さいますようお願いいたします。

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

  • ベストアンサー
  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.1
makkie33
質問者

お礼

なるほど!! 宣言の外に記述と言うのがあったとは! まだまだ勉強不足ですね。 思い通りに動作させることが出来ました。 ありがとうございました。

関連するQ&A

  • エクセルのfor nextマクロが思ったとおりに動作しません・・・。

    Sub 行列入替貼り付けの繰り返し() Dim cnt1 As Integer Dim cnt2 As Integer For cnt1 = 3 To 17 Step 4 For cnt2 = 1 To 39 Step 8 Sheets("元データ").Select Range("A" & cnt1 & ":C" & cnt1 + 3).Select Selection.Copy MsgBox ("A" & cnt1 & ":C" & cnt1 + 3) Sheets("貼り付け先").Select Range("A" & cnt2 & ":D" & cnt2).Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True MsgBox ("A" & cnt2 & ":D" & cnt2) Next cnt2 Next cnt1 End Sub **************************************************************** 以上が自分で作ったコードなんですが、いかんせんマクロ超初心者なもので処理が思った通りにいきません。 <やりたい処理> 1「元データ」シートのA3:C6をコピー 2「貼り付け先」シートのA1:D1へ、行列入替・値貼り付け 1’「元データ」シートのA7:C10をコピー 2’「貼り付け先」シートのA9:D9へ、行列入替・値貼り付け ・・・以降、「元データ」シートの入力されている範囲のセルまでコピーして行列入替・値貼り付けの繰り返し 以上がやりたい処理なんですが、上記のようにはならず実際には 1「元データ」シートのA3:C6をコピー 2「貼り付け先」シートのA1:D1へ、行列入替・値貼り付け 1’「元データ」シートのA3:C6をコピー 2’「貼り付け先」シートのA9:D9へ、行列入替・値貼り付け の繰り返しになってしまい困っています。 (1と2まではできていますが、1’の所がうまくいっていません) どうか解決方法をご教授お願いいたします。 ※「元データ」シートの入力されている範囲はあらかじめ分かっています。上記のコードでは、 For cnt1 = 3 To 17 Step 4 For cnt2 = 1 To 39 Step 8 と、範囲を小さく取っていますが、これはテスト用なので、 実際のデータ範囲はもっと広いです。 また、メッセージボックスは、カウンタ変数の進捗状況をチェックする為に置いてあるだけで 完成用のコードでは消去する予定です。

  • EXCEL VBAを使ってマクロを組んだのですが、消えてしまいます。

    VBAを使ってマクロをEXCELに組んだのですが、貼り付け先のデータをダブルクリックするとデータが消えてしまいます。 組んでいるマクロは (前提) ファイルA・・コピー元データ ファイルB・・貼り付け先データ (内容) Aファイルでマクロを実行すると、Aファイルの内容がBファイルにコピーされるというものです。 Aファイルの元データは数式のため、Aファイル内でいったん値として貼り付けてから再度コピーして、Bファイルに貼りつけています。 Aファイルは自分で作成したものですが、Bファイルは他社作成のため、もろもろ変更ができません。 Aファイルにもロックが必要のため、保護をかけています。(ロック、表示ともに) マクロ実行後、Bファイルの貼りつけされたデータをダブルクリックすると、ダブルクリックしたセル内容が消えてしまいます。 まったく原因がわからず困っています。すみませんがどなたかわかるかたお願いいたします。

  • Excelマクロ

    お世話になります。 Excelのマクロに関する質問です。 目的としては、D列に様々な文言が入っており、 D列に記入されている各文言の数をカウントしたいと思っています。 ただし、D列の各文言が複数あった場合でも、 A列が同じ値の場合は数に含めない、という条件があります。 ex)D列に「りんご」という文言が10個あります。   D列に「りんご」と記入されている行のA列は、 「赤」「青」の2パターンしかありません。 ⇒この場合、「2」とカウントしたいです。 現在、以下のマクロを考えています。 =========================================================== sub test() Dim i As Long, x As Long, cnt As Long, buf As Object '「i」「x」「cnt」を数値として定義。「buf」にD列の値を格納します。 x = 4 '4行目以降を対象としています。 Do While Cells(x, 1).Value <> "" 'A列が空白でない場合のみを対象とします。 cnt = 0 '各行のD列に入っている値の数を数えるため、まずはカウントを0にします。 i = 4 '4行目以降を対象としています。 Set buf = Cells(x, 4) ' D列の値を変数「buf」に格納します。 Do While Cells(i, 1).Value <> "" 'A列が空白でない場合のみを対象とします。 If Cells(i, 4).Value = buf And Cells(i, 1).Value <> Cells(x, 1).Value Then  ' D列の値が「buf」に格納した値と同じ、かつ、       ' A列の値が、bufに値を格納した時と異なる場合のみ対象 cnt = cnt + 1 '数を数える対象であれば、+1します。 End If i = i + 1 '次の行に移るために+1します。 Loop Cells(x, 5).Value = cnt ' E列にcntに格納された値を入力 x = x + 1 '次の行に移るために+1します。 Loop end sub ===================================================== 上記のマクロでは、E列にカウント後の数らしいものが入力されるのですが、 値が正しくないようです。 お力添えをいただけますでしょうか。 よろしくお願いいたします。

  • ワードのテンプレートでマクロを組みましたが、動作しません

    ワードの文書テンプレートにマクロを組みました。 ところが、いざテンプレートから文書を起こしても、肝心のマクロが実行されません。 どうしてマクロが実行されないのか、アドバイスいただけないでしょうか。 ちなみに、ワードは2000、OSはXPと2000と両方試しました。 また、マクロの内容は、文書中に配置されたフォームフィールドのテキストを、ボタンを押すとクリップボードにコピーするという、素朴なものです。 よろしくお願いいたします。

  • エクセルのマクロ中で

    飛び飛び(ctrl+クリック)で選択された値を 別シートに貼り付けるマクロを作成中です。  元はD列にある値なのでRange("D" & cnt)として (cntは変数)  cnt = Selection.Row.Countで行番号を取得しようと しましたがうまくいきません。 D1から順番に縦方向に最終データまでは行けるのですが ・・・  初心者に「産毛」が生えたくらいです。ご教授お願いします

  • Excel データコピーのマクロ

    ExcelでAというファイルのデータをBというファイルにコピー&ペーストするマクロを組みたいと考えています。 本当はAファイルを開かずにできるとベストなのですが、 マクロを実行する(マクロ登録したオートシェイプを押す)とAファイルを開き、 Bファイルにコピペが終わればAファイルを閉じるという動作を行うマクロは組めるでしょうか? どなたか、ご存知の方が居られればお教え願います。 よろしくお願いいたします。

  • エクセルのマクロのコードを教えてください

    エクセルマクロについて教えてください。 エクセルバージョンは2013です。 現在定例業務の改善を行っております。手作業で実施している作業をマクロで自動化したくコードを教えてください。〈作業〉 1台帳.xlsのA~F列でデータを入力してデータベースを作成しています。 2そのデータを社内他部署送付用の定型フォーマットに転記して所定のフォルダに名前を付けて保存しています。定型フォーマットのC1に台帳.xlsのB列のデータ、D4にC列のデータ、F5にE列のデータを転記して台帳.xlsのA列のデータをファイル名に追加して所定のフォルダにほかんします。(ファイル名例「案件+A列のデータ.xls」) ※定型フォーマットも所定のフォーマットフォルダで管理しています。いつもそれをコピーして使用しています。 3保存したファイルの保管場所のファイルパスを台帳.xlsのG列に転記してハイパーリンクにする こんな作業になります。台帳.xlsのデータは不定期で増えていくので1件ずつ実行できればと思っています。実行済みと未実行の判別はどこかの列の「済」なんかつけて条件判別できればと思っています。 よろしければ教えてください。 (1)所定のフォルダは仮でマイドキュメントの「案件保管フォルダ」 (2)定型フォーマットはマイドキュメント直下においてある (3)定型フォーマットはの「案件詳細」シートに転記 (4)案件は文字列としてプラスA列のセルのデータを使用して「案件保管フォルダ」に保管しています。

  • エクセルのマクロ

    以下のマクロを教えて下さい。 よろしくお願いします。 [1] Book1のSheet1のA列のデータを、Book2のSheet1のB列にコピーする(B列の先頭から)。 [2] Book1のSheet2のA列のデータを、Book2のSheet1のB列にコピーする([1]で貼り付けたものの次行から)。 [3] Book1のSheet3のA列のデータを、Book2のSheet1のB列にコピーする([2]で貼り付けたものの次行から)。 *A列はデータがない場合はありません。途中に空行があることもありません。 *[1][2][3]は一括処理で結構です。 *マクロ自体はBook3に作成する予定です。

  • エクセルマクロ

    全くの素人です。 200人のお得意先に案内状を送付します。 sheet1 A列1~A列200に会社名、 B列1~200までに、代表者の名前を入力しています。 sheet2に案内状があります。 会社名と名前だけ変えて200回するのもひと苦労ですので、マクロを使えればと思います。 1マクロに記憶する 2A列1・B列1をコピー 3sheet2に貼り付け4印刷 5マクロ記憶終了 マクロを実行するとA列1・B列1ばかり印刷されます。 A列2・B列2 A列3・B列3 と言うように順番に下段を印刷させる設定はどのようにすれば良いのでしょうか

  • EXCELのマクロでデータをクリアしたい

    仕事でエクセルのマクロを使ってリストを作る作業があるのですが、行き詰まりました。どなたか助けて下さい。お願いします。 表を作るのには二つのマクロを使っています。 【一つめのマクロ】 1.定形のウェブページからテキストをコピーする    内容は商品名や商品番号や数量です 2.エクセルの一番左上に貼り付ける 3.するとマクロが働いて貼り付けたデータはseet1に保存されて自動的に新しいシートが用意される 4.新しいシートに別のデータで1.2.を繰り返す この作業は9回まで繰り返し、一旦エクセルを閉じます。 次に再びエクセルで 【二つ目のマクロ】を立ち上げ、現れた『リスト作成』ボタンを押すと自動的に完成の表が作られます。 最初はこの方法で快調だったのですが、行き詰まりました。 ・行き詰まりその1 一つめのマクロで九つまでコピーペーストするのをくり返して、二つ目のマクロを使うと今までのデータをすべて反映して表が作られてしまいます。うまく説明できないのですが、例えば 月曜にコピーペーストして表完成。 火曜に別のデータでコピーペーストして表を完成させると、必要ない月曜のデータも含めて表が出来てしまう。 これが一つめの困りです。 ・行き詰まりその2 二つ目の困りは、ある日別の社員が一つめのマクロを使ってコピーペーストしていたところ、誤って9つ以上シートを作ってしまったらしく、作りすぎたシートを削除しました。 そうしたらフリーズしたので、再起動してやり直ししたら、そのマクロのファイルを開くたびに、上記の失敗が現れてそれ以上のデータが作ることができなくなりました。(2つめのマクロを動かすと失敗データが上書きされるのみです) 快調な時は表が完成すると、一つめのマクロでは何のデータも残りませんでした。 このような稚拙な説明しか出来ないのですが、どなたかご教授下さい

専門家に質問してみよう