2024年11月7日木曜日

桑マンこと桑野信義さんの箸の持ち方以来の衝撃らしいが、その後、彼はちゃんと矯正して普通になりますた ー 石破総理と箸(政治談議)

確かに豪快だな
     
社会人になってから、正しくなかった箸の持ち方を、矯正したことがあります。
その時は、市販されている補助具なしで、努めて箸を持ち直すようにしました。

三か月くらいは経ちましたでしょうか、何となく、正しい持ち方に慣れました。
子供の頃、両親から箸の持ち方が悪いと注意されましたが強制的に直されない。

放任されたのですが、社会人になって気恥ずかしい思いをするのは、自分自身。
宴会などで、上司、同僚の箸の持ち方を見て、自分の作法が気恥ずかしくなる。

こうして、二十代前半で矯正したのですが、そのまま直さずにいる人がいます。
特にテレビなどで出演する芸能人がそうだったら、かなりドン引きする分けだ。

まあ、笑福亭鶴瓶は、食事をするシーンがあると箸の持ち方を、毎回詫びます。
NHKの”家族に乾杯”を視聴していると、あの年で、あの持ち方ではなあと思う。

それが、わが日本国を仕切る総理大臣が、そうだったら正にドン引きでしょう。
実は、そういう御仁が実在しておりまして、なんと現首相の石破総理なのです。

それで、国会の首班指名選挙が、特別国会での召集が間もなく迫っております。
そのような渦中の人ならば、その人となりの一挙手一投足に耳目が集まるもの。

石破氏ならば国民人気も高く、自民党の信頼を回復させてくれるかもしれない。
党員の期待から総裁選の石破勝利に結びつきましたが、ふたを開ければどうだ。

混乱での衆院解散、更に党非公認とされた候補の支部に二千万円振り込まれる。
などなど、国民を欺き裏切るような不祥事連続なのは、皆さんもご存じの通り。

そんな体たらくの石破総理ですから、身辺はどうなのだと探られても仕方ない。
そこで、本人のマナーに焦点が当たって、ユーチューブでお宝動画の探り出し。

ラーメン議連の一コマ
     
その時の箸の持ち方が、自分が親だったら矯正レベルだと、言われてしまった。

実際、作法としてはよろしくないし、他にもラーメン議連の食事風景でも同様。
確かに同氏の食事作法では、外交で日本代表として出ていくのは余りに恥です。

嫌いじゃなかった人も、箸とご飯茶碗の扱い方を見て幻滅、落胆しているほど。
こんな所で恥を晒して欲しくないと、弱り目に祟り目の石破さんは因果応報だ。

というわけで、石破首相がマナー違反を指摘されるのは、本人の身から出た錆。
選挙に負けても総理の椅子にしがみ続けようとする感じが否めなくて、それが無様にも思えてくるほど、これでは支持率アップも全く望めないと思う一方、早く辞任した方が身のためだよと助言したくもなる、自分なのでした。



いいねと思ったら、三つポチっとね!
にほんブログ村 スキースノボーブログへにほんブログ村 スキースノボーブログ スキーへにほんブログ村 旅行ブログ 旅日記・旅の思い出へ
にほんブログ村    にほんブログ村      にほんブログ村 



2024年11月5日火曜日

ネットの投稿が、わざと分かりずらく書いていると邪推してしまうような説明を糺す(その②) ー シート上のコントロール動的作成(VBAマクロ)

シート上ActiveXコントロール
          
その①で説明した内容は、ユーザーフォーム上のActiveXコントロールでした。
今回は、ワークシート上で、複数のコントロールを一気に作ってしまう手法ね。

ただ、ワークシートのActiveXコントロールは、OLEObjectの属性で括られる。
一方、OLEは、"Object Linking and Embedding"の略で、かなり古い仕組み。

昔は、WordにExcelなどの別のアプリケーションを貼り付けるのに使いました。
貼り付けた後は、貼り付けた個所をクリックすると、編集できたりもしたのよ。

しかも、一太郎や花子のアプリでもOLEを使うと他のアプリと連携できました。
だけど、エクセルのシートに貼るのに、何でOLEのオブジェクトなんだろうか。

まあ、オフィスの各アプリに貼付けられるコントロールオブジェクトだからか。
そう思うことにして、Objectなのか、OLEObjectなのかは、使う時に注意だな。

それでコードですが、冒頭のような複数コントロールを動的配列にする手法だ。
というわけで、コードの構造は、その①で説明した内容を参考にして下さいね。

こちらの記述でも、”OLEObjects.Add”で複数個を作成した後は、コントロールを配列に流し込んでから、クラスモジュールでイベントの挙動を起こす操作につなげていくのですが、この配列を削除してしまうと、イベントが起きなくなるので、何かゲームに活用できないかと思案する自分なのでした。

※起動方法:
① プロシージャ”Macro1”と”try”を順にコールすると、イベントが発生できます
② ①の後、プロシージャ”try2”をコールすると、イベントは発生しません

※モジュール1に記述するコード
Sub Macro1()
  Dim obj As OLEObject, i As Long
For i = 1 To 5
Set obj = ActiveSheet.OLEObjects.Add( _
            ClassType:="Forms.CommandButton.1", _
            Link:=False, DisplayAsIcon:=False, _
            Left:=5 + (i - 1) * 55, Top:=5, Width:=50, Height:=50)
With Sheet1.OLEObjects("CommandButton" & i).Object
  .Caption = i
  .Font.Name = "メイリオ"
  .Font.Bold = True
  .Font.Size = 24
  .ForeColor = vbRed
  .BackColor = RGB(0, 204, 0)
    End With
Next i
End Sub

Sub Sample() 'シート上のコントロールを削除(参考)
  ActiveSheet.OLEObjects.Delete
End Sub

Sub OLEObjctChk() 'シート上の各コントロールの名前を確認(参考)
Dim Objct As OLEObject
For Each Objct In ActiveSheet.OLEObjects
Debug.Print Objct.Name
Next Objct
End Sub

※モジュール2に記述するコード
Private CommandButton(5) As New Class1 'モジュール先頭に必要
Private i As Integer

Sub try() 'クラスモジュールに配列作成・イベント処理可能
Dim objCom As Object
  i = 0
    For Each objCom In ActiveSheet.OLEObjects
      If objCom.Name Like "CommandButton*" Then
        Set CommandButton(i).comC = objCom.Object
         i = i + 1
      End If
    Next objCom
End Sub

Sub try2() 'クラスモジュールの配列削除・イベントが起きない
Dim i As Integer
For i = 0 To 5
Set CommandButton(i).comC = Nothing
Next
End Sub

※クラス1モジュールに記述するコード
Public WithEvents comC As CommandButton 'モジュール先頭に必要

Private Sub comc_Click() 'クリックでメッセージボックス起動
MsgBox comC.Caption
End Sub



いいねと思ったら、三つポチっとね!
にほんブログ村 スキースノボーブログへにほんブログ村 スキースノボーブログ スキーへにほんブログ村 旅行ブログ 旅日記・旅の思い出へ
にほんブログ村    にほんブログ村      にほんブログ村 



2024年11月3日日曜日

初滑りゲレンデとしては、テレビニュースのネタにもなるのですが、近いからインバウンド外国人も、お手軽に気軽にでかけるわな ー 軽井沢スキー場(長野県)

令和6年3月8日滑走
     
スキーシーズンの開幕を告げるゲレンデらしく、メディアがよく取り上げます。
オープン日、スキーヤーが滑走する季節の風物が、よく紹介されているのです。

確かに、上信越道の開通以降は、首都圏から手軽に行けるようにもなりました。
カメラクルーも、取材のしやすさから、撮影に出かけているのだと思いますよ。

それで、自分が滑ったのは平成元年の時でして、もう三十数年もの昔の話です。
以降、自分のポリシーで、一度滑れば、改めて出かけないで済ませてきました。

というのも、全国のスキー場を色々と滑りたいという気持ちが勝っていたから。
なので、ここのゲレンデは再訪などしなかったのですが、最近は心変わりした。

だんだん年齢を重ねるようになると、何だか懐かしくなってもう一度滑りたい。
それに、スポーツレジャーとしてスキー産業が斜陽になってから、久しいのだ。

まさか軽井沢のゲレンデが閉鎖するとは思えないでしょうが、懐かしさもある。
こうして、先シーズンの三月初旬に滑りに行ったら、チケット予約も様変わり。

閲覧はこちらをクリック
     
ネット予約だと五百円引きだったので予約しましたが、簡単ではなかったなあ。
チケット売り場も自動化の販売機が並んでいて、年寄りは取り残された今浦島。

ローカルな売り場が自分に似つかわしいと思う中、チケットゲットでいざ出陣。
実際に滑ってみましたが、あれー、こんなテレンコなゲレンデしかないのかな。

暖冬で、三月初旬でお日様が上がってくると、気温が上昇して滑りにくいんだ。
滑走スピードも出なくて、上級バーンがほとんどなくて、初中級バーンが主体。

それに用具やスキーウェアの一式をレンタルして、初体験のインバウンド外人。
ごちゃごちゃいまして、なるほど、気軽に滑りに来られる点では、そうなんだ。

というわけで、四半世紀ぶりの感想から、棺桶に入るまで再滑走はないだろう。
このゲレンデは、軽井沢プリンスホテルに泊まって滑るという組み合わせがベストなんだろうと思いつつ、いつもビジネスホテルに泊まり歩いて滑りに出かけている自分としては、お金を湯水に使える人が、出かければよいのだと思うのでした。



いいねと思ったら、三つポチっとね!
にほんブログ村 スキースノボーブログへにほんブログ村 スキースノボーブログ スキーへにほんブログ村 旅行ブログ 旅日記・旅の思い出へ
にほんブログ村    にほんブログ村      にほんブログ村 



2024年11月1日金曜日

ネットの投稿が、わざと分かりずらく書いていると邪推してしまうような説明を糺す(その①) ー フォームコントロールの動的作成(VBAマクロ)

       
冒頭の写真は、VBAのマクロで、Controlオブジェクトを並べて表示しました。
そして、コマンドボタンを押すとメッセージボックスが表示されるイベント。

以前の投稿では、コントロールオブジェクトを表示するコード記述まででした。
それで、UserForm1.Controls.Addの関数では、イベント処理がややこしいの。

個々にコントロールを挿入すれば、クリックイベントのプロシージャもできる。
ほぼ自動的に作られる感じですが、上記の関数では一工夫が手作業で必要です。

つまり、関数で複数コントロールを一挙に作るから、どれが押されたのか不明。
実は、コントロールを集団にして、これを配列にしてどう押されたのかを判定、

このために、クラスモジュール内で配列を紐づけして、この定義を先ず宣言だ。
まあ、”Public WithEvents As MSForms.CommandButton”という呪文です。

もちろん、この配列をこさえるプロシージャにも、関連づける呪文が必要なの。
冒頭に、”Private ctrl() As New Class1”のクラスモジュール用変数を定義する。

こうした一連の紐づけさえわかれば、どうってことないVBAのコードなんだな。
ただ、ネットで見受けられる説明は、わざとややこしくしたような説明が多い。 

というわけで、決定版というほどのものでもないが良質なお見本を提示します。
ユーザーフォーム自体のサイズは、エディターを使ってプロパーティのリストから適当に数値を入力してもらいますが、幅、高さとも280で設定すれば、コマンドボタンがはみ出しませんので、ぜひ、サンプルを作って起動実験をしたもらいたいと思うのでした。

※ユーザーフォームに記述するコード
Private Sub UserForm_Initialize() 
Call Act 'モジュールプロシージャをコール
End Sub

※モジュールに記述するコード
Private ctrl() As New Class1 'クラス1のクラスモジュール指定

Sub Act()
Dim i As Long, Btn As Object
ReDim ctrl(1 To 42)
i = 1  'ボタン作成の変数
Rtrn: 'GoToで疑似ループ処理
Set Btn = UserForm1.Controls.Add("Forms.CommandButton.1", "CommandButton" & i)
With Btn  'ラベルの詳細を設定
  .Width = 36
  .Height = 36
  .Left = LftNr(i)
  .Top = TpNr(i)
  .Font.Size = 16
  .Font.Name = "メイリオ"
  .Caption = i
End With
Set ctrl(i) = New Class1 'クラス1のクラスモジュール配列作成
Set ctrl(i).Button = UserForm1.Controls("CommandButton" & i)
i = i + 1
If i <= 42 Then GoTo Rtrn
End Sub

Private Function LftNr(ByVal i As Long)
Dim j As Long
  j = i Mod 7
  Select Case j
    Case 1
      LftNr = 10
    Case 2
      LftNr = 10 + 36 * 1
    Case 3
      LftNr = 10 + 36 * 2
    Case 4
      LftNr = 10 + 36 * 3
    Case 5
      LftNr = 10 + 36 * 4
    Case 6
      LftNr = 10 + 36 * 5
    Case 0
      LftNr = 10 + 36 * 6
  End Select
End Function

Private Function TpNr(ByVal i As Long)
  Select Case i
    Case Is <= 7
      TpNr = 25
    Case Is <= 14
      TpNr = 25 + 36 * 1
    Case Is <= 21
      TpNr = 25 + 36 * 2
    Case Is <= 28
      TpNr = 25 + 36 * 3
    Case Is <= 35
      TpNr = 25 + 36 * 4
    Case Is <= 42
      TpNr = 25 + 36 * 5
  End Select
End Function

※クラス1モジュールに記述するコード
Public WithEvents Button As MSForms.CommandButton

Private Sub Button_Click() 'クリック動作のイベントプロシージャ
  MsgBox Button.Caption
End Sub



いいねと思ったら、三つポチっとね!
にほんブログ村 スキースノボーブログへにほんブログ村 スキースノボーブログ スキーへにほんブログ村 旅行ブログ 旅日記・旅の思い出へ
にほんブログ村    にほんブログ村      にほんブログ村