• 締切済み

マクロ初心者です。

会社で使用する元帳を作っています。マクロでボタンひとつで次シートに残高を繰越として移項出来、シート名は1頁からスタートで2頁、3頁…と続けるようにしたい。セル番地の内容は 残高は L43 次シートの前頁より繰越残高 L7 1頁 L1   1頁のL43を2頁のL7に、2頁のL43を3頁のL7に次々とボタンでつくりたいのです。 説明が不足かもしれませんがどなたかお願いします。

みんなの回答

  • azzu0707
  • ベストアンサー率46% (62/132)
回答No.5

そしたら 最終行を Sheets(シート数 + 1 & "頁").Range("A1:K42").ClearContents に置き換えてください

  • azzu0707
  • ベストアンサー率46% (62/132)
回答No.4

シートは現在1枚だと思うのですが、 シート名は"1頁"になっていますか? まあ、 エラーの出た行を Sheets(1).Copy Before:=Sheets(1) に置き換えて試してみてください。

momo0115
質問者

補足

ありがとうございます、感動致しました。シートを一枚だけにしてみました。 成功しましたが、罫線も消えてしまいました。 あと少しの様なのですが…何度も回答ありがとうございます。罫線が消えない方法があるならば教えて下さい。

  • azzu0707
  • ベストアンサー率46% (62/132)
回答No.3

勘違いしていました。 すでにシートが沢山あってそれのn頁のL43をn+1頁のL7にコピーかと。 シートも追加するのであれば。 Sub 繰越() Dim シート数 As Integer Dim i As Variant シート数 = ThisWorkbook.Worksheets.Count Sheets(シート数 & "頁").Copy Before:=Sheets(1) Sheets(1).Name = シート数 + 1 & "頁" Sheets(シート数 & "頁").Range("L43").Copy Sheets(シート数 + 1 & "頁").Range("L7").PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False Sheets(シート数 + 1 & "頁").Range("A1:K42").Clear End Sub でよろしいかと。 ボタンですが、コマンドボタンより メニューのツール⇒ユーザー設定にて 分類にてマクロを選択 ユーザー設定メニュー項目を適当なツールバーにD&D 出来たボタンを右クリックして名前に 適当な名前を。 同じく、ボタンを右クリックでマクロの登録を押し、 マクロの登録画面にて 繰越を選択してOK を押せば登録できます。 また勘違いしてたらゴメンナサイ

momo0115
質問者

補足

何度もありがとうございました。 試してみましたが、実行すると以下の部分が Sheets(シート数 & "頁").Copy Before:=Sheets(1) 『デバック』と出てこの部分が黄色で表示されてしまします。

  • azzu0707
  • ベストアンサー率46% (62/132)
回答No.2

No1です。 ごめんなさい、私の理解不足ですかね? >1頁のL43を2頁のL7に、2頁のL43を3頁のL7に次々とボタンでつくりたいのです。 ボタンとは、コマンドボタンのことでしょうか? Sub 繰越() Dim シート数 As Integer '宣言 Dim i As Variant '宣言 シート数 = ThisWorkbook.Worksheets.Count 'シート数を代入 For i = 1 To シート数 - 1 'シート数だけ繰り返す On Error Resume Next 'エラーでも続ける Sheets(i & "頁").Range("L43").Copy 'シート i頁 のセルL43をコピー Sheets(i + 1 & "頁").Range("L7").PasteSpecial 'コピーしたものをi + 1 頁 のセルL7に貼り付ける Application.CutCopyMode = False 'コピーモード解除 Next '繰り返し End Sub なのですが、各シートのL43には何か式が入っているのですか? それ以外にも式は入っていますか?

momo0115
質問者

補足

何度もありがとうございます。 そうです、コマンドボタンです。 L43の式は =SUM(F43-J43+L7) L8からL42迄数式がはいっています。例えば L8は  =IF(C8="","",SUM(L7+F8-J8)) L42は =IF(C42="","",SUM(L41+F42-J42)) F43は =SUM(F7:F42) J43は =SUM(J7:J42) まだシートは1枚だけ作り、増えていくのでコマンドボタンで一発で作りたいのです。 先ほどの回答も貼り付けたのですが、全く動きませんでした。色々すみません。

  • azzu0707
  • ベストアンサー率46% (62/132)
回答No.1

Sub 繰越() Dim シート数 As Integer Dim i As Variant シート数 = ThisWorkbook.Worksheets.Count For i = 1 To シート数 - 1 On Error Resume Next Sheets(i & "頁").Range("L43").Copy Sheets(i + 1 & "頁").Range("L7").PasteSpecial Application.CutCopyMode = False Next End Sub ってな感じですかね?

momo0115
質問者

補足

Sub 繰越() ' ' Macro1 Macro ' マクロ記録日 : 2006/2/20 ユーザー名 : momo0115 ' ' Dim シート数 As Integer Dim i As Variant シート数 = ThisWorkbook.Worksheets.Count For i = 1 To シート数 - 1 On Error Resume Next Sheets(i & "頁").Range("L43").Copy Sheets(i + 1 & "頁").Range("L7").PasteSpecial Application.CutCopyMode = False Next End Sub これを貼り付けしましたが、全く反応がありませんでした。他に足りない箇所などがあるのでしょうか?

関連するQ&A