• ベストアンサー

繰り返し処理のマクロ

下記のマクロをご教示いただけるでしょうか。 ①シートAのアクティブセルをコピーし、シートBのE1セルにペースト ②マクロ「結果反映」を実行 ➂シートAのアクティブセルを1行下に移動 ①から➂をアクティブセル=空白セルになるまで繰り返し

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1608/2445)
回答No.2

> シートBがアクティブシートになっている状態でマクロ「結果反映」を実行する 最初にシートAの ActiveCellのRangeをSetし、以降はシートBをアクティブにしたままに変更しています。 Sub Test() Dim Ws1 As Worksheet, Ws2 As Worksheet Dim FCell As Range Dim LastRow As Long, i As Long Set Ws1 = Sheets("シートA") Set Ws2 = Sheets("シートB") Ws1.Activate Set FCell = ActiveCell Ws2.Activate ''未入力セル選択時に中止する場合は以下を有効に 'If FCell.Value = "" Then ' MsgBox "未入力セルが選択されています", vbInformation ' Exit Sub 'End If ' LastRow = Ws1.Cells(Rows.Count, FCell.Column).End(xlUp).Row For i = 0 To LastRow - FCell.Row Ws2.Range("E1").Value = FCell.Offset(i, 0).Value Call 結果反映 Next Set FCell = Nothing Set Ws1 = Nothing Set Ws2 = Nothing End Sub 結果反映の時だけシートBをアクティブにしてそれ以外はシートAをアクティにしたい場合は Ws1.Activate Set FCell = ActiveCell Ws2.Activate を Ws1.Activate Set FCell = ActiveCell にしてCall 結果反映の部分を以下にしてください。 Ws2.Activate Call 結果反映 Ws1.Activate

KIKAIDER01
質問者

お礼

バッチリです! いつもありがとうございます。

Powered by GRATICA

その他の回答 (1)

  • kkkkkm
  • ベストアンサー率65% (1608/2445)
回答No.1

> アクティブセル=空白セルになるまで繰り返し これの最後のとらえかたで二通り考えてみました。 一定のセルではなくアクティブセルということなのでSheets("シートA")で選択されている ActiveCellを対象に進みます。 '選択している列の利用している最終行まで実行 Sub Test() Dim Ws1 As Worksheet, Ws2 As Worksheet Dim LastRow As Long, i As Long Set Ws1 = Sheets("シートA") Set Ws2 = Sheets("シートB") Ws1.Activate '未入力セル選択時に中止する場合は以下を有効に 'If ActiveCell.Value = "" Then ' MsgBox "未入力セルが選択されています", vbInformation ' Exit Sub 'End If ' LastRow = Ws1.Cells(Rows.Count, ActiveCell.Column).End(xlUp).Row For i = 0 To LastRow - ActiveCell.Row Ws2.Range("E1").Value = ActiveCell.Offset(i, 0).Value Call 結果反映 Next Set Ws1 = Nothing Set Ws2 = Nothing End Sub '選択している列の利用している最終行までに空白セルがあればそこでストップ Sub Test2() Dim Ws1 As Worksheet, Ws2 As Worksheet Dim LastRow As Long, i As Long Set Ws1 = Sheets("シートA") Set Ws2 = Sheets("シートB") Ws1.Activate 'こちらは未入力セル選択時には何も起こらないのでメッセージを出します If ActiveCell.Value = "" Then MsgBox "未入力セルが選択されています", vbInformation Exit Sub End If i = 0 Do While ActiveCell.Offset(i, 0).Value <> "" Ws2.Range("E1").Value = ActiveCell.Offset(i, 0).Value Call 結果反映 i = i + 1 Loop Set Ws1 = Nothing Set Ws2 = Nothing End Sub

KIKAIDER01
質問者

補足

ご回答ありがとうございます。仕様変更で申し訳ないのですが、②でシートBがアクティブシートになっている状態でマクロ「結果反映」を実行するにはどのように記述を変えれば良いでしょうか? (この記述ではマクロ「結果反映」が正しく動作しないので、シートBがアクティブシートではない状態で実行しているのが原因ではないかと考えました。マクロ「結果反映」単体では正しく動作します)

関連するQ&A

  • エクセルのマクロ(値を検索して別シートにコピー)

    エクセルで下記のマクロをご教示いただけるでしょうか。 1.Sheet1のアクティブセルの右に5つ、下に1つのセルを起点として下方向に6セル分をコピー (例)Sheet1のアクティブセルがA2だとすると、F3~F8をコピー 2.Sheet1のアクティブセルの値(yy/mm/dd形式の日付)と同じ値のセルをSheet2のA列から検索し、該当セルの右に2つ分のセルに行列を入れ替えて値のみをペースト (例)Sheet1のアクティブセル(A2)の値がSheet2のA4セルにあるとすると、Sheet2のC4に行列を入れ替えて値のみペースト 3.Sheet1のアクティブセルの値がSheet2のA列に2つ以上あれば、「同じ日付が複数あります。」というメッセージを表示

  • マクロで、新しいシートを作りたい。

    エクセルのマクロを教えてください。 今は、Sheet1のA2に年月日、B2:H2にコード、項目1、項目2、・・・と入力します。 入力が終わったら、マクロを実行し、その後A2:H2をクリアしています。 今回やりたいのは、マクロの実行時に新しいシートを追加し、A2:H2をコピーしたいのです。 1 Sheet1のA2から、年月を取り出す。2003/1/1→200301 2 シートの中に、Sheet200301が有るかどうか調べ、無かったらSheet200301というシートを作る。 3 新しいシートを作ったら、Sheet4のA1:Z2をSheet200301に貼り付ける。 4 Sheet200301の最後の空白行を調べる。(新しいシートを作って最初は2行目になってもらいたい) 5 4で調べた空白行を次の行に貼り付ける。 6 4で調べた空白行にSheet1のA2:H2を貼り付ける。 7 Sheet1のA2:H2をクリアします。 よろしくお願いします。

  • 「新しいマクロの記録」機能を使っての行挿入

    「新しいマクロの記録」機能を使って1行と2行の間に10行の空白行を挿入後、A13のセルを選択というマクロを作りました(マクロ1とします)。このマクロを実行すると1行と2行の間に10行の空白行が挿入された後、A13が選択されます。ここでもう一度、マクロ1を実行すると1行と12行の間にさらに空白行が10行挿入されA13が選択されます。このようになるのは当たり前と言えば当たり前なのですが、2回目にマクロを実行したときに12行と13行の間に10行の空白行が挿入された後、A24が選択されるようにするには、どのようにマクロを記録すればよいのでしょうか?  ようは、10行の空白行を挿入した後、セルを11行下に移動させるというマクロを作りたいのです。VBAの記述方法はほとんど分からないので「新しいマクロの記録」機能を使うことを前提にご教授ください。

  • データ変換マクロ

    数値データのシートがあります。 A列に空白があった場合、その行のEとFのセルをコピーして1行上のEとFのセルにコピーしたいというマクロを作成しています。 全部で100行ほどのデータに、いくつか空白セルがあって規則性はありません。空白セルのある行はすべてが対象となります。 空白を見つけた後、「その行のEとFのセル」という指定の仕方で詰まってしまいました。 良い方法をおしえてください。

  • マクロにて

    エクセルでコーピー&ペーストの 繰り返しをマクロに記録していますが データ量が200を超え尚且つ 異なるシート間のやり取りで途中 間違いやなんかでもうかれこれ 2時間やってます。「VBA」を 使ってと思ったのですが どこのサイトいってもこんな簡単な 作業の記述がなく、泣きそうです。 Sheet8の「D13」をコピー sheet1の「A8」にペースト(ただしセル結合してます)sheet1の「A26」(10枠目)まで 行ったらsheet2の「A8」・・・以下繰り返し sheet8のデータが終了したら完了。 エクセルに興味を持ち始めて 公私ともに使いこなせるよう 勉強中です。是非ご教授ください あと超初心者でもわかり易いサイト あったら教えてください

  • エクセル2000のマクロについて教えてください。

    実は、今日会社で失敗したのですが、エクセルのマクロ実行をしたら、エラー で実行中断となってしまいました。 ワークシートから別のワークシートへコピー&ペーストして印刷というマクロを組みたかったのですが、エラー内容は、 Active Cell Offset(-7,-14).Range("A1:AN15")selectです。 元のワークシートのセル位置と、コピーするワークシートのセル位置は同じ場所でないといけないのでしょうか? セルは同じ数とっているはずなのですが。何回かやってみて、 へんな場所にペーストされて、印刷までは出来たこともあるのですが、何がちがうのだろー。。解らない(;;) だれか教えてください!!!

  • ”アクティブセル行」の一行下を選択”するマクロ

    ■ ”アクティブセルの、1個下の行を選択し、新しい空白行を一行挿入” ■次にその”アクティブセルのA列とB列の値を、  新しく作った空白行に、コピー  ・・・といったマクロを組もうとしております。 たとえば 12行目を選択するプログラム(コマンド?マクロ?)は、  Rows(12:12) となっていたので、それにならって Rows(activecell:B) などとやってみたのですが、うまくいきませんでした。 このような場合、どうしたらよいのかアドバイスをいただけると助かります。 どうぞ、よろしくお願いいたします。  

  • マクロでアクティブセルにペースト

    画像はエクセルのマクロで、F3~F7のセルをコピーして、O3のセルにペーストするという内容です。これをO3ではなく、アクティブセルにペーストするにはどのように記述すればよいでしょうか?

  • エクセルのマクロで、複数のシートで、指定のアクティブセルに移動する方法

    エクセルの複数のシートがあるファイルで、指定の位置にアクティブセルを移動するマクロを組むにはどうしたらよいでしょか。 複数のシートがあります。 アクティブセルが各シートばらばらの位置だと見栄えが悪いです。 そこで B列の一番下から「END+↑」でとんだ位置で止まる。 複数のシート(20以上)を同じ作業 最後に一番左端のシートでをアクティブシートにして終了 ※A列は空白行のため、必ず埋まっているB列を基準にしたい マクロを教えたください。

  • エクセルのマクロについて質問です。

    エクセルのマクロについて質問です。 たとえば、 セルA1からAA1までのセルの中で、コピーとペーストを行います。(これは記録マクロで作ります) それと同じ作業を、3行下のA3からAA3の行でも行い、 また、3行下のA6からAA6の行で行う といった作業をマクロで作る方法を 教えていただきたいです。

専門家に質問してみよう