ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Excel(エクセル)活用コミュのVBAの質問

  • mixiチェック
  • このエントリーをはてなブックマークに追加
初心者なんで初歩的なところでつまづいてます。


例えば、


SS=Range(゙A1゙).Value

Range(゙B1゙).Value=゙G゙ & SS

とします。


このときA1はセルの書式設定の表示形式でユーザー定義 0.0##;-0.0##;0 と設定しておきます。


このときA1の値が1だとすると表示は1.0となるのですが、B1の値はG1となってしまいます。

B1の値をG1.0にする方法はありませんか?

宜しくお願いいたします

コメント(7)

どちらかというと書式設定の仕方の課題で、VBAの質問じゃないような…。

文字列として扱うなら、
 Range("B1").Value = Format(SS, "G0.0##")
のように加工すれば出来そうです。
数値のまま扱うならB1セルの表示形式設定を
 「"G"0.0##;"G"-0.0##;0」
のようにGという文字付きの書式にしてしまうのはいかがでしょう?
できました。


ありがとうございます。


ついでにもう1つお聞きしたいのですが…

SSが数値で、かつ空じゃないという条件を付けたいのですが、

If ??? and SS <> ゙゙ then…

SSが数値というのはどう表記したらよいのですか?
聞く前に調べるクセをつけませんか??
「vba 数値か否か」なんてキーワードで引っかかると思いますが、
IsNumeric関数について調べると幸せになれるかも。

If IsNumeric(SS) = True Then
 '数値の時の処理
Else
 '数値じゃない時の処理
End If
もう解決済みかもしれませんが。

表示形式で文字列を取得したい場合には
RangeオブジェクトのValueプロパティではなくTextプロパティを使いましょう。

SS = Range("A1").Text

Format関数でそのセルの書式で文字列を取得するために
ss = Format$(Range("A2").Value, Range("A2").NumberFormatLocal)
のようにすることもできますが、Textプロパティがあるので↑のコードは無意味です。


Minonさん
表示形式に G(大文字・小文字問わず) があるので
Format()関数やFormat$()関数の第2引数で使うのは避けたほうが無難です。
>>6 よっちゃん さん
…あ゛ぁっあせあせ(飛び散る汗)
Format関数のG/gはシステムで予約されているので、""(ダブルクォート)で囲って
エスケープする必要があるんですね。見事に失念してました。。。
ご指摘有難うございます。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Excel(エクセル)活用 更新情報

Excel(エクセル)活用のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。