プロが教える店舗&オフィスのセキュリティ対策術

vbaについて

主に以下のような設定をしたいです。

Aブックの表の行数が20未満だったら
Bブックのsheet1に記載

Aブックの表の行数が20以上だったら
Bブックのsheet1に記載かつ続きをsheet2を新たに作成し記載

具体的に、、
Aブックの表の行数が 20以上だった場合の例
▪︎パターン1
Aブックの表の行数が35だっだ場合、
Bブックには、sheet1に20行分のデータを格納
新しいシートを作成し(名前はsheet2)そこには残りの15行分のデータを格納する

▪︎パターン2
Aブックの表の行数が50だっだ場合、
Bブックには、sheet1に20行分のデータを格納
新しいシートを作成し(名前はsheet2)そこには残りの20行分のデータを格納する
新しいシートを作成し(名前はsheet3)そこには残りの10行分のデータを格納する

上記の具体例のように
決まった行数分(今回は20行分)そのシートにデータを格納し、20行分より超えれば新しいシートにその続きのデータを格納するというマクロを組みたいです。

ある程度のイメージ条件です。
Aブックには
・B2からG2がヘッダーとして項目名称を入れる(名前はなんでも良い)
・B2からG2下は可変でデータはなんでも良い。

Bブックには
・D4セルにAブックのB列(B2から下)のデータが入るようにする
・M4セルにAブックのC列(C2から下)のデータが入るようにする
・H7セルにAブックのE列(E2から下)のデータが入るようにする

質問者からの補足コメント

  • 抜けてました。
    Bブックに印刷範囲の設定をします。
    範囲はセル(A1:O9)です。
    ループする際は
    下に印刷範囲を増やすイメージです。

    イメージ例、
    Aブックに3行分のデータがあれば
    Bブックで、3ループかつ3の印刷範囲ができます。

    セル(A1:O9)に印刷範囲1つ
    1行分空けて
    セル(A11:O20)に印刷範囲2つ
    1行分空けて
    セル(A22:O31)に印刷範囲3つ

      補足日時:2023/06/08 23:48

A 回答 (1件)

こんにちは



説明が曖昧なのと、どの部分について知りたいのかも全く分からないので、「20行ずつ処理する」部分に関しての要領の一例のみです。(細かな部分は省略)


maxR = Aブックの表の行数取得

Set sh = ブックBのsheet1
For i = 1 To maxR Step 20
 If i > 1 Then
  ブックB.Worksheets.Add
  Set sh = Activesheet
 End If

 ブックA.表の i 行目.Resize(20).Copy sh.所定のセル
Next i
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!