• ベストアンサー

マクロを使用すると表示できなくなるのです

さきほども別の質問をさせていただきました。 もう一つお願いいたします。 表形式で、c列に前年売上500,231,655 d列に当年売上485,652,311という数値がずらっとならんでおり、E列に前年比という項目があります。前年比は前年売上/当年売上でだすことはできます。これを小数点以下第二位までの%表示させています。この前年と当年売上の数値を百万単位や円単位、千円単位で表示させるマクロを作りました。そうすると、この前年比の項目の%表示したものが、1や0という数値に変わります。セルにはきちんと前年売上/当年売上の数式が入っているのですが%表示されなくなります。これをマクロを使ってもきちんと%表示させることってできるんでしょうか? 明日の会議で必要になる資料なもので、どなたか教えてください。よろしくお願いいたします。

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

  • ベストアンサー
  • bonaron
  • ベストアンサー率64% (482/745)
回答No.3

マクロを実行したあと、E列の書式はパーセントになっていますか? どこかで、書き換えて」しまっている場合、 お急ぎだったら、原因を探すよりも、 マクロの最後に Range("E:E").NumberFormatLocal = "0.00%" と付け加えたほうが早そうですが。

midorigi
質問者

お礼

そうですね。そうすればよかったですね。 解決いたしました! ありがとうございます。

その他の回答 (4)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんにちは。 >明日の会議で必要になる資料なもので、 では、もう「遅かりし」ですが、 >Range("C:C,D:D,F:F").Select >Range("F2").Activate >Selection.NumberFormatLocal = "#,##0" ちょっと、このコードでは全体が見えてきませんね。 たぶん、こういう雰囲気のコードですと、3つのコードの範囲の指定に間違いあるのだと思います。 試しに、私のほうでサンプルを作ってみました。 Private Sub CommandButton1_Click() Dim myFormat1 As String   Dim myFormat2 As String   Dim myFormat3 As String   Dim myFormatP As String   myFormat1 = "#,##0"   myFormat2 = "#,##0,"   myFormat3 = "#,##0,,"   myFormatP = "0.0%"   With Range("C1", Range("C65536").End(xlUp))    .Offset(, 2).NumberFormatLocal = myFormatP    Select Case Range("C1").NumberFormatLocal      Case myFormat1       .Resize(, 2).NumberFormatLocal = myFormat2       .Offset(, 3).NumberFormatLocal = myFormat2       Range("G2").Value = "(千単位)"       CommandButton1.Caption = "千単位"      Case myFormat2       .Resize(, 2).NumberFormatLocal = myFormat3       .Offset(, 3).NumberFormatLocal = myFormat3       Range("G2").Value = "(百万単位)"       CommandButton1.Caption = "百万単位"      Case Else       .Resize(, 2).NumberFormatLocal = myFormat1       .Offset(, 3).NumberFormatLocal = myFormat1       Range("G2").Value = "(円単位)"       CommandButton1.Caption = "円単位"    End Select      Range("G2").SetPhonetic   End With End Sub

midorigi
質問者

お礼

ご丁寧な回答ありがとうございました。 会議では、なんとか作動させることができ、ほっとしています。 本当に、ありがとうございました。

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

#1です。 掲示されたマクロが全てならば、私の環境ではE列の表示形式は変わりませんし、おかしい所は見当たりません。 小出しにされているなら、別の所に問題があると推測します。 どこかでE列の書式を変えてしまっている箇所があるのでは無いですか? 1や0になったセルを再度%表示にすると値はどう変化しますか?

midorigi
質問者

お礼

あれから、いろいろ試してみました。 なんとか解決できました。 いろいろとアドバイスありがとうございました。

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

#1です。 先にも書きましたが、そのマクロを掲示してみては如何でしょうか? 試した限りでは C~D列の表示書式を変えてE列の表示書式が変わる事は無いと思うのですが、、 Sub Test1()   Columns("C:D").NumberFormat = "#,#0,," End Sub Sub Test2()   Columns("C:D").NumberFormat = "#,#0," End Sub Sub Test3()   Columns("C:D").NumberFormat = "#,#0" End Sub

midorigi
質問者

補足

何度もすいません。VBAはあまり知識がありません。 表の右横にフォームのボタンを3つ使って、それぞれ円、千円、百万円としています。そのボタンを押すことで、表示形式を切り替えるようになっています。そうすると%表示がされなくなるというものなんです。 すいません、ややこしくて。 円単位で表示させるマクロは下記のようなものです。 Range("C:C,D:D,F:F").Select Range("F2").Activate Selection.NumberFormatLocal = "#,##0" Range("G2").Select ActiveCell.FormulaR1C1 = "(円単位)" ActiveCell.Characters(2, 1).PhoneticCharacters = "エン" ActiveCell.Characters(3, 2).PhoneticCharacters = "タンイ" Range("G3").Select

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

> 百万単位や円単位、千円単位で表示させるマクロ 表示形式を切り替えるマクロですか? そのマクロを掲示してみては?

midorigi
質問者

補足

そうです。表示形式を切り替えるマクロです。 ボタンを押すと、マクロは作動しますが、あとはおかしくなってしまうんです。

関連するQ&A