2016-07-27 10 views
1

誰も私のコードをvbaで見てください。かっこは認識されません

wb2.ActiveSheet.Range("K" & lrow3 + 1).Value = "(" & wb2.ActiveSheet.Range("K" & lrow3 + 1).Value * -1 & ")" 

式は、セルの値が負の場合、セル内の値を変換し、括弧の内部にそれを置くであろう

-24.5 

この出力のみ。ありがとう。

+1

あなたは、このセルに設定され、この式を有するしようとしていますか? –

+0

@ShaiRadoはい、これは私がやろうとしていることです。 – ramj

+1

数字の形式を使用してみませんか?あなたが車輪を再発明しようとしているように見えます。 – teylyn

答えて

2
内側にふくれっ面ます

_(* #,##0_);_(* (#,##0);_("-");_() 

ガイドとしてお持ちください:

負の値がセルA2にコピーされます。 A2は、小数点以下2桁の括弧内に負の値を示すように書式設定されます。

Sub test() 
Range("A1").Copy Range("A2") 
Range("A2").NumberFormat = "0.00;(0.00);0" 

End Sub 

enter image description here

何も変換されません取得します。括弧は連結されていません。セルは、カスタム番号形式で単純にフォーマットされます。 Excelで番号の形式の構文は、例えば

<format for positive values>;<format for negative values>;<format for zeroes>;text 

、大手-記号で整数、負の値として正の値を示し、ゼロを非表示にし、テキストを非表示になりますカスタムフォーマット

0;-0;; 

です。 VBAコードで

0

、あなたの範囲を選択し、... セルの書式に行く - >カスタム、と入力し:これはあなたの負の値を取ると、ブラケット

+0

これをVBAに変換する方法はありますか? – ramj

1

if wb2.ActiveSheet.Range("K" & lrow3 + 1).Value<=0 then 
    wb2.ActiveSheet.Range("K" & lrow3 + 1).Value = wb2.ActiveSheet.Range("K" & lrow3 + 1).Value * -1 
else 
    wb2.ActiveSheet.Range("K" & lrow3 + 1).numberformat = "@" 
    wb2.ActiveSheet.Range("K" & lrow3 + 1).Value = "(" & wb2.ActiveSheet.Range("K" & lrow3 + 1).Value * -1 & ")" 
end if 
関連する問題