2016-03-23 18 views
0

ユーザー選択を使用してその選択範囲内の列の数値書式を変更しようとしています。これを変更しようとしている数値形式は会計です。私が試したコードは以下の通りです。vbaの列の数値書式を変更する方法

Dim r As Range 
Dim s As String 
s = Selection.Address(ReferenceStyle:=xlA1, RowAbsolute:=False, ColumnAbsolute:=False) 
r = Range(s).Columns("G") 
r.NumberFormat = "$#,##0.00" 

私は、文字列sが、ユーザーの選択の正しい文字列値を取得することを確実に知ります。 G列の範囲を取得するのは間違っているようです。

+0

は、あなたが常に列 'G'(絶対列G)をフォーマットしたいか、ユーザーの選択から離れ' 7th'列をフォーマットしますか、またはあなたをしますかユーザー選択の列全体をフォーマットしたいですか? –

+0

ユーザーは列A:n〜N:nを選択する必要があります。その選択で変更する列G:nのみを必要とします。だから、私は変更する必要がある選択されたエリアの内側の範囲のようなものです。私は、範囲rの値が何も実行されていないことを言及する必要があります。 –

+0

これは、範囲内で選択された最も左の列の7番目の列ですか? (列Gはスプレッドシートの列Aの7列です)? –

答えて

2

これを試してみてください:

Dim rSel As Range, rCol As Range 

Set r = Selection 
If r.Columns.Count > 6 Then 'make sure there are even 7 columns 

    Set rCol = r.Columns(7) 'Columns("G") 
    rCol.NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)" 

End If 
+0

これは動作しません。 rColは正しい列(私の場合は7桁または "G")を取得していますが、数値書式は同じままです(通貨です)。 –

+0

@BrettComardelle - 元の質問で提供した「NumberFormat」を使用しました。会計フォーマットを取得するには、使用するフォーマットに関する私の編集された回答を参照してください。 –

+0

フォーマットはまだ通貨のままです。 –

関連する問題