見学に行くとしたら【天国】と【地獄】どっち?

ファイル名をフォルダに作成するVBAを作りました。そのファイル名を①オプションボタン1~4を押したらファイル名の拡張子を除いてお尻に文字列”あ”を入れる。オプションボタン2を押す→い、3→う、4→えという風に。例)72030001(拡張子ナシ)あ。選択しない場合は選択を促す。ユーザーフォーム1,2,3,4のそれぞれのテキストボックス1にその値を転記する。②同じワークブックのシート1,2,3,4のそれぞれのB1セルにも同じ値を転記する。(ユーザーフォーム1=ワークシート1)仕事に必要で尚且つ最近VBAを始めたばかりで、どうすればいいのか困ってしまい相談しました。どうぞよろしくお願いします。
Sub test()
Const fpath As String = "C:\work\"
Dim nen As Integer
Dim wpath As String
Dim fname As String
Dim no As Integer
nen = Year(Date) - Year(DateSerial(2023, 1, 1)) + 72
wpath = fpath & nen
If Dir(wpath, vbDirectory) = "" Then
MsgBox "今年のフィルダが作成されていません"
Exit Sub
End If
fname = Dir(wpath & "\*.xlsx", vbNormal)
Do Until fname = ""
If Mid(fname, 5, 3) * 1 > no Then
no = Mid(fname, 5, 3) * 1
End If
fname = Dir()
Loop fname = wpath & "\" & nen & Format(Month(Date), "00") & Format(no + 1, "000")
ThisWorkbook.SaveAs fname & ".xlsm"
End Sub

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

  • すみません補足します。ユーザーフォーム90のコマンドボタン1を押すとユーザーフォーム0が開き、ユーザーフォーム0にオプションボタンが縦に4つ並んでいます。そして今回依頼の流れになります。記載のコードは他の方にお願いして書いて頂いたものです。勉強中の身で、切迫しており何分よろしくお願いします。

    No.1の回答に寄せられた補足コメントです。 補足日時:2023/03/08 10:07

A 回答 (1件)

こんばんは



オプションボタンは説明にあるのみで、どこにも出てこないので、どうなっているのかサッパリですが・・・

>オプションボタン2を押す→い、3→う、4→えという風に
単純に変数をひとつ作成しておいて、オプションボタンのクリックイベントで、その変数を「あ」、「い」、「う」・・に置き換えるだけで済みそうですね。
最終的に処理を行う際に、その変数の値を付加するようにしておけば良いでしょう。

変数にしなくても、フォームの非表示ラベルに記録しておいたり、シートの空きセルを利用するなどしても(どこに記憶しておくかだけなので)可能と思います。


>同じワークブックのシート1,2,3,4のそれぞれのB1セルにも同じ値を転記する。
シートのセル値を読むのとほぼ同様の処理で行えます。(右辺と左辺が変わるだけ)
例えば、シート名 "hoge" の「B10」セルに値 "fuga" を設定するなら
 Worksheets("hoge").Range("B10").Value = "fuga"
といった要領です。
上記は文字列で直接指定していますが、もちろん変数で指定することも可能です。
この回答への補足あり
    • good
    • 0
この回答へのお礼

初心者ですが、本やネットで教えて頂いた考え方で試してみたいと思います。ありがとうございました。

お礼日時:2023/03/11 15:20

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


おすすめ情報