• 締切済み

エクセルでマクロを設定するには

初歩的な質問ですみません。午前中にカレンダーを別シートにも貼り付ける方法を質問したのですが、そのあと、シートが毎月新しくなるので、いったん覚えさせてあるシートの中の全部の関数をそのまま新しいシート(同じブック内の)にコピーするには、マクロを使うのでしょうか?そのためにはマクロの設定はどうしたらいいのでしょうか?

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

コピーしたシートから、数値を0にするVBAを考えました。ご参考に。 (1)セル値が""はそのまま。 (2)数値なら0をセット (3)関数式のあるセルはそのまま (4)結果として、見出し等漢字・文字列のセルはそのまま。 範囲指定をして実行をしてください。 操作で範囲指定しないで固定範囲にするなら、範囲をコード内に入れるなら、Range("a1:g20").Select とかの行を最初に加えてください。 Sub test01() Dim cl As Range For Each cl In Selection If cl.HasFormula Then GoTo p01 If cl.Value = "" Then GoTo p01 If IsNumeric(cl.Value) = True Then cl.Value = 0 Else MsgBox cl.Value End If p01: Next End Sub

回答No.3

#1の者です。 書き方を間違えました。 数式のみコピーされます。 ちなみに、書式のみの場合は Sub Macro1() Sheets("Sheet1").Cells.Copy 'いったんおぼえさせてあるシート Cells.PasteSpecial Paste:=xlFormats 'アクティブなシート '                ******** End Sub です。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

マクロでやらなくても、例えばSheet1をコピーし シフトキーを押しながら、Sheet2,3,4・・・ の「シートタブ」をクリックすると、(白色になり)Sheet2に貼り付けをすれば、Sheet3,4・・にも貼りつくのでは無いでしょうか。 形式を選択して貼り付けを選んで、数式を選んだのですが 値とも貼りつきました。原本における、月により可変部分は、人手で消さないとダメみたい(データの入っていない演算式あり、書式ありの原本を1度(1表)別に作らないといけない?)。 こういう質問でなければ、ごめんなさい。

aretoma
質問者

お礼

ご回答ありがとうございます。そうなんです。値までも貼りつくので困っています。原本作るよう考えてみます。

回答No.1

前回の質問で=Sheet1!A1の用に書かれていると思うのですが、 その関数をそのままコピーしてもよろしいのですか? 11月1日と12月1日は同じ場所にはきませんよね? 一応 Sub Macro1() Sheets("Sheet1").Cells.Copy 'いったんおぼえさせてあるシート Cells.PasteSpecial Paste:=xlFormulas 'アクティブなシート End Sub で書式のみSheet1からアクティブなシートへコピーされます。 コピー先のシートを選択してからマクロを実行してみてください。

aretoma
質問者

補足

再度ご回答ありがとうございます!教えて下さったマクロは、既に予定が書き込まれた状態から書式のみ新しいシートに反映するのですね?であれば、数式はどうなのでしょう? 11月 1234567 ・・・予定を書き込む行・・・ 89・・・・ ・・・予定を書き込む行・・・ ・・・・・・31 12月 1234567 ・・・・・・・ ・・・・・・31 この様な形式なのですが、次のシートでは1月なのですが、シートが変わる毎に月初めの曜日がずれるので、それは手作業で一旦始まりの1のみ入れて、その右の列は+1にする簡単な数式を入れるようにしました。 この数式もマクロで先ほどの書式と同じように新しいシートへコピーされますか? ややこしくてすみません。

関連するQ&A