Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2013)
リストボックス
投稿日時: 21/09/08 21:20:20
投稿者: tomisuke

A1にリストを作りたいです。
リストの内容は、ブックを開いたときの西暦を中心として「去年、今年、来年」と3年間を西暦で作りたいと思っています。
 
Private Sub Workbook_Open()
a = Year(Date)
b = Year(Date) - 1
c = Year(Date) + 1
 
  ActiveSheet.Range("A1").Validation.Delete
    ActiveSheet.Range("A1").Validation.Add Type:=xlValidateList, Formula1:="b,a,c"
End Sub
 
これではリストが「a,b,c」となってしまい、西暦で表示できません。
また、ブックを開いたときに自動的に今年(リストの2番目)を表示する事は可能でしょうか?
 
あまり詳しくなく、途方に暮れています。
助力をお願いいします。

回答
投稿日時: 21/09/08 22:23:57
投稿者: hatena
投稿者のウェブサイトに移動

変数を""の中に入れたら単なる文字になりますのでそうなります。
下記のように""の外に出して & で連結するといいでしょう。
 

ActiveSheet.Range("A1").Validation.Add Type:=xlValidateList, Formula1:=b & "," & a & "," & c

 
あるいは、配列を使って、
 
Private Sub Workbook_Open()
    Dim y(0 To 2)
    y(0) = Year(Date) - 1
    y(1) = Year(Date)
    y(2) = Year(Date) + 1
    
    ActiveSheet.Range("A1").Validation.Delete
    ActiveSheet.Range("A1").Validation.Add Type:=xlValidateList, Formula1:=Join(y, ",")
End Sub

投稿日時: 21/09/09 08:07:27
投稿者: tomisuke

速い回答ありがとうございました。
おかげさまで解決できました。