回答編集履歴

1 追記

kaz.Suenaga

kaz.Suenaga score 1815

2016/06/16 11:16  投稿

見た目は日付に紐付いているように見えますが、実際やっていることは数値の足し上げですよね。
つまり、初期値(1か7)に対して、+1、+2、と各ラベルにやっているのと変わらないのではないでしょうか。
```VBA
Private Sub cmb期_AfterUpdate()
 Dim i As Long ' ループ変数
 Dim lngStart As Long ' 初期値
 Const H1 = "01"
 Const H2 = "07"
 If Me!cmb期.Value In (H1,H2) Then ' 一応正しい選択肢なのかだけチェック
   lngStart = CLng(Me!cmb期.Value)
   For i = 0 to 5
      Forms![メインフォーム名]![サブフォーム名].Form.Controls("label月_" & CStr(i+1)).Caption = CStr(lngStart + i) & "月"   ' ラベルを変数を利用して指定、月を初期値+ループ変数として指定
   Next
 End If
End Sub
```
テストせず記憶で書いているのでどこか間違っているかもしれませんが、ラベル名が連番になっている前提で上記のようなコードでいいのではないでしょうか。
※ただし、初期値が8以降、つまり終わりまでの間に12月→1月という表示がある場合はそれを踏まえた書き方をする必要があります。13月にならないように。
※ただし、初期値が8以降、つまり終わりまでの間に12月→1月という表示がある場合はそれを踏まえた書き方をする必要があります。13月にならないように。
----
# 追記
```VBA
Private Sub cmb期_AfterUpdate()
 Dim i As Long ' ループ変数
 Dim lngStart As Long ' 初期値
 Const H1 = "01"
 Const H2 = "07"
 If Me!cmb期.Value = H1 OR Me!cmb期.Value = H2 Then ' 一応正しい選択肢なのかだけチェック
   lngStart = CLng(Me!cmb期.Value)  ' この時点で lngStart は 1 か 7なはず
   For i = 0 to 5
      Forms![メインフォーム名]![サブフォーム名].Form.Controls("label月_" & CStr(i+1)).Caption = CStr(lngStart + i) & "月"   ' ラベルを変数を利用して指定、月を初期値+ループ変数として指定
   Next
 End If
End Sub
```

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る