- ベストアンサー
ExcelのVBAで指定した日付の列に文字数を入力する方法
- ExcelのVBAを使用して、指定した日付の列に文字数を入力する方法について教えてください。
- UserFormを使ってComboboxで月の列を指定し、新たに追加するComboboxで日付の行を選択して文字数を入力するようなコードを作成したいです。
- 具体的なコードの例や手順を教えていただけると助かります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
添付されている図では4月1日が何行目から始まっているのか解りません '4月1日が7行目から始まっている場合 日 = 日 + 6 8行目からだと 日 = 日 + 7 と修正してください Private Sub UserForm_Initialize() Dim i As Long For i = 1 To 12 Me.ComboBox1.AddItem i & "月" Next For i = 1 To 31 Me.ComboBox2.AddItem i & "日" Next End Sub Private Sub CommandButton2_Click() Dim 月 As Long, 日 As Long 月 = Replace(Me.ComboBox1.Value, "月", "") 日 = Replace(Me.ComboBox2.Value, "日", "") Select Case 月 Case 4 To 9 月 = 月 * 5 + 17 '4月1日が7行目から始まっている場合 日 = 日 + 6 Case 10 To 12 月 = 月 * 5 - 13 '10月1日が42行目から始まっている場合 日 = 日 + 41 Case 1 To 3 月 = 月 * 5 + 47 日 = 日 + 41 End Select Cells(日, 月).Value = TextBox1.Value End Sub
その他の回答 (1)
- watabe007
- ベストアンサー率62% (476/760)
>質問ですが・・・ >月 = 月 * 5 + 17←この部分ですが、どの様に理解したらよいでしょうか? まず Me.ComboBox1.Value で何月を選択したと、値が得られます 仮に 4月 だとすると Replace("4月", "月", "") と、"月"を""に置き換えると4の数値だけが残りますね コードで書くと 月 = Replace(Me.ComboBox1.Value, "月", "") になります。 4月の場合だと 月 = 月 * 5 + 17 ⇒ 月 = 4 * 5 + 17 で月に37が入ります、 この37が列番号になります。 37列 = AK列 5月だと 5 * 5 + 17 = 42 42列 = AP列 日付の場合も得た日付に始まりの行目を加算して求めています '4月1日が7行目から始まっている場合 日 = 日 + 6 >4月1日は、11行目 なら 日 = 日 + 10 になります
補足
ありがとうございます。 とても分かりやすい説明ありがとうございます 希望する動作が得ることができました。
お礼
度々私の質問に回答いただきまして本当にありがとうございます。 コードの意味も分かりやすく教えて頂きまして、今後、活用していければと思います。 また質問は、絶えないかもしれませんが、宜しくお願いします。
補足
ご回答ありがとうございます。内容が不足してまして申し訳ありません。 日付けの行の件ですが・・・ 4月1日は、11行目 10月1日は、46行目となります。 質問ですが・・・ 月 = 月 * 5 + 17←この部分ですが、どの様に理解したらよいでしょうか?