【Excel VBA】Join関数を使ってみよう

みなさん、join関数ってご存じですか?
Excel VBAで開発をして7年くらいたちますが、この前初めてExcel VBAにjoin関数があるというのを知りました。

Join(文字列型配列, 区切り文字)

配列を区切り文字で結合することが可能です。

&でも代用できるのですが、処理速度に大きな違いがでるとのこと。
参考 VBAの高速化(文字列の連結はJoinで行う)

配列を使用するため、join関数を使用した方が早いようです。

私は入力規則に日付を入れたくてこのjoin関数を使用しました。
入れる日付はマクロ実行日から2年分の月をyyyy/m形式で入力したいというものでした。

Excel VBA

Sub test()
    
   Dim i As Long
   Dim targetDate As Date, endDate As Date
   Dim objDate As Object
   Dim strDate As String
   

   '今回はハッシュテーブルを使用
   Set objDate = CreateObject("Scripting.Dictionary")
   
   targetDate = Year(Date) & "/" & Month(Date) & "/1"
   endDate = DateAdd("m", 24, targetDate)
   
   Do Until targetDate > endDate
      
      objDate(Format(targetDate, "yyyy/m")) = targetDate
      targetDate = DateAdd("m", 1, targetDate)
   
   Loop
   
   'ハッシュテーブルのキーをカンマ(,)で結合
   strDate = Join(objDate.Keys, ",")
   

   '入力規則
   With Sheet1.Range("B3:B11").Validation
      .Delete
      .Add Type:=xlValidateList, _
         Formula1:=strDate
   End With
   
   Set objDate = Nothing
    
End Sub

と上記のようにコードを作成し、エクセルに入力規則を設定しました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA