リストボックスのAdditemで表示する内容を一覧にしたいと思い、文字列を生成してみたのですが、どうもきれいに揃いません。どうしてーーー???
Do Until rs.EOF
(ここで一旦各変数を初期化します)
str_co = rs("会社名")
str_name = StrConv(rs("商品名"), vbWide)
str_price = rs("価格")
str_orderday = rs("注文日")
str_slip = rs("伝票No.")
If Len(rs("受取日")) > 0 Then
str_catchday = rs("受取日")
Else
str_catchday = ""
End If
If Len(rs("入金日")) > 0 Then
str_payday = rs("入金日")
Else
str_payday = ""
End If
If rs("返品フラグ") = 1 Then
str_returnday = "無"
Else
str_returnday = "有"
End If
spc1 = String(7 - Len(str_co), " ")
spc2 = String(50 - Len(str_name), " ")
spc3 = String(12 - Len(str_price), " ")
spc4 = String(15 - Len(str_orderday), " ")
spc5 = String(20 - Len(str_slip), " ")
spc6 = String(15 - Len(str_catchday), " ")
spc7 = String(15 - Len(str_payday), " ")
str_data = str_co & spc1 & str_price & spc3 & str_orderday & spc4 & _
str_slip & spc5 & str_catchday & spc6 & str_payday & spc7 & str_returnday
.AddItem str_data
No.5ベストアンサー
- 回答日時:
質問のコーディングを見ると、str_nameとspc2がリストボックスに表示するデータ(str_data)に含まれていませんが、これはデバッグするためにとりあえず省いていると考えてよろしいでしょうか?
かなり前の記憶でちょっと、曖昧ですが、確かこの様に文字列を整列させる為にはMSゴシック等プロポーショナルでないフォントを選択しても、2バイト文字混在の場合はずれてしまい、結局、フォントをTerminalにした覚えがあります。Terminalはフォントサイズがかなり限定されてしまいますが、唯一綺麗に先頭が揃ったと思います。
カラムを意識したデータを表示させる場合はグリッドコントロール等を使用した方が良いかもしれませんね。
ご返答、本当に有難う御座います!
お礼がまたまた遅くなってしまって、スミマセンでした。
回答頂いた、Terminalでフォントを指定してみたら、うまくキレイに列が揃いました!
感激です!\(^o^)/
最初はスプレッドか何かで表示しようかとも思ったのですが、どうしてもリストボックスでチャレンジしてみたかったんです。。。。。
良い勉強になりました!
No.4
- 回答日時:
補足です。
正しいバイト数を求めるには、LenB(StrConv(文字列, vbFromUnicode))
とすればOKです。
この回答への補足
先程の長い文字列のフィールドなんですが、下記になります。
str_name = StrConv(rs("商品名"), vbWide)
ここのStrConvは必要ないので省いたんです。
LenB(StrConv(文字列, vbFromUnicode)) で得られたバイト数を一件ずつ調べたら、
26
10
14
79
62
でした。
このフィールドの後ろに入るべき式は、下記にてコーディングしたのですが、まだ私は何か見落としているんでしょうか?
spc2 = String(80 - LenB(StrConv(str_name, vbFromUnicode)), " ")
No.3
- 回答日時:
半/全角が混在している場合、ListboxのFontsizeによっては、正しく
スペースを埋めていたとしてもずれてしまうことがあります。
また、
String(N - Len(???), " ")
は間違っています。(半/全角混在を仮定)Len関数は文字数を返しますので、
"12"と"12"でどちらも「2」が返されます。これだと正しくスペース埋め
できません。そこでLenB関数を使ってバイト数を算出するわけですが、
Unicodeの関係で半角でも全角でも1文字2バイトになってしまいます。
その解決にはStrConv関数を使用します。(Helpを見てください)
あと、"1234567890"というような文字列で10Byteとる場合の、最後の文字
の処理についても注意が必要です。("0"がまっぷたつになる)
詳しいご返答、本当に有難うございます!(^^)
試してみたんですけど、どういう訳か、5件中、1~3件目の文字が沢山格納させているフィールドだけ、ズレてしまうんです。。。。(T_T)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# str[j++]の意味 2 2022/08/30 16:20
- C言語・C++・C# sprintf()の使い方について 1 2022/08/17 16:16
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- C言語・C++・C# C# 浮動小数の数値文字列化 1 2022/04/18 15:15
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンボボックス内の文字サイズ変更
-
フォントの大きさ
-
VBA TEXTBOXテキストボックスの...
-
リソースエディタでスタティッ...
-
VBAのフォント変更(エクセルか...
-
VB.NET2005 TextBox 高さ(Heig...
-
文字色 エクリプス
-
コンボボックスの一部のアイテ...
-
プロポーショナルフォントの文...
-
ドロップダウンリストのフォン...
-
Smart Art挿入時のフォントサイ...
-
フォントごとの文字列の幅の取得
-
VBにて指定した通りにExcelの列...
-
エディットボックスのフォント...
-
チェックボックスの箱のサイズ...
-
JTableのヘッダー文字のサイズ変更
-
JakaraPOI セル内部のフォント...
-
Macbook Word フォント色変更で...
-
WPFのフォントカラー変更につい...
-
エディットの文字サイズ変更
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォントの大きさ
-
コンボボックス内の文字サイズ変更
-
VBAのフォント変更(エクセルか...
-
ドロップダウンリストのフォン...
-
チェックボックスの箱のサイズ...
-
VB.NET2005 TextBox 高さ(Heig...
-
リソースエディタでスタティッ...
-
プロポーショナルフォントの文...
-
VBA TEXTBOXテキストボックスの...
-
コンボボックスの一部のアイテ...
-
WPFのフォントカラー変更につい...
-
ワードでコントロールツールボ...
-
Eclipseで修正したファイル名の...
-
エディットボックスのフォント...
-
Msgboxで使用するフォントの指...
-
VBにて指定した通りにExcelの列...
-
ActiveReport中のフォントサイ...
-
Excelのセルのフォントサイズを...
-
ハングル文字を入力するには、...
-
JakaraPOI セル内部のフォント...
おすすめ情報