2023年6月24日土曜日

検索の結果を表示するのに、水平も垂直もスクロールバーが使えて一覧できるのは便利だな ー ListView(VBA)

      
個人的に、会社の仕事で英語辞書を作っていましたが、ちょっと改造しました。
今までは、検索結果をメッセージボックスで表示させていたのですが見づらい。

モニターの表示が精細になるにつれて、この表示が小さくなったと感じました。
しかも、メッセージボックス内のフォントを太字に変えることもできませんな。

要するにMsgBox関数は注意喚起程度のものでしかなく、フォント変更は無理。
そうなると、やはりユーザーフォームを呼出して、表示させることになります。

この時、リストボックスでの表示が一般的ですが、リストビューもあるらしい。
グリッド線でセルを仕切れたりして、シートがユーザーフォームに再現される。

ただ、ツールボックスのデフォルトに表示がないので、追加設定を必要とする。
なので、ツールの奥の手っぽい気もしますが、使って見て便利なのが分かった。 

設定は、ネットで探せるので省きますが、このツールは汎用性がありそうです。
しかも、ネットで検索するとVBA以外のプログラムグでも応用の紹介があった。

"Net Framework"とか、”C#”言語でのコードが散見されたりして、驚きだな。
なので、検索結果を見るためのツールとして活用されているのだと思いました。

それで、最初に組み込んだメッセージボックスは検索結果を一つずつ表示する。
連続検索はできますが、その結果をリストで俯瞰的に閲覧できないのが欠点ね。

なので、このリストビューを使えば、検索結果の一覧表示ができるから便利だ。
しかも、表示画面が小さくても、水平、垂直ともにスクロールバーが使えます。

しかも、フォントの種類も大きさも変更できるので読みやすい設定ができます。
個人的には、書体が、”MS UI ゴシック”で、サイズが11ポイントだとベストだ。

それで、連続検索の結果表示は、コマンドの”Find~FindNext”から実行します。
以前の投稿でも紹介していますが、参考にしながらコードを書いて見て下さい。

というわけで、忘備録として書きつつも、サンプルコードを紹介しましょうか。下に列挙しておきますが、実用的なコードを書くには、それなりにノウハウも必要ですので、先ずは試行錯誤しながら、プログラムして欲しいと持ったのでした。

*ThisWorkbookに記述
Private Sub Workbook_Open()
  Load UserForm1 '表示はしないでリストビューに要素を書き込む目的
End Sub

*ユーザーフォーム1へのコード記述
Private Sub UserForm_Initialize()
    With UserForm1.ListView1 
'ツールボックス]の余白を右クリックして、[その他のコントロール]をクリック
'次に、”Microsoft ListView Control 6.0(SP4)”をチェック
    .Height = 数値     '高さ・1pixel が 0.75point、注:目安程度
    .Width = 数値  '巾
    .Top = 15 'ユーザーフォーム内の上からの距離
    .Left = 15 'ユーザーフォーム内の左からの距離
'VBEでのオブジェクト表示が正確にされないので、予め数値設定
    .LabelWrap = True
        ''プロパティ
        .View = lvwReport           '詳細な表示
          .LabelEdit = lvwManual      'ラベルの編集不可
            .HideSelection = False      '選択の自動解除
              .AllowColumnReorder = Flase  '列幅の変更を不許可
            .FullRowSelect = True       '行全体を選択許可
          .Gridlines = True           'グリッド線許可
        .Font.Size = ** 'Fontサイズの数値
      .Font = "MS UI Gothic" ’等幅細目フォント
        '一行目の列見出し、キー(文字列)、タイトル、カラム幅の設定、
    '列数、カラム幅が、極端に多いとメモリー不足になり要注意
        .ColumnHeaders.Add , "_Yomi", "読み", 180
                .ColumnHeaders.Add , "_Tuduri", "つづり・表記", 145
                        .ColumnHeaders.Add , "_Pronounce", "Pronounce", 185
                                .ColumnHeaders.Add , "_Eng", "英語・English", 335
                                        .ColumnHeaders.Add , "_Rmrk", "解説", 920
    End With
End Sub

Private Sub CommandButton1_Click() ’ユーザーフォームのボタン
   With UserForm1 'ユーザーフォームを隠してリストビュー要素の削除
      .Hide
      .ListView1.ListItems.Clear
   End With
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
        If CloseMode = 0 Then 
                MsgBox "閉じるボタンが押されました"
                Cancel = True
        End If '右上のXボタン押下げで閉じさせない・ボタンで常に閉じさせる
End Sub



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



0 件のコメント:

コメントを投稿