- ベストアンサー
マクロを使用すると表示できなくなるのです
さきほども別の質問をさせていただきました。 もう一つお願いいたします。 表形式で、c列に前年売上500,231,655 d列に当年売上485,652,311という数値がずらっとならんでおり、E列に前年比という項目があります。前年比は前年売上/当年売上でだすことはできます。これを小数点以下第二位までの%表示させています。この前年と当年売上の数値を百万単位や円単位、千円単位で表示させるマクロを作りました。そうすると、この前年比の項目の%表示したものが、1や0という数値に変わります。セルにはきちんと前年売上/当年売上の数式が入っているのですが%表示されなくなります。これをマクロを使ってもきちんと%表示させることってできるんでしょうか? 明日の会議で必要になる資料なもので、どなたか教えてください。よろしくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
マクロを実行したあと、E列の書式はパーセントになっていますか? どこかで、書き換えて」しまっている場合、 お急ぎだったら、原因を探すよりも、 マクロの最後に Range("E:E").NumberFormatLocal = "0.00%" と付け加えたほうが早そうですが。
その他の回答 (4)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 >明日の会議で必要になる資料なもので、 では、もう「遅かりし」ですが、 >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
お礼
ご丁寧な回答ありがとうございました。 会議では、なんとか作動させることができ、ほっとしています。 本当に、ありがとうございました。
- papayuka
- ベストアンサー率45% (1388/3066)
#1です。 掲示されたマクロが全てならば、私の環境ではE列の表示形式は変わりませんし、おかしい所は見当たりません。 小出しにされているなら、別の所に問題があると推測します。 どこかでE列の書式を変えてしまっている箇所があるのでは無いですか? 1や0になったセルを再度%表示にすると値はどう変化しますか?
お礼
あれから、いろいろ試してみました。 なんとか解決できました。 いろいろとアドバイスありがとうございました。
- papayuka
- ベストアンサー率45% (1388/3066)
#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
補足
何度もすいません。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)
> 百万単位や円単位、千円単位で表示させるマクロ 表示形式を切り替えるマクロですか? そのマクロを掲示してみては?
補足
そうです。表示形式を切り替えるマクロです。 ボタンを押すと、マクロは作動しますが、あとはおかしくなってしまうんです。
お礼
そうですね。そうすればよかったですね。 解決いたしました! ありがとうございます。