プロが教えるわが家の防犯対策術!

VBA初心者です。

当事務所の事務システム(オラクル)をバージョンアップした際、出力帳票をエクセルのワークシートで出すようにしました。
以前は翼システムの帳票印刷用ソフトに連動させ、すぐ印刷できるものにしていたのですが、今後は出力結果から、合計行を後で(エクセルの段階で)だして付け加えたりなどしなければなりません。

事務所には年配の職員のかたもおられ、やはり自動でできるようにして欲しいとの要望があり、いくつかマクロを作りました。

しかし、各帳票エクセルに出力された際、数字が全て文字列で表示されてしまうので、まずこれを数値に直さなければなりません。

(ココから下)
帳票全部が数字ならば、Ctr+Aで範囲選択し、エクセルのツールで数値に直せばいいのですが、そうではないため、範囲選択するところから含めてマクロにしたいのです。

しかし、「文字列→数値」ができません。マクロのツールを使ってでは、それに値する行が作られませんでした。
Format関数をつかうのでしょうか?
?????

初心者的質問で申し訳ありません。
よろしくお願いします。

Sub Macro会費納入状況表データ()
'
' Macro状況表データ Macro
' マクロ記録日 : 2005/11/17 ユーザー名 : sn
'

'
Columns("C:C").Select
Selection.Insert Shift:=xlToRight
Rows("5:5").Select
Selection.Insert Shift:=xlDown
Range("D6").Select
Selection.CurrentRegion.Select
(ココになにかいれるとおもうのですが)
Columns("C:C").Select
Selection.Delete Shift:=xlToLeft
Range("A6").Select
Selection.CurrentRegion.Select
Selection.Copy
End Sub

A 回答 (2件)

こんにちは。

KenKen_SP です。

取り合えず、こんな感じのコードを試してみて下さい。
IsNumeric 関数で数値化できるか調べてから、Cdbl 関数で数値化
しています。ただ、セルをひとつずつ調べるのではなく、配列内
で処理してますので、セルの表示形式等に影響されるかもしれません。


Sub TESTMACRO()

  Dim BUF As Variant
  Dim vntE As Variant

  Columns("C:C").Insert Shift:=xlToRight
  Rows("5:5").Insert Shift:=xlDown
  Range("D6").CurrentRegion.Select

  BUF = Selection.Value
  For Each vntE In BUF
    If IsNumeric(vntE) Then
      vntE = CDbl(vntE)
    End If
  Next vntE
  Selection.Value = BUF

  Columns("C:C").Delete Shift:=xlToLeft
  Range("A6").CurrentRegion.Select
  Selection.Copy

End Sub
    • good
    • 1
この回答へのお礼

ありがとうございました。出来ました。内容については少し勉強しなければなりません。がんばります。

お礼日時:2005/12/01 19:47

概ねこんな感じで・


数値が入っているのに、文字列として表示されてしまうのは、セルの書式が文字列になっているためだと思います。
それで、書式を標準にしています。
valはいらないかもしれません
Dim r As Range, x As Range
Set r = Selection.CurrentRegion
For Each x In r
If IsNumeric(x.Value) Then
x.NumberFormatLocal = "G/標準"
x.Value = Val(x.Value)
End If
Next
    • good
    • 0

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