ねこになりたい

おふとんと朝の別れをするのが辛い人向けです。正論で殴らず見守ってあげてください。

Array

概要

 
配列を格納する変数 = Array(インデックス番号)
Array関数を用いることで、配列を作成できます。
配列に入る型は不定なので、定義する際はVariant型にします。
また、配列の下限値は0です。私もよく間違えます(テヘペロ

 

サンプル

Dim demandingWorkingDay() As Variant
demandingWorkingDay = Array("月", "火", "水", "木", "金")
Range("B1:F1").Value = demandingWorkingDay

実行結果

配列の値をそのまま取得する。

この画像には alt 属性が指定されておらず、ファイル名は image-22.png です

補足

ReDimステートメントを使うことで、配列のインデックス番号を再定義できます。
ただし、ReDimは文字通り「再定義」なので、インデックスの値がリセットされます。
そのため、再度値を入れなおす必要があります。

Dim demandingWorkingDay() As Variant
Dim cruelQuestion As Integer
demandingWorkingDay = Array("月", "火", "水", "木", "金")
Range("B1:F1").Value = demandingWorkingDay
Range("B2").Value = "1週間を乗り切るの辛い・・・"

cruelQuestion = MsgBox("休日出勤させますか?", vbYesNo, "無情な選択肢")

If cruelQuestion = 6 Then
ReDim demaningWorkingDay(5)

' 一度リセットされるので再度入れなおす
demandingWorkingDay = Array("月", "火", "水", "木", "金", "土")
Range("B1:G1").Value = demandingWorkingDay
Range("B3").Value = "でも、休日は人いないから集中できる(暗黒微笑)"
End If

f:id:Arpino:20200329201122p:plain

[はい]が選択された場合は月~土まで出力

f:id:Arpino:20200329200943p:plain

 

既存の値を変更しない場合は、Preserveを使います。下記の例では分かりやすくするために、0から順に値を入れています。
Redimで設定した配列のインデックス番号が6から7に変更され、再定義しても0~6までの値が消えていないことが確認できます。

Dim demandingWorkingDay() As Variant
Dim cruelQuestion As Integer
cruelQuestion = MsgBox("休日出勤させますか?", vbYesNo, "無情な選択肢")
If cruelQuestion = 6 Then
 ReDim demandingWorkingDay(6)

 ' インデックス番号0から値を入れていく
 demandingWorkingDay(0) = "月"
 demandingWorkingDay(1) = "火"
 demandingWorkingDay(2) = "水"
 demandingWorkingDay(3) = "木"
 demandingWorkingDay(4) = "金"
 demandingWorkingDay(5) = "土"

 cruelQuestion = MsgBox("更なる高みを目指し、限界を超えますか?", vbYesNo, "最低な選択肢")
 If cruelQuestion = 6 Then
  ' 再定義&追加しても元々の値はそのまま
  ReDim Preserve demandingWorkingDay(7)
  demandingWorkingDay(7) = "日"

  Range("B1:H1").Value = demandingWorkingDay
  Range("B3").Value = "社畜道と云ふは死ぬ事と見つけたり"
 Else
  Range("B1:G1").Value = demandingWorkingDay
  Range("B3").Value = "でも、休日は人いないから集中できる(暗黒微笑)"
End If

Range("B1:F1").Value = demandingWorkingDay
Range("B2").Value = "1週間を乗り切るの辛い・・・"

End If

1. 選択肢を用意

f:id:Arpino:20200329201122p:plain

 

2. 1の選択肢で[はい]が選択された場合は更に分岐

f:id:Arpino:20200329201252p:plain

 

3. 2の選択肢で[はい]が選択された場合、月~日まで出力

f:id:Arpino:20200329181038p:plain