dポイントプレゼントキャンペーン実施中!

一つのブックに、シート”入力票”及びシート”様式”があるとします。
入力票にデータ入力することで様式に反映(様式は日付ごとに別シートが生成)されるようなものをイメージしています。

入力票B3セルには日付が入力([Ctr]+[;]で)されるとします。
日付が入力されたのち、入力票上に別途作成されたコマンドボタンを押下すると、シート”様式”がコピーされ、シート名を入力票のB3セルに入力された日付(月日のみで表示)として生成される処理をご教示願います。
シート様式は、原本扱いなので、そのまま残ります。

VBA初心者でマクロの記録では作成できたのですが、汎用性のあるコードに修正できず苦労しております。

A 回答 (2件)

>入力票にデータ入力することで様式に反映


ここについては、マクロの記録で作成されているとして

>入力票上に別途作成されたコマンドボタンを押下すると、シート”様式”がコピーされ、シート名を入力票のB3セルに入力された日付(月日のみで表示)として生成される処理

Private Sub CommandButton1_Click()
Dim nShtName As String

'入力チェック
  If Sheets("入力票").Range("B3") = "" Then MsgBox ("日付を入力してください"): Exit Sub
'----
'出力用データの作成
  With Sheets("入力票")
'    変数 = データ
'    配列など = データ群
  End With

'様式シートを複製
  nShtName = Format(Sheets("入力票").Range("B3"), "m月d日")
  Worksheets("様式").Copy After:=Worksheets(Worksheets.Count)
  ActiveSheet.Name = nShtName
'----

'出力(書き込み)
  With Sheets(nShtName)
'    データ = 変数
'    データ群 = 配列など
'    .Range = Sheets("入力票").Range
  End With

End Sub

どの部分に記録で作成したマクロを入れるかですが、
サンプルの様にデータ作成と書き込みに処理を分ける事が難しいようであれば、
'様式シートを複製の前に
念のため 様式シートの入力箇所をクリアー 

'様式シートに入力票シートの内容を入力して、(記録で作成されマクロ)

様式シートを複製 のような手順になるかと思います。


様式シートに入力票シートの内容を入力は、
シートイベントなどで都度、様式シートに値を入れていくのも良いのですが
数式での参照は、コピーされてしまうので不具合の元です。

様式シートには、他のシートを参照する関数式などは禁物ですよ。
    • good
    • 0
この回答へのお礼

ありがとうございました。
後者の順序でなんとかうまく処理されるようになりました。
丁寧にご説明いただきありがとうございます。

お礼日時:2020/05/29 09:34

自身もコード見ないと何とも言えませんが、


1)シートのコピー
2)その後にシート名を変える
その仕様のマクロを自動記録で作ります。
たぶん、手動でシート名を変えるマクロのところで、新しいシート名が読み取られると思います。””(ダブルコーテーション)でくくって出ます。

その前の命令で

シート名=Range(”B3”)

と一行挿入

新しいシート名のところを「シート名」に置き換えればできないでしょうか。
(VBAコードが提示されていないので、イメージでしかコメントできませんが…。)
    • good
    • 0
この回答へのお礼

ありがとうございます。説明が不十分で申し訳ありません。参考にさせて頂きます。

お礼日時:2020/05/29 09:35

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