プロが教える店舗&オフィスのセキュリティ対策術

エクセル2002使用です。

VBAで、表などの転記をしていると、転記された数字がエクセルの書式の自動変換によって想定しない書式の表示になります。

例えば、

10 → 1000%
(%への表示変換が一番多いです)

これをとめる方法はありますか?
または、VBAで書式を設定する必要があるのでしょうか?

よろしくお願いします。

A 回答 (4件)

こんにちは。



#1さんのところの補足で書いたのは、「値の代入」です。転記するなら、Copy メソッドを使うか、NumberFormatLocalで、書式を設定するかコピーしてください。

>先程の補足は例ではなく、実際のコードです。

>ActiveSheet.Range("AA3").Value = 1
>ActiveSheet.Range("AA4").Value = 2
>ActiveSheet.Range("AA5").Value = 3
>ActiveSheet.Range("AA6").Value = 4
>ActiveSheet.Range("AA7").Value = 5
    ↓

Sub TestSample1()
Dim LastRow As Long
Dim i As Long

With ActiveSheet
LastRow = 5
For i = 1 To LastRow
  .Range("AA3").Offset(i - 1).Value = i
Next i
  .Range("AA3").Resize(LastRow).NumberFormat = "General" '英語表記

End With
End Sub

'(NumberFormatは、NumberFormatLocalよりもむつかしいので注意してください)

P.S 書式の自動変換など、型の変換を、「自動キャスト」と呼びます。例えば、日付のテキスト値の一部は、ワークシートのセルの書式にもっとも合うものに変換されますが、この場合は、元の書式を変えているわけではありません。
    • good
    • 1

値だけを扱うエクセル関数はもちろん、VBAの値(Value)をセットするだけで、書式が変わることはありません。

それ以前に設定されている書式が、値を得て、見えるような形になったのだと思いいます。
どうしても気になるのなら、VBAでセルの書式NumberFormatプロパティを設定すれば、今までの書式にかかわらず、そのように書式が設定されます 。
気になるなら
範囲を指定して
Sub test01()
Dim cl As Range
For Each cl In Selection
MsgBox cl.NumberFormat
Next
End Sub
を実行すると、範囲指定したセルに現在セットされているセルの書式が確かめられ、判ります。
    • good
    • 0

えーと


例じゃなくて、実際に書いているコードを見せてほしいんですが・・・
実際には具体的な値ではなくて、どこかのセルから引っ張ってきた値(変数)を入力しているんですよね。持ってきかたによっては書式ごと持ってきちゃうことも考えられるので言ってます。

補足に書いてあるようなコードをそのまま(文字通りそのままです)書いて、かつAA3:AA7の書式が標準で、ご指摘のような内容になるのであれば、ごめんなさい。私の出る幕ではなかったです。
    • good
    • 0
この回答へのお礼

banker_U 様ありがとうございます。

先程の補足は例ではなく、実際のコードです。

AA3:AA7に1から順番に数字を代入してます。
代入した数字の表示形式がいろいろとなります。

もし何かわかれば、またよろしくお願いします。

お礼日時:2005/10/14 20:32

こんにちは


ちょっと今の情報だけでは状況が判明しません。
具体的にどんなコードを書いていますか?
コピー部分とペースト部分を教えてください。
多分省略しているプロパティをきちんと書けばいいと思います。

あと、シートの方の書式設定(コピー元、コピー先とも)も問題かもしれません。

この回答への補足

banker_U 様早速のご回答ありがとございます。

ActiveSheet.Range("AA3").Value = 1
ActiveSheet.Range("AA4").Value = 2
ActiveSheet.Range("AA5").Value = 3
ActiveSheet.Range("AA6").Value = 4
ActiveSheet.Range("AA7").Value = 5

コードは上記のように代入しています。1が100%になったり、ならなかったりします。

シートの方の書式は、標準に設定しなおしても、VBAで再書き込みすると同じようになります。

よろしくお願いします。

補足日時:2005/10/14 17:19
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A