ほげーむわーく

宿題をゲームのように楽しむブログ

【エクセルVBA】ユーザーフォーム間で配列を受け渡す方法

f:id:takehito33711:20181222141643j:plain



今回はエクセルVBAユーザーフォーム間で配列の受け渡しをする方法をご紹介していきます。


VBAでは往々にしてプロシージャ間で変数や配列をやりとりする場合がありますが、
ユーザーフォームではそのやりとりが一筋縄ではいかないんですよね。


まずはプロシージャ間で変数や配列する場合には、プロシージャ名の()のところに渡したい変数や配列を入れて、
呼び出してやれば簡単に受け渡しができます。



次の例はプロシージャ①で配列を設定し、プロシージャ②にその配列を渡す例です。
プロシージャ②の()の中に、「ByRef 受け渡し名 as 受け渡す型」を入れます。
配列はVariant型なので受け渡す型=Variantとして設定してやります。


プロシージャ①でプロシージャ②をCallします。
「Call プロシージャ名()」の()の中に渡したい変数や配列を入れます。

Option Explicit
Public Sub プロシージャ①()
    
    Dim myAry(2) As Variant
    
    myAry(0) = "リンゴ"
    myAry(1) = "イチゴ"
    myAry(2) = "バナナ"
    
    Call プロシージャ②(myAry)
    
End Sub

Public Sub プロシージャ②(ByRef A() As Variant)
    
    Stop
    
End Sub


プロシージャ①を実行すると、プロシージャ②でStopがかかり、イミディエイトウインドウの中に配列の中身が確認できます。


f:id:takehito33711:20191104162437p:plain



つまりプロシージャ間で変数や配列をやり取りしたい場合には、プロシージャ名()の()の中に受け渡したいものを入れるだけでOKなんですが、
ユーザーフォームではこのやり方ができないんですよね。

それをユーザーフォームでも変数や配列のやり取りをしたいというのが今回の記事の内容です。

変数や配列のやり取りですが、「ユーザーフォーム⇔ユーザーフォーム」は出来ませんが、「ユーザーフォーム⇔プロシージャ」は可能です。

そこで、

送り側のユーザーフォームで配列を設定する

送り側ユーザーフォームからプロシージャに配列を渡す

受け側のユーザーフォームから配列が設定されたプロシージャを読み出す


このようにしてプロシージャを介することでユーザーフォーム間で変数や配列のやり取りができます。


それでは実際にやってみましょう。

ステップ①~送り側ユーザーフォームの設定~

まずユーザーフォーム①を作成し、コマンドボタンをつけておきます。
コマンドボタンを押すと設定した配列がユーザーフォーム②に送られるようにします。


f:id:takehito33711:20191104161143p:plain


ユーザーフォーム①に以下のコードを記述します。

Private Sub CommandButton1_Click()
    
    Dim myAry(2) As Variant
    
    myAry(0) = "リンゴ"
    myAry(1) = "イチゴ"
    myAry(2) = "バナナ"
    
    Call SendArray(myAry)
    
    Unload Me
    
    UserForm2.Show
    
End Sub

9行目で設定した配列をプロシージャに引数付きで渡します。
そして受け側であるユーザーフォーム②を開きます。

ステップ②~受けと送りのプロシージャを作成

ここではユーザーフォームから送られてきた配列を受け取るプロシージャと、受け取った配列をユーザーフォームに渡すプロシージャを作成します。
新しいモジュールを作成し、以下のコードを記述します。

Option Explicit
Private RcvAry() As Variant

Public Sub SendArray(ByRef SendAry() As Variant)
    
    RcvAry = SendAry
    
End Sub

Public Function PostAry() As Variant
    
    PostAry = RcvAry
    
End Function


コード記述の実際の画面はこんな感じです。


f:id:takehito33711:20191104232142p:plain


まず送られてくる配列の受けを担うプロシージャを作成します。

4行目のプロシージャで、Callで送られてきた引数(SendAry)をPrivate変数で受けます。
Private変数は同モジュール内でプロシージャを超えて使える変数です。モジュールの一番上に宣言してます。(プロシージャの中でしか使えないものはDimで宣言します。)
送られてきた配列はVariant型なので、Private変数の方もVariant型で宣言します。
このようにしてCallで送られてきた配列SendAryを、Private変数で受けてやることで、このモジュール内のどのプロシージャでもSendAryを保持して使えるようになります。

次に配列を送るプロシージャを作成します。

10行目のようにFunctionプロシージャを作成します。
ここではPostAryをFunctionの名前にします。FunctionにすることでPostAryをそのまま使用することができます。
送られてきた配列はPrivate変数で保持されているので、PostAry=Private変数とすることでPostAryに配列をセットすることができました。

ここまでの流れとしては、
ユーザーフォームからSendAryをCallで送る

SendAryをPrivate変数RcvAryで受ける(SendAry=RcvAry)

Private変数RcvAryをPostAryに変換する(RcvAry=PostAry)


SendAry→RcvAry→PostAryと配列がリレーしています。

ステップ③~ユーザーフォームで配列を受ける~


最後のステップです。

配列の受け側での処理を実装していきます。
ここではInitializeの画面にコードを書いていきます。

Private Sub UserForm_Initialize()
    
    Dim ChkAry() As Variant
    
    ChkAry = PostAry
    
    Stop
    
End Sub


実際に配列が送られてきているかどうかチェックしましょう。
変数宣言でChkAryを設定します。
ChkAry=PostAryとして送られてきた配列を受けます。

それでは実際に動かしてみて確認していきましょう。

ユーザーフォーム①のコマンドボタンをクリックすると、ユーザーフォーム②が開いてStop画面になり、イミディエイトウインドウに送られてきた配列の中身が確認できるかと思います。

f:id:takehito33711:20191104235054p:plain

まとめ


今回はユーザーフォーム間で配列を受け渡す方法をご紹介しました。
ユーザーフォームに配列を受け渡すにはプロシージャを介することでできるようになります。
そのプロシージャは配列と受けと送りの役割をそれぞれ持たせ、Private変数を活用することで配列をリレーさせることがポイントでした。

機会があればまた他のVBAテクニックをご紹介できればと思います。
お疲れ様でした。

表参道の未来について考察した

f:id:takehito33711:20191102110749j:plain

先日所用があったので、表参道という世界でも有数のリッチでエレガントでナウい(死語)お洒落な街を徘徊していた。

田舎者臭を極力漂わせぬために、家にある極力お洒落であろう洋服を着ていった。
お洒落の代名詞、超有名なブランド、ユニクロの服を着て。


さて、



表参道を歩くとなると、普段の生活とは別世界の道が広がっていた。


ルイヴィトンやグッチなど名だたる有名ファッションブランドばかりが陳列している。
当然だ。表参道を彩るからには世界的に有名でオシャンティなブランドしか出店を許されないのだ。

ダイソンもあった。
ダイソンがオシャンティなブランドだったとは知らなかった。


お洒落な空間に内心戸惑いながらも目的地まで歩みを進める私。
そこでふと目に留まるものがあった。


高級車。


路肩のパーキングメーターがあるところにこれでもかと言うほど高級車がずらり。
BMW、ベンツ、レクサス等々。


なんであんなに人目につくところに駐車するのだろう。
なんで駐車場を使わないんだろう。


答えは明白である。


道行く人に自分の自慢の車を見てほしいのである。きっと。
「民よ我が車の前にひれふせ」と言わんばかりの佇まいである。

そりゃあ自分がベンツのEクラスなんぞ所有していたら、これ見よがしにひけらかすであろう。
誰の目にも留まらない駐車場に置いとくなんてもったいない。
一方で軽自動車を持っていたらあんなところに駐車する気持ちにはとてもなれない。



お、今日も高級車が並んでいるな。表参道はやはりこうでなくては。
ベンツ、ベンツ、アウディ、軽自動車、ポルシェ、、


ん?


今変は車なかったか?


道行く人はきっとこう思うであろう。
明らかにTPOをわきまえていない車があると。
お前、表参道をなめてんのかと。


一発レッド。退場。平凡な車には表参道に駐車する権利すら与えられないのだ。
これが現実である。




そんなことを考えながらふと思った。

何か表参道をぶちかますものはないかと。

今や表参道は経済力豊かな富裕層御用達の街だ。
庶民と一線を画したような佇まい。納得いかない。
本来パーキングなど誰が停めても良いようなシステムである。
それが高級車しか許されないような暗黙の了解が出来ていることに憤りを感じてしまうのだ。
なぜ自分の車が高級車でないばかりに気を使って人目のつかないパーキングまで行かなければならないのか。


この暗黙の了解をぶち壊す必要がある。
表参道の路肩に自慢のマイカーを誰でも停められるようにする。
高級車じゃなくても路肩に停めてもいいんだと、庶民が自信をつけられるような手段。



軽トラを停めてみようじゃないか。



f:id:takehito33711:20191028220123j:plain


想像してみてほしい。これが表参道の高級車ラインナップに悠然と並ぶのである。


ベンツ

f:id:takehito33711:20191028220941j:plain


BMW

f:id:takehito33711:20191028221008j:plain


アウディ

f:id:takehito33711:20191028221023j:plain


軽トラ

f:id:takehito33711:20191028221042j:plain


見た目で判断してはいけない。
軽トラの圧巻の耐久性と圧巻の積載能力。悪路走破性も優れている。ベンツやBMWとこれほど差別化を図った車種はないだろう。生産性においてベンツなど軽トラの足元にも及ばない。
生活を支えているのはベンツやBMWではない。軽トラだ。
農家の方たちが大切に育てた野菜や果物は軽トラによって運搬される。
軽トラなくして世の中は成り立たないのである。

つまりスペックや生活に対する貢献度を鑑みるとアウディやポルシェに引けを取らない能力を秘めているのである。
ゆえに総合点で判断すればこれら高級車と並んでも遜色ないことがお分かりいただけるであろう。


そして何と言っても圧倒的な庶民感も軽トラの魅力だ。安心感が違う。
ヤ〇ザが黒塗りのベンツから下りてきたら震えあがるだろうが、軽トラから下りてきたら何か安心する。
道でも聞きたいのかなと思える余裕が出てくる。


そう、この安心感をもってすれば表参道の駐車は怖くない。
何せ軽トラが駐車してあるのだ。軽自動車でも安心して駐車することができる。


見た目も非常に魅力的だ。
頭がでかくて体が小さい。
癒し効果が半端ない。


名だたる高級車の中に軽トラがあればその存在は一際輝くだろう。
いや一周回って軽トラって実はお洒落なんじゃないかと思う人も出てくるだろう。


そして軽トラはお洒落の代名詞となり、表参道になくてはならない自動車となる。
人々はこぞって軽トラを買い求めるようになる。


軽トラの人気は爆発的に増大し、車メーカーは次々と新しい軽トラを発売する。
そして高級軽トラなるものも市場に出回るようになり、富裕層たちは軽トラを2台、3台と所有するようになる。
ついにはベンツやBMWも軽トラの開発に乗り出すようになり、ベンツの軽トラ、アウディの軽トラが人気を博す。



そしていつしかベンツやBMWの高級軽トラが表参道に並ぶのだ。

エクセルで最強の進捗管理表を作る【③予定表作成編】

f:id:takehito33711:20190110232029j:plain


今回は予定表のフォーマットと予定バー入力のイベントを作成していきます。
前回の記事がこちら。

takehito33711.hatenablog.com


そして今回の完成のイメージはこんな感じです。
範囲を選択して右クリックすると予定バーが入力されるような形です。

f:id:takehito33711:20191010223139g:plain

予定表フォーマットを作成しよう

まずは予定表のフォーマットを作成します。
エクセルシートの名前を「予定表」に変更します。

f:id:takehito33711:20191010230111p:plain


そしたら下記のコードを打ち込んで実行してみてください。
12~18行目の初期設定の部分には好みに合わせて適宜変更してください。

Public Sub 予定表フォーマット作成()
    
Dim i As Long                                  'カウンタ
Dim StartDay As Date                        '開始日
Dim EndDay As Date                         '終了日
Dim LastRow As Long                        'カレンダーの行数
Dim StartColumn As Long                 '日付開始列
Dim WS As Worksheet                      'ワークシート「予定表」
Dim iRange As Range
Dim Color As Long                            'テーマ色
    
 '*******初期設定*******************************************
Set WS = Worksheets("予定表")
StartDay = DateAdd("d", -10, Date)
EndDay = DateAdd("d", 10, Date)
Color = RGB(201, 252, 113)
StartColumn = 6
LastRow = 10
 '**********************************************************
'表示のクリア    
WS.Cells.SpecialCells(xlCellTypeVisible).Clear
    
 '内容の表示************************************************
WS.Cells(2, 2) = "テーマ名"
WS.Cells(2, 3) = "内容"
WS.Cells(2, 4) = "担当者"
WS.Cells(2, 5) = "備考"
   
'セルの結合
For i = 2 To 5
Range(Cells(2, i), Cells(5, i)).Merge
Next i
 '**********************************************************
    
'日付表示*********************************************************************************************
For i = 0 To EndDay - StartDay
WS.Cells(1, StartColumn + i) = CDbl(DateAdd("d", i, StartDay))
WS.Cells(2, StartColumn + i) = Year(WS.Cells(1, StartColumn + i))
WS.Cells(3, StartColumn + i) = Month(DateAdd("d", i, StartDay))
WS.Cells(4, StartColumn + i) = Day(DateAdd("d", i, StartDay))
WS.Cells(5, StartColumn + i) = WeekdayName(Weekday(WS.Cells(1, StartColumn + i)), True, vbSunday)
Next i
    
 '****************************************************************************************************
    
 '罫線の設定***********************************************************************************************
    
 '罫線のクリア
WS.Cells.SpecialCells(xlCellTypeVisible).Borders.LineStyle = xlNone
    
'罫線の描画
With Range(WS.Cells(2, 2), WS.Cells(LastRow, StartColumn + EndDay - StartDay))
        .Borders.LineStyle = xlContinuous
        .Borders(xlInsideVertical).Weight = xlMedium
End With
    
'罫線の描画(太字)
With Range(Cells(2, 2), Cells(5, StartColumn + EndDay - StartDay))
        .Borders.Weight = xlMedium
End With
    
'罫線の描画(二重線)
With Range(Cells(2, 5), Cells(LastRow, 5))
        .Borders(xlEdgeRight).Weight = xlThick
End With
    
'土日の色付け
For Each iRange In Range(WS.Cells(5, StartColumn), WS.Cells(5, StartColumn + EndDay - StartDay))
    If iRange = "土" Or iRange = "日" Then
    Range(WS.Cells(5, iRange.Column), WS.Cells(LastRow, iRange.Column)).Interior.Color = 16773119
    End If
Next iRange
    
'外枠罫線の設定
Range(WS.Cells(2, 2), WS.Cells(LastRow, StartColumn + EndDay - StartDay)).BorderAround Weight:=xlThick
    
'***********************************************************************************************************
    
'色の設定****************************************************************************************************
Range(WS.Cells(2, 2), WS.Cells(5, StartColumn + EndDay - StartDay)).Interior.Color = Color
Range(WS.Cells(1, 2), WS.Cells(1, StartColumn + EndDay - StartDay)).Font.Color = vbWhite
'***********************************************************************************************************
    
'調整******************************************
For i = 1 To EndDay - StartDay
        
        '月の変わり目の設定
        If WS.Cells(4, StartColumn + i) <> 1 Then
        WS.Cells(2, StartColumn + i) = ""
        WS.Cells(3, StartColumn + i) = ""
        
        Else
        
        With Range(WS.Cells(2, StartColumn + i), WS.Cells(LastRow, StartColumn + i))
            .Borders(xlEdgeLeft).LineStyle = xlDouble
        End With
        
        End If
        
'本日の日付の強調
        If WS.Cells(1, StartColumn + i) = CDbl(Date) Then
        Range(WS.Cells(2, StartColumn + i), WS.Cells(LastRow, StartColumn + i)).Interior.Color = vbYellow
        End If
    
Next i
'**********************************************
    
End Sub

フォーマットが作成されたでしょうか。


イベントを作成しよう

次にイベントの作成をします。
範囲を選択して右クリックでバーが表示されるようにします。

まずVBAの画面を開き、下図のように
①「予定表シート」を選択し、
② Worksheetを選択し、
③ BeforeRightClickを選択します。

BeforeRightClick内に記述したコードが、右クリックを押されるたびに実行されることになります。

f:id:takehito33711:20191010231144p:plain


準備できたら下のコードを記述します。
バーは立体的に見えるような工夫をしてみました。

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)        

Dim LeftColumn As Long                                  '選択範囲の左端
Dim RightColumn As Long                                 '選択範囲の右端
Dim ActiveRow As Long                                   '選択範囲の行位置
Dim sHeight As Long: sHeight = Range("A6").Height       '図形の高さ
Dim shp As Shape                                            '図形
Dim shpName As String                                   '図形の名前
Dim ShapeRow As Long                                   '図形の行位置
Dim shpColor                                                   '図形の色
Dim WS As Worksheet
    
'初期設定****************************************************
Set WS = Worksheets("予定表")
LeftColumn = Selection(1).Column
RightColumn = Selection(Selection.Count).Column
ActiveRow = ActiveCell.Row
shpColor = RGB(91, 161, 99)
'************************************************************
 
'項目が入力されている範囲には適用されないよう処理   
 If ActiveCell.Row >= 6 And ActiveCell.Column >= 6 Then

    '図形の大きさ設定
    Set shp = ActiveSheet.Shapes.AddShape(Type:=msoShapeRoundedRectangle, _
                                Left:=Cells(ActiveRow, LeftColumn).Left, _
                                Top:=Cells(ActiveRow, LeftColumn).Top, _
                                Width:=Selection.Width, _
                                Height:=sHeight * 1)
    shp.Select
    
    Selection.ShapeRange.Line.Visible = msoFalse
    
    '図形の属性設定
    With Selection.ShapeRange.Fill
        .Visible = msoTrue
        .ForeColor.RGB = shpColor
        .ForeColor.TintAndShade = 0
        .ForeColor.Brightness = -0.25
        .Transparency = 0
        .Solid
    End With
    
    With Selection.ShapeRange.ThreeD
        .BevelTopType = msoBevelCoolSlant
        .BevelTopInset = 13
        .BevelTopDepth = 6
    End With
    With Selection.ShapeRange.ThreeD
        .BevelBottomType = msoBevelCircle
        .BevelBottomInset = 6
        .BevelBottomDepth = 6
    End With
    
    '図形の文字設定
    Selection.ShapeRange.TextFrame2.TextRange.Font.Size = 6.5
    Selection.ShapeRange.TextFrame2.VerticalAnchor = msoAnchorMiddle
    Selection.ShapeRange.TextFrame2.TextRange.ParagraphFormat.Alignment = _
        msoAlignCenter
    With Selection.ShapeRange.TextFrame2.TextRange.Font
        .NameComplexScript = "Times New Roman"
        .NameFarEast = "Times New Roman"
        .Name = "Times New Roman"
    End With
    
    '★★★★★

    Set shp = Nothing
    
 End If
        
End Sub


記述ができたらワークシートに戻って範囲を選択して右クリックしてみてください。
バーが出現したら成功です。

そしてこのコードにはまだ続きがあります。
それが66行目の★★★★★です。
ここには次回以降にある仕掛けを施す予定なので楽しみにしていてください。

お疲れ様でした~。

宮古島旅行記④

f:id:takehito33711:20190831213255j:plain


ーーーーー7月某日。
宮古島旅行4日目。

この日はよく晴れていました。
朝起きてホテルのベランダで海を眺める私。ホテルの目の前が海、オーシャンビュー。
この景色はずっと見てられるなあ。

f:id:takehito33711:20190831205758j:plain


お世話になったウェルネスヴィラ ブリッサ。
サービス良しロケーション良しアクティビティ豊富と、最高のホテルでした!
帰るのが名残惜しい~


f:id:takehito33711:20190831210148j:plain


www.nanseirakuen.com


今日は伊良部島のホテルに泊まるので伊良部島まで移動します。
移動途中にお土産を買いに、お土産屋さんで下車。

www.simanoeki.net

f:id:takehito33711:20190831210221j:plain


お店の中には旬のマンゴーさんたちの姿が!何と神々しい


f:id:takehito33711:20190831210311j:plain


宮古島から伊良部大橋を渡って伊良部島に上陸!
(伊良部大橋は景色がすごく綺麗だったんですが、写真撮る余裕がなかった。。見渡す限り輝く青のオーシャンビューでした)

そこからお昼ご飯を食べに伊良部島に隣接する下地島に到着。
漁港があります。


f:id:takehito33711:20190831214830j:plain


パヤオ直送。

パヤオ??


f:id:takehito33711:20190831210417j:plain


お昼いただいちゃうよ~ん。


f:id:takehito33711:20190831210527j:plain

www.tabirai.net


さしみ定食。
新鮮で美味しかった!


f:id:takehito33711:20190831210557j:plain



そしてやってきたのが下地島空港
ここは日本一美しいと言われる桟橋があります。
ここはマジで綺麗だった。。
宮古島に来たら是非行ってほしいところです。

場所はココ。



www.travel.co.jp


空港だけあって飛行機が飛んでます。
迫力がすごい。


f:id:takehito33711:20190831210630j:plain



車で進めないので徒歩で絶景ポイントまで。
この道をひたすら進む。。。


しかしめっちゃ暑いです。。
日陰がないので宮古島の直射日光をモロに浴びます。
太陽の光がかなりしんどいので日傘等で対策することを強くお勧めします。


f:id:takehito33711:20190831210654j:plain


道中もすでに絶景。


f:id:takehito33711:20190831210832j:plain


到着。
うおー青がめっちゃ綺麗だ!
何であんなに水色なんだろう。

色んな種類の青が海を彩ってます。
吹き付ける風と海の匂いと透き通るような青がすごく心地良い。
ここは来てよかった。暑いけど。あと風がすごいけど。


f:id:takehito33711:20190831210917j:plain




続いて最終日に泊まる宿泊先へ移動。最後は派手にいこうということで、ヴィラにしました。Villaですね。
なんかええ感じのところです。ええ感じに高級なところです。

庶民の憧れ。それがVilla。

それがここヴィラブリゾート。
ヴィラと伊良部島がかかってるんですね、多分。

villabu.jp


着いた。

いよいよ初Villaだ。粗相がないようにせねば。
今日はVillaに泊まるに相応しいお客として振舞わねば。
今日は履きつぶした靴をさらに履きつぶすまで履きつぶす普段の私とは違うのだ。
そう、いつもVillaご利用してますよ、何か?みたいなスタンスで臨むのだ。足元を見られてはいけないのだ。


f:id:takehito33711:20190831211037j:plain


ロビー。
目の前に海。これプライベートビーチ。
なるほどね、そうだよね、Villaだもんね。知ってるよ僕。いつものやつだよね。


f:id:takehito33711:20190902011345j:plain



f:id:takehito33711:20190902011421j:plain


着いて早速おもてなしをされる。
ウエルカムドリンクだ。

うん分かるよウエルカムドリンク。いつも家に帰ったら飲んでるよウエルカムドリンク。
飲み会でいつも最初に頼むのがウエルカムドリンク。ウエ、ウエ。。
(この写真のあとウエルカムドリンクはお亡くなりなってしまいます。盛大にこぼしました。すぐに新しいのを用意してもらいました。申し訳ございませんでした。)


f:id:takehito33711:20190831211117j:plain


お部屋に案内されます。
各棟独立になっていてプライベートが確保されています。


f:id:takehito33711:20190831211145j:plain



f:id:takehito33711:20190902012354j:plain



酒も揃ってるぜ!
ワインも用意されてましたよ。


f:id:takehito33711:20190902012507j:plain


そしてウエルカムフルーツ。
このウエルカムさがVillaたる所以なのだ。


f:id:takehito33711:20190902012212j:plain


外。
何だここは。まるでリゾートではないか。


f:id:takehito33711:20190831211216j:plain


プライベートプール。すげえ。


f:id:takehito33711:20190902012923j:plain


夕食をいただきます。
せっかくなので今晩はBBQを選びました。
部屋まで食材を運んできてくれます。


f:id:takehito33711:20190831211359j:plain


でで~ん。
宮古牛、アグー豚、やんばる若鳥の最強トリオ。


f:id:takehito33711:20190831211442j:plain


オマール海老、サザエ、魚介のホイル焼き。


f:id:takehito33711:20190902233557j:plain


やっぱこれでしょ!!


f:id:takehito33711:20190831211515j:plain


いただきます!


f:id:takehito33711:20190902233926j:plain



・・・


!!!


えんだああああああ~
いやああああああああああ~
うぃうおるうぇいずらぶゆ~うううううあああ

美味い!最高!!


波の音を聞きながら部屋でBBQするのはいいですね~

あまりの気持ちよさにプールにダイブしてしまいました。



ひとしきりはしゃいだ後はシャワータイム。

お、ジャグジーあるやん。
テレビもあるやん。


f:id:takehito33711:20190831211540j:plain


ジャグジーのお湯が熱すぎて飛び上がりましたが、テレビを見ながらゆっくりリフレッシュできました。


外はすっかり日も暮れて、心地いい風が吹いています。

ビーチチェアに寝ころびながら星空を、、、
曇り空を眺めて宮古島最後の夜を迎えました。


f:id:takehito33711:20190831211608j:plain

全く参考にならない残暑の乗り切り方

今週のお題「残暑を乗り切る」

f:id:takehito33711:20190829001203j:plain


今週のお題が残暑を乗り切る。

残暑の乗り切り方と言われれば難しいものがある。
というのも残暑を乗り切るという対処療法的なものよりも、残暑を乗り切れるように鍛えておくというのが私なりの流儀なのである。


夏といえば暑い。当然のように暑い。
とてもこのままじゃ過ごせないので一般ピープルはエアコンの冷房のスイッチを入れると思う。
この行動は正しい。室内はそれこそサウナのごとく蒸し上がっているので、脱水症状等気をつけるためには最適な行動といえる。


しかし私は自室において冷房をつけないようにしている。
その理由はこうだ。


人は環境に適応できる能力がある。例えば筋トレ。初めは重いものを全く動かせなかったが、トレーニングすることで動かせるようになる。
これすなわち身体の負荷を解消するように筋肉が発達した結果だ。
つまり自分に負荷をかけることで、身体がレベルアップするのだ。


この理論を応用したのが暑い中でも冷房をつけないというものだ。
暑いという負荷をかけることで己の肉体を強くする。そのおかげでどんなに暑い環境でも己1つで生きていける。
これは自分と夏の暑さとの闘いだ。夏との闘いに勝つことで強い肉体を手に入れることができるのだ。
さあ夏よ、かかってこい。私を強くしてみなさい。


ある夜のこと。いつものように窓から入ってくる風を頼りに眠りについていた。
しかしこの日は全くと言っていいほど風がなかった。完全なる「無」である。
無が引き起こした状態。それは全く寝付けないほど暑苦しい夜を提供していた。

いくら何でもこれはない。常軌を逸している。勝負どころではない。このままでは溶けてしまう。
気づけば手元にはエアコンのスイッチ。これを押せば確実に幸せになれる。だがしかし、、!!

何のためにここまで頑張ってきたんだ。これは試練だ、ここが正念場だ。
しかし頭の中の悪魔が囁く。


「押してええんやで」


悪魔が関西弁で囁く。何という口の臭さだ。
換気を良くせねば。部屋が腐ってしまう。コイツの口臭で。
ほどなくしてエアコンの「送風」のスイッチを入れた。不快な臭いは外気に消え、私は幸せを手に入れた。
そして幸福に包まれたまま眠りについた。


そしてある夜のこと。いつものようにエアコンの送風を頼りに眠りについていた。
しかしこの日はいつも以上に蒸し暑い。高すぎる湿度によってとても寝付けるものではなかった。

気づけば手元にはエアコンのスイッチ。幸せへのボタン。
いや、だめだだめだ。ちゃんと自分の力で乗り切るんだ。

葛藤している隙に悪魔が忍び寄る。そして囁くのである。


「自分、早く押した方が身のためやで」


悪魔がつぶやく。関西弁で。しかし何という口の臭さだ。歯にドリアンでも挟んでいるのか。
しかも体臭がひどい。高い湿度によってめちゃくちゃ汗をかいているではないか。誰かコイツの汗を止めてくれ。
エアコンよ、助けてくれ。このままではマンションが、マンションが腐ってしまう。
ほどなくしてエアコンの「ドライ」のスイッチを入れた。
部屋にデオドラントをまき散らし、適切な湿度のおかげで幸福に包まれたまま眠りにつくことができた。



そしてそしてある夜のこと。いつものようにエアコンのドライを頼りに眠りについていた。
しかしこの日は暑すぎる。気温は過去最高を記録していた。日中に照らされたアスファルトヒートアイランド現象を引き起こしていた。
だが負けるわけにはいかない。もうすでに「送風」と「ドライ」のカードを切ってしまった。あとは大将の「冷房」のみ。
ところが自分の意思に反したように手元にはエアコンのスイッチ。
しかし、ここは屈するわけにはいかない。いかないんだ。

だがやはり悪魔はこの機を逃さなかった。ドリアンを挟んだ口元で私に囁く。


「自分、はよ押さんとアカンでホンマ(怒)」


悪魔が話しかけてくる。なぜか関西弁で。しかし相変わらずの口の臭さだ。これはもはや公害だ。口臭道徳に違反している。
しかし何故コイツが切れてるんだ。怒りたいのはこっちだ。お前の臭いに。
切れた熱気で部屋の温度が上昇する。その温度にまた切れる。部屋の温度はハイパーインフレを起こしていた。

エアコンよ、助けてくれ。このままではマンションが焼失してしまう。
私は泣く泣くエアコンの「冷房」のスイッチを入れた。

部屋の温度は下がっていく。意識がはっきりしていく。部屋を幸福感が満たしていく。
これがエアコンの力か。世界は・・・こんなにも涼しかったんだ。

部屋に悪魔はいない。退治したんだ。長き戦いだった。あいつは何だったんだろう。


あの過酷な環境が嘘みたいに彩られた世界で、目が覚めたような気がした。

私はエアコンと共に生きていこう。

意地をはってエアコンの力を頼らないなんて、ろくなことにならない。

身体を壊してしまったら元も子もない。


そして今日も「冷房」のスイッチを入れる。

適温よりも2℃高い設定にして。

悪魔が来ないおまじない。



えーと、

なんだこの文章は