都道府県穴埋めゲーム

VBAのコードについて
入力シートより「1月」シートに転記をしています。
今後は、1月シートでなく月毎(1月・2月・3月.etc...)に入力日を基準として該当シートに転記をしたいと思っていますが、どの様に変更すればいいか参考になりそうなものが見当たりません。

以下が、現在作成中。
Dim i
For i = 4 To Sheets("1月").Range("A10000").End(xlUp).Row + 1
If Sheets("1月").Range("D" & i).Value = "" Then

'Familyから1月に転記
Sheets("1月").Range("D" & i).Value = Sheets("Family").Range("B7").Value
Sheets("1月").Range("E" & i).Value = Sheets("Family").Range("M16").Value

'日付
Sheets("1月").Range("B4").Value = Date
Sheets("1月").Range("B" & i).Value = Date

Exit For

End If

Next 'Familyから転記した内容を消す
Range("B7").MergeArea.ClearContents
Range("B19:R42").ClearContents

'メッセージ
MsgBox "売上登録しました"

("1月")の部分を変えて対応できればと考えておりますが、ご教示いただければ幸甚です。

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

  • お世話になります。
    ご回答ありがとうございます。
    VBA初心者で言葉足らずで申し訳ございません。

    入力日=今日
    PCの年月日を起点。
    入力シート(会計伝票)
    上記シートで記載した該当箇所を1月〜12月(売上管理)まで作成した12sheetに転記したいです。
    尚、入力シート(会計伝票)と1月〜12月のsheetは同ファイル。
    その日にお会計した入力シート(会計伝票)を登録ボタンを押したら該当月のシートに転記させたいです。

    今日が2021年1月18日 → 1月シート
    今日が2021年2月18日 → 2月シート
    今日が2021年7月11日 → 7月シート
    2021年1月18日等はPCの右下に出ていると年月日で判断して1月〜12月シートを自動的に選んで転記する事がしたいです。
    入力日は、原則今日のみで遡るもしくは未来の日付はないです。
    毎日の作業を想定

    ご教示頂けますようお願い申し上げます。

    No.4の回答に寄せられた補足コメントです。 補足日時:2021/01/18 21:16

A 回答 (5件)

こんにちは



「入力日」というのが、今日のことなのか、特定の日として「入力日」が存在するのか不明ですが、とりあえずシリアル値で存在するものとして・・・

以下の例は、
・入力日から「半角数字+"月"」としてシート名に変換
・シートの存在をチェック
・シートが存在すれば、シートオブジェクトを変数に代入
する例です。

dt = DateValue("2021/1/18") ' 仮の「入力日」を設定
'dt = Date  ' 「入力日」が今日の意味ならこちらを使用

sName = Format(dt, "m月") ' 日付からシート名を作成
' シートが存在するかチェック
If Evaluate("iserror(" & sName & "!A1)") Then
 MsgBox "対応シートがありません" ' シートが無い場合の処理
Else
 Set sh = Worksheets(sName) ' シートがあれば変数に代入
End If

ご参考にでもなれば・・・
この回答への補足あり
    • good
    • 2

横から失礼します



補足の件は既に回答が出ていると思われますが?
その上で何か不都合があるのでしょうか?
    • good
    • 0

とある入力作業を行なう日に『〇月のシートに対して』って事をしたいのなら(月初めとかは当月ではなく前月でって場合もあり得るし)、



実は奥が深いInputBox
http://officetanaka.net/excel/vba/tips/tips37.htm

最初に何月のシートを対象としたいのか?を入力させるようにしては如何?
ユーザーフォームを使っているのならComboboxなどで選択って方法もありかもだけど、この場合そうでもないみたいなのにわざわざ使うのも何ですしね。

メソッドの方ならTYPEで数値も選べるので数値入力して貰い、その後に
Worksheets(i & "月")
⇒変数:i は数値型で宣言された物。
と文字を連結させることで文字列になるしね。
    • good
    • 0

https://detail.chiebukuro.yahoo.co.jp/qa/questio …

こちら無理でした?
見た限りでは可能なんじゃないかなと思いましたが、可不可の判定もないようですし。
    • good
    • 0

SheetsではなくWorksheetsを使ってあげればよいです。



Sheets("1月")

strMonth="1月"
Worksheets(strMonth)

strMonthはString型の変数でシートを参照する前にシート名をセットしてください。


Sheets("1月")

strMonth="1月"
Worksheets(strMonth)

strMonthはString型の変数でシートを参照する前にシート名をセットしてください。
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A