Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


68240 / 76738 ←次へ | 前へ→

【13038】Re:Columnプロパティについて
発言  ichinose  - 04/4/21(水) 18:09 -

引用なし
パスワード
   ▼kz さん:
こんにちは。

>>textalignプロパティは、リストボックスのプロパティです。
>>右寄せ、左寄せの設定は、リストボックス全体にしか設定できないですね。
>>
>>私は、上記のような列によって右寄せ、左寄せに分ける場合には、
>>設定(textalign)は、左寄せに設定しておいて、
>>右寄せしたい列のメンバには、計算で頭空白を追加しています。
>>
>>よって、ColumnWidthsプロパティによって、各列の幅を設定したりすることも必要です。
>>
>>だいたいの目安で列幅72ポイント(1インチ)で文字サイズの値の文字数が格納可能です(若干の微調整は必要、尚、フォントがMSゴシック、MS明朝の場合です)。
これフォントサイズが11のときでした。

>>
>>何回か試行錯誤すれば、規則がわかると思いますが・・・。
>>
>>空白を先頭に埋めるのは、データが半角文字ならRsetステートメントでも
>>OKだと思いますが、漢字が入っていたりするとStrconv関数を用いての
>>計算が必要になります。
>>
>>もっとも、私が上記のような事をするなら、リストボックスではなく、
>>Spreadsheetコントロールを使ってしまいますが・・・。
>>
>>それからこのリストボックスって、シートに貼り付けたものですか?
>>それともユーザーフォームですか?
>
>▼ichinose さん,こんにちは。
>
>質問に対する回答ですが、ユーザーフォームに張り付けて使用します。
>ichinose さんからのご指摘を考えると、私が考えて作ったものは、
>非効率なんでしょうか?Spreadsheetコントロールを使えば
>複数列の表示も右寄せ左寄せも、簡単にできるのでしょうか?

Spreadsheetコントロールは、Excelシートのイメージのコントロールです。
各列ごとの右寄せ・左寄せの設定は、手動操作で可能です。
イベントも本家シートより、多いですよ。
その他のコントロールを探してみて下さい。
確か本家(MS社)のサイトでもダウンロードできたと思いましたが・・。
今、考えてみたら、私はリストボックスって業務では使った事なかった・・。


取りあえず、リストボックスでのサンプルも作ってみました。
ユーザーフォーム(Userform1)にリストボックス(Listbox1)のみ貼り付けて
以下のコードを実行して下さい。

まず、標準モジュールにリストボックスのメンバ作成プロシジャー
アクティブシートのセルA1〜D10にデータをセットします。

'======================================================================
Sub Sample_data()
  With Range("a1:d10")
    For idx = 1 To .Rows.Count
     .Cells(idx, 1).Value = idx
     .Cells(idx, 2).Value = "サンプル" & idx
     .Cells(idx, 3).Value = "SAMP" & idx * 2
     .Cells(idx, 4).Value = idx * 3 + 3000
     Next
    End With
End Sub


次に本コードです。メンバデータがあるシートをアクティブにした状態でmainプロシジャーを実行してみて下さい。

標準モジュールに
'==================================================================
Sub main()
  UserForm1.Show
 
End Sub


ユーザーフォーム(Userform1)のモジュールに
'===================================================================
Private Sub UserForm_Initialize()
  Call リストボックスの設定
End Sub
'===================================================================
Sub リストボックスの設定()
  With ListBox1
   .ColumnCount = 4
   .Width = 352
   .Font.Name = "MS ゴシック"
   .Font.Size = 11
   .Clear
   .ColumnWidths = "85.1;85.1;85.1;85.1"
   Set rng = Range("a1:d10")
   ReDim myarray(rng.Rows.Count - 1, rng.Columns.Count - 1)
   For idx = 1 To rng.Rows.Count
     For jdx = 1 To rng.Columns.Count
      If jdx = 2 Then
        myarray(idx - 1, jdx - 1) = rng.Cells(idx, jdx).Value
      Else
        myarray(idx - 1, jdx - 1) = edit_rset(rng.Cells(idx, jdx).Value, 11)
        End If
      Next jdx
     Next idx
   .List() = myarray()
   End With
End Sub
'====================================================================
Function edit_rset(v_dat, spcnum) As Variant
  Dim wk
  wk = StrConv(v_dat, vbFromUnicode)
  If spcnum - LenB(wk) > 0 Then
   edit_rset = Space(spcnum - LenB(wk)) & v_dat
  Else
   edit_rset = v_dat
   End If
End Function


以上です。
リストボックスの2列目が左寄せ、後は、右寄せの表示がされるはずですが。
確認してみて下さい。

2 hits

【12970】Columnプロパティについて kz 04/4/20(火) 16:41 質問
【13016】Re:Columnプロパティについて ichinose 04/4/21(水) 13:24 発言
【13037】Re:Columnプロパティについて kz 04/4/21(水) 17:26 質問
【13038】Re:Columnプロパティについて ichinose 04/4/21(水) 18:09 発言
【13046】Re:Columnプロパティについて kz 04/4/21(水) 21:09 質問
【13071】Re:Columnプロパティについて kz 04/4/22(木) 12:54 質問
【13085】Re:Columnプロパティについて ichinose 04/4/22(木) 18:28 発言
【13093】Re:Columnプロパティについて kz 04/4/23(金) 8:14 お礼

68240 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free