vb.netで以下処理をエクセルに実行した際に、
正常に入力されません。
リンク先が空白なら0ではなく空白表示したいのですが。。
■コード
oSheet.Cells(7, 20) = "=IF('1'!T7="","",'1'!T7)"
■エクセル入力結果
=IF('1'!T7=",",'1'!T7)
(1) 数式を指定する場合は、.Formura 系プロパティに代入する必要があります。
(2) 文字列中に " を指定する場合は、それを連記する必要があります。
たとえば、TextBox に「引用符(")を代入」と表示させる場合には、
TextBox1.Text = "引用符("")を代入"
という構文になります。
(3) Cells は、引数を受け取らないプロパティであることに注意してください。
提示されたコードだと、実際には oSheet.Cells._Default(7, 20) 相当に
解釈されます。Cells から返されるオブジェクトを変数に受けておき、
使用後に ReleaseComObject した方が良いでしょう。
http://hanatyan.sakura.ne.jp/dotnet/Excelflm.htm
魔界の仮面弁士さん
いつも有難う御座います。
ご教示頂いた3つの内容を対応すると
以下のような感じになりますでしょうか。
Dim xlCells As Excel.Range = oSheet.Cells
Dim xlRange As Excel.Range
With oSheet
xlRange = DirectCast(xlCells(7, 18), Excel.Range)
xlRange.Formula = "=IF('1'!R7="""","""",'1'!R7)"
MRComObject(xlRange1)
xlRange = DirectCast(xlCells(7, 20), Excel.Range)
xlRange.Formula = "=IF('1'!R8="""","""",'1'!R8)"
MRComObject(xlRange1)
……
MRComObject(xlCells)
End With
> xlRange = DirectCast(xlCells(7, 18), Excel.Range)
> …
> MRComObject(xlRange1)
使用している変数と解放している変数が食い違っている以外は
いいと思います。
もしこの間違っているコードが実際のコードのコピペなら、
変数の宣言の仕方(グローバル変数の多用)や、似たような
変数名の使用について注意すべきかと思います。
・・・あ、あと
> With oSheet
要らないでしょう?利用していませんよね?
ご指摘有難う御座います。
MRComObject(xlRange1)は、上記書き込みをするときに
ご教示頂いたサイトからのコピーしたものでした。
まだ実際のコードには反映してませんが、気を付けるようにします。
>魔界の仮面弁士さん
>とくまさん
ありがとうございました。
解決済みとさせて頂きます。
ツイート | ![]() |