引数は数値でFormatを使って通貨型にし
マイナスの時は右端に"△"を付けるのですが
Right関数やSpace関数を使って
表示しようとするのですが綺麗に表示ができません
誰か教えてください。
>マイナスの時は右端に"△"を付けるのですが
左端でした。
=IF(A1<0,"△"&YEN(ABS(A1)),YEN(A1))
単純ですが、こういうことですか?
セルの書式設定で、『0;"△"0;』という指定を行っては如何でしょう。
プログラムから指定するのであれば、Rangeオブジェクトの
NumberFormatプロパティに対して、
objRange.NumberFormat = "0;""△""0;"
という感じで。
説明不足ですみません
Hkei = csv.Cells(行ナンバー, i + 4)
If Sgn(Hkei) = -1 Then
Hskei = Format(Abs(Hkei) / 1000, "#,##0")
Hskei = "△" & RightB(Space$(75) + Hskei, 24)
Else
Hskei = Format(Hkei / 1000, "#,##0")
Hskei = RightB(Space$(1000) + Hskei, 24)
End If
用紙.Cells(行, i) = Hskei
このように書いてもどうしてもマイナスの時に左端
が少しずれてしますのでそこを直したいのですが
どうすればいいですか?
まず、マイナス値のときは△+24文字、プラスのときは24文字のみ
という点でずれが生じているはずです。
次に、セルの書式設定を標準のままにして行っている場合、
マイナス値は”△”+空白+数値のレイアウトなので、
文字型として認識し、左詰めで表示されると思いますが、
プラス値の場合には空白+数値のレイアウトなので、
数値型として認識し、右詰めで表示されると思います。
ここでも表示上のずれが発生します。
で、対応方法ですが、
>Formatを使って通貨型に
ということなのですが、マイナス値のときに”△”は左詰めで、
間に空白を置いて数値部分は右詰めという書式を通過型(数値型)で
実現するのは難しいと思うので文字型での出力になると思います。
#実現方法ご存知の方いればRESお願いします
'================================================================
Hkei = csv.Cells(行ナンバー, i + 4)
If Sgn(hkei) = -1 Then
'マイナス値の場合
Hskei = "△" & Right(Space(24) & Format(Abs(hkei) / 1000, "#,##0"), 24)
Else
'プラス値の場合
Hskei = " " & Right(Space(24) & Format(hkei / 1000, "#,##0"), 24)
End If
'出力セルの書式設定を文字列型にする
用紙.Cells(行, i).NumberFormatLocal = "@"
'データ出力
用紙.Cells(行, i) = Hskei
'================================================================
ただ、このやり方だとデータは文字列型になり、数値としての演算が
面倒になります。
自分なら、可能であれば出力セルを符号部と数値部の2列に分けると思います。
'================================================================
Hkei = csv.Cells(行ナンバー, i + 4)
用紙.Cells(行, i).NumberFormatLocal = ";""△"";"
用紙.Cells(行, i+1).NumberFormatLocal = "#,##0;#,##0;#,##0"
用紙.Cells(行, i) = hkei / 1000
用紙.Cells(行, i+1) = hkei / 1000
'================================================================
この場合表示に2セル必要になりますが、数値として扱えるので後に演算処理が
ある場合に楽になります。参考までに。
補足ですが、フォントがプロポーショナルフォントの場合には
当然位置ずれが生じます。
データ出力セルのフォントは
用紙.Cells(行, i).Font.Name = "MS ゴシック"
等でプロポーショナルでないフォントに設定する必要があります。
ツイート | ![]() |