2017-10-11 4 views
0

新しく作成された最後のListRowsに式を挿入するために.Formulaを使用しようとしています。 このコードスニペットは最後のListRowsで変数付きの.Formulaを使用する

oNewRow.Range(0, 2).Formula = "=IF(COUNTIF(A:A,[@PRODNAME])<=1,""100-"" & CHAR(72) & ""-0""&COUNTIF(A:A,[@PRODNAME]),)" 

この式は全く問題になります動作しますが、私はCHAR()は変数で表すことにする必要があります。

ありがとうございます。

Dim cChr As Integer 
Dim tbl As ListObject 
Dim tblRows As Integer 
Dim oNewRow As ListRow 



Set tbl = ThisWorkbook.Worksheets("100-0-00").ListObjects("TBL_tertiary129") 


Set oNewRow = tbl.ListRows.Add(AlwaysInsert:=True) 

tblRows = tbl.ListRows.Count 


cChr = (65 + tblRows - 2) 'Increment alpha value based on position 

MsgBox (Chr(cChr)) 


oNewRow.Range(0, 2).Formula = "=IF(COUNTIF(A:A,[@PRODNAME])<=1,""100-"" & CHAR(" & cChr & ")""-0"" &COUNTIF(A:A,[@PRODNAME]),)" 'Problem with Formula within Quotes  
+0

どのようなエラーが表示されますか? – JNevill

+0

1004アプリケーション定義またはオブジェクト定義エラー – James007

答えて

1

アンパサンドが不足しているようです。 cChrが72に設定されている場合は、現在お使いの式は次のようになります。

=IF(COUNTIF(A:A,[@PRODNAME])<=1,"100-" & CHAR(72)"-0" &COUNTIF(A:A,[@PRODNAME]),) 

あなたは"-0"とそれを連結するCHAR(72)後にはアンパサンドがありません表示されます。範囲の.formulaにそれを上に玉掛けし、いくつかの難解なExcelのエラーを拾う前に

debug.print "=IF(COUNTIF(A:A,[@PRODNAME])<=1,""100-"" & CHAR(" & cChr & ")""-0"" &COUNTIF(A:A,[@PRODNAME]),)" 

:代わりに:あなたはすぐにペインにあなたの連結の結果をエコーし​​た場合

oNewRow.Range(0, 2).Formula = "=IF(COUNTIF(A:A,[@PRODNAME])<=1,""100-"" & CHAR(" & cChr & ") & ""-0"" &COUNTIF(A:A,[@PRODNAME]),)" 

これは簡単に捕捉可能です。

+0

ありがとうJNevill!それはそれだった。 1つの "&"がありません。大いに感謝! – James007

+0

トリックをやったことはうれしい! – JNevill

関連する問題