• ベストアンサー

エクセルVBAで銭円までの表示・非表示

エクセル2002使用です。 初歩的な質問で申し訳ございません。 通常のワークシートの設定では、 書式→セル→表示形式→通貨→小数点以下の桁数→1 と設定するコードをVBAでしたいのですが、 Range("A1").NumberFormatLocal = "#,###.#" とすると、銭単位が0の時、0は表示されないのですが、”.”が残ってしまいます。銭単位0以外の場合は表示し、0の時は"."も含めて表示しない(円単位)にするにはどうすればいいのかわかりません。 よろしくお願いします。

  • ken123
  • お礼率73% (299/409)

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

A列に原データがあるとします。 B列の書式を(1)文字列(2)右詰(3)書式をP付きでないものにする。 Sub test01() For i = 1 To 9 If Int(Cells(i, "A")) = Cells(i, "A") Then Cells(i, "B") = Format(Cells(i, "A"), "0") & " " Else Cells(i, "B") = Format(Cells(i, "A"), "0.00") End If Next i End Sub を実行する。 A列は非表示。 A列は 12.23 123 12 12.01 B列は 12.23 123 12 12.01 になります。上記B列は崩れて見えるでしょうが実際は円の桁で揃います。 しかしA列データが変ると、再実行が必要です。 ことほど難しいようです。

ken123
質問者

お礼

imogasi 様 早速のご回答ありがとうございました。 いろいろ調べみたいのですが、定番みたいなものはないようですね。意外や意外。。。 通貨に限らず、数字の小数点でも結構問題みたいで、 アイデアをお借りしまして、下記のように処理しました。 本当にありがとうございました。今後ともよろしくお願いします。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

Range("A1").NumberFormatLocal = IIf(Range("A1").Value = Int(Range("A1").Value), "#,###", "#,###.#") とりあえず、値(小数部分があるかないか)によって書式を切り替えることはできます。 どれほどの意味(お望みのものかどうか)があるかはわかりません。

ken123
質問者

補足

BLUEPIXY 様 早速のご回答ありがとうございました。 いろいろ調べみたいのですが、定番みたいなものはないようですね。意外や意外。。。 通貨に限らず、数字の小数点でも結構問題みたいで、 アイデアをお借りしまして、下記のように処理しました。 本当にありがとうございました。今後ともよろしくお願いします。 Sub ins() Dim 小数点 As Integer Dim i As Integer For i = 1 To 3 小数点 = InStr(1, Cells(i, 2).Value, ".", vbTextCompare) If 小数点 <> 0 Then Cells(i, 2).NumberFormatLocal = "#,###.#" Else Cells(i, 2).NumberFormatLocal = "#,###" End If Next i End Sub

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

Excel2000だとこんな感じで希望に近いと思うけど、、、 Sub test()  ActiveCell.NumberFormat = "[=0]#;[<>0]#,###.0" End Sub

ken123
質問者

お礼

papayuka 様 早速のご回答ありがとうございました。 いろいろ調べみたいのですが、定番みたいなものはないようですね。意外や意外。。。 通貨に限らず、数字の小数点でも結構問題みたいで、 アイデアをお借りしまして、#1様お礼欄のように処理しました。 本当にありがとうございました。今後ともよろしくお願いします。

関連するQ&A

  • Excel VBA シート非選択で表示形式を設定

    Excel2010 VBAで、 ワークシートを選択しない状態で、 このワークシート上のセルの書式設定の表示形式を 数値の少数点以下の桁数1桁 (NumberFormatLocal = "0.0_ ") に設定することはできるのでしょうか。 例えば、 以下のように、WORKという名前のシート(WS2)があって、 Dim WS2 As Worksheet Set WS2 = ThisWorkbook.Sheets("WORK") WS2.Select WS2.Range("A1").Select Selection.NumberFormatLocal = "0.0_ " とすれば、 正しく設定することができるのですが WS2が選択されていない状態で、 WS2.Range("A1").Select を実行するとエラーになります。 (実行時エラー'1004' 'Range'メソッドは失敗しました: 'Worksheetオブジェクト') そこで、NumberFormatLocal を Selection ではなく、 WS2.Range("A1").NumberFormatLocal = "0.0_ " というような記述ができればよいのですが、 実際にはエラーになります。 シートを選択しなくても、 このシート上にあるセルに NumberFormatLocal を 適用するすることはできるのでしょうか。

  • エクセルで0.0と表示したい

    エクセルで0.0と表示したいのですが、セル書式設定を、数値、小数点以下の桁数を1にしても、表示されません。ユーザー設定を何にすればよいか教えてください。

  • Excel VBAでの" "の正しい使い方

    Excel 2003を使っています。 セルY1には0又は1の数値が入ります。 セルI6とI7の「セルの書式設定」をY1の値によって変化させるのが目的です。 セルY1が0の場合はI6の「セルの書式設定」を「m"月"d"日("aaa") 17:00~ 艇 庫"」に、I7は空白にする。 また、セルY1が1の場合はI6の「セルの書式設定」を「m"月"d"日("aaa") 16:00~ 艇 庫"」に、 I7は「m"月"d"日("aaa") 17:00~ 艇 庫"」にしたいのです。  とりあえず、VBAで以下のようなものを作りましたが、" "の使い方が間違っているようで、意図した結果が出ません。 Private Sub Worksheet_Change(ByVal Target As Range)   If Target.Address = "$Y$1" Then      If Range("Y1") = 0 Then       Range("I6").NumberFormatLocal = "m""月""d""日(""aaa"") 17:00~ 艇 庫"       Range("I7").NumberFormatLocal = ""     Else       Range("I6").NumberFormatLocal = "m""月""d""日(""aaa"") 16:00~ 艇 庫"       Range("I7").NumberFormatLocal = "m""月""d""日(""aaa"") 17:00~ 艇 庫"     End If    End If End Sub  どのように修正すればよいか、お教えください。画像も何もなくて分かりにくいかもしれませんが、よろしくお願いします。

  • エクセル 単位を入れても桁数を揃えたい

    エクセル2010を使用しています。 A1,A2 の二つのセルにそれぞれ,「1.23」,「1.00」と入力し,「小数点以下の表示桁数を増やす」を実行して,「1.23」,「1.00」と表示させます。 これに単位(例えば「トン」)を入れるため,「セルの書式設定」の「ユーザー定義」の「種類」を「G/標準"トン"」にすると,「1.23」は「1.23トン」となるのですが,「1.00」の方が「1.00トン」ではなく「1トン」になってしまい,「小数点以下の表示桁数を増やす」を実行しても変更されません。 単位を入れたあとも「1.00トン」のように桁数を揃えることはできませんでしょうか。(全く違う方法でも構いません)

  • NumberFormatLocalの値を比較したい

    Excel VBA:円記号の入った「NumberFormatLocal」の値を比較したい 以下の例で文字「バックスラッシュ」はVBAでは「円記号」で表示されています。 セルに設定された書式Selection.NumberFormatLocalの値が文字列「"\#,##0;\-#,##0"」に等しいか調べたいがうまく比較できない。 環境、OS:Windows10, Windows8、Excel:2010,2013 例 セル”A1”に数値「123456」を入力 “A1”に手作業で通貨書式を設定 「セルの書式設定」->「表示形式」->「通貨」->「\-1,234」(黒色:デフォルト) マクロの記録は Sub Macro1() Range("A1").Select Selection.NumberFormatLocal = "\#,##0;\-#,##0" End Sub “A1”に設定された書式が通貨書式であるかをVBAで確認するために プロシジャー test1 を作り、実行すれば”No”になる。 “Yes”を予想してしまうが、”No”になる理由と解決方法が知りたい。 Sub test1() Dim strTuka As String strTuka = "\#,##0;\-#,##0" Range("A1").Select MsgBox Selection.NumberFormatLocal If Selection.NumberFormatLocal = strTuka Then MsgBox "Yes" Else MsgBox "No" End If End Sub どなたか、アドバイスをお願いします。

  • エクセルの「数値」負の数の表示形式

    エクセルで、小数点第2位を四捨五入して 小数点第1位で表示する場合 右クリック→『セルの書式設定』をクリック→ 『セルの書式設定』→「表示形式」タブの「分類」の『数値』を選択。 それから『小数点以下の桁数』を「1」と入力。 ここまでは、わかるのですが 『負の数の表示形式』に、 赤字で(1234.0) 黒字で(1234.0) かっこなし赤字で1234.0 この違いがわかりません。 とても初歩的な質問で、お恥ずかしいのですが どなたか教えていただけませんか。 よろしくお願いします。

  • エクセルで、1.0が表示されない・・・

    エクセルで表を作りました。 データは3000ほどあります。 セルに入力する数値は1から6までの小数第一位までになっています。セルの書式設定によって、2と入力しても、2.0となるようにしてあります。 ごくまれに1.0というデータを入力しなければならず、1または1.0と入力するのですが、 「入力した数値は正しくありません。ユーザーの設定によって、入力できる数値が制限されています」 と出てしまいます。 このデータ表を作ったのが5年前で、当初、1.0は扱わないということで何か設定をしたような気もしますが、思い出せません。 これを解除したいのですが、解決できるでしょうか? これまで、「セルの書式設定」で、「数値」を他のものに変えるなど、何度もトライしてみましたがうまくいきませんでした。 小数の桁数表示は1としています。

  • エクセルの小数点以下表示

    エクセルの小数点以下表示にツールバーの桁数上げ、下げとセルの書式設定などがありますが、それらは違う物なのでしょうか。セルの書式設定でも標準、数値、ユーザー定義の3つは表示上同じなら同じと考えてよいでしょうか。

  • エクセル2007 セルに通貨入力について

    何時もサイトで勉強させてもらってます。 タイトル通りエクセル2007のセルにセルの書式設定で分類>通貨にして 小数点以下の桁数>2とし、15000と入力すると150.00と表示されます。 金額計算表を作成したいのですが、15.000にする方法を教えてください。

  • エクセル 列の数値の表示

    質問します。 列の数値の表示で小数点以下の桁数を混在させる方法を教えてください。 言い方を変えると、キーボードで打った通りの数値を表示させたいのです。 例えば、下記のように打ちたいのです。 2.23 3.1 2.3 4.11 3.46 セルの書式設定→数値→小数点以下の桁数 で桁数を指定すると以下のようになってしまいます。 2.23 3.10 2.30 4.11 3.46 キーボードでの入力の通りに表示させるには、どのようにすればよろしいか? よろしくお願いします。

専門家に質問してみよう