質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

2回答

3469閲覧

vba Space関数について

退会済みユーザー

退会済みユーザー

総合スコア0

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2016/01/01 03:23

編集2016/01/01 14:20

あけましておめでとうございます。pipiでございます。
本年も宜しくお願い致します。

リストボックス内の数字を右揃えにするため、Space()関数を使い自作の関数を作成したが、
綺麗に右揃えになってくれません。微妙に中央揃えになっている気がします。。。

'Space挿入関数 '<引数について> 'strName:対象となる文字列 'intMojiCount:スペース挿入後の全体の文字数 'isTop:先頭から処理する(true) Public Function FormatAddSpace(ByVal strName As String, ByVal intMojiCount As Integer, _ Optional ByVal isTop As Boolean = True) As String Dim n As Integer n = intMojiCount - Len(strName) '全体の文字数から対象となる文字列を引いた数分、スペース挿入 If isTop = True Then strName = Space(n) & strName '先頭にスペース挿入 End If FormatAddSpace = strName End Function
'リストボックス設定抜粋コード With ListBox1 .Font.Size = 10 .ColumnCount = 7 .ColumnWidths = "50;100;80;80;100;30;70" .TextAlign = fmTextAlignLeft .Font.Name = "MS ゴシック" Dim i As Long Dim LastRow As Long LastRow = Range("A600").End(xlUp).Row For i = 2 To LastRow If Cells(i, 8).Value <> 1 Then .AddItem FormatAddSpace(Cells(i, 1).Value, 4) '商品ID、全体の文字数を4としてFormatAddSpace関数を呼び出す。 .List(.ListCount - 1, 1) = Cells(i, 2).Value .List(.ListCount - 1, 2) = Cells(i, 3).Value .List(.ListCount - 1, 3) = Cells(i, 4).Value .List(.ListCount - 1, 4) = FormatAddSpace(Cells(i, 5).Value, 7) '単価、全体の文字数を7としてFormatAddSpace関数を呼び出す。 .List(.ListCount - 1, 5) = Cells(i, 6).Value .List(.ListCount - 1, 6) = Cells(i, 7).Value End If Next End With

イメージ説明

どなたか、アドバイス、ご教授願います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

.Font.Name = "MS ゴシック"
で"MS ゴシック"を有効に等幅フォントにしてますが、メーカー名の”KOKOYO”半角6文字が全角4文字の巾と同じになっており等幅フォントになってないようです。
.Font.Name = "Arphic Kanteiryu JIS"
等、特徴的なフォントを使い、フォントの変更が全画面に有効になってるか確認してみたらいかがでしょうか。

strName = Space(n) & strName '先頭にスペース挿入


strName = Left(”............”,n) & strName '先頭に.挿入

に変えるとどこが原因で文字ずれが出てるか判るかもしれません。

投稿2016/01/02 00:04

kakeru

総合スコア63

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/01/02 00:48

アドバイスありがとうございます。 一体、等フォントとは一体なんなのでしょうか? 初めて聞いた言葉です。
kakeru

2016/01/02 01:16

等フォントでなく等幅フォントです。 https://ja.wikipedia.org/wiki/%E7%AD%89%E5%B9%85%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88 にも出てますので正式な言葉のはずですが。 プロポーショナルフォントですと”IIII”と”ZZZZ”で文字の巾が違ってきますが、等幅フォントですと同一になります。 等幅フォントにしないと文字数をそろえても見た目が揃いません。 例として MS ゴシック  等幅フォント MS Pゴシック プロポーショナルフォント
guest

0

単に、等幅フォントを使っていないからではないでしょうか。
プロポーショナルフォントだと、文字数を合わせても駄目です。

見た目を右揃えにしたいのなら、HorizontalAlignmentプロパティをxlRightにセットするのが良いかと。

投稿2016/01/01 11:05

otn

総合スコア84505

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問