• ベストアンサー

数式 VBA

VBA勉強中のものです。 以下のコードを表示したいのですが「型が一致しません」と出てしまいます。 Sub TEST() Dim 列 As String, 列2 As String 列 = "B" 列2 = 列 & ":" & 列 MsgBox Evaluate("COUNTIF(列2,2)") 数式の表示の仕方がわかりません。 ややこくしてすいません。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 VBA勉強中であっても、なるべく、2バイト文字の変数名やプロシージャ名は避けたほうがよいです。私のExcelのバグではないと思いますが、VBE の文字検索で、文字化けしたら、VBEアドインツールがうまく行かない場合があります。 それから、ワークシート関数で、WorksheetFunction. で、インテリセンスでリストに関数が出てくる場合は、なるべく、そちらを使ってください。Evaluate は、あまり一般的ではありません。 #1 さんと内容は重複しますが、 Sub TEST() Dim Col As String Dim Col2 As String Col = "B" Col2 = Col & ":" & Col MsgBox Evaluate("COUNTIF(" & Col2 & ",2)") End Sub 変数名は、プロパティ名などと重ならないようにします。 なお、通常は、以下のようにしようします。 Sub Test2() '←このプロシージャ名は、キャメル型にします。  MsgBox WorksheetFunction.CountIf(Columns(2), 2) End Sub Evaluate で使うものの代表としては、たとえば、Code 関数があります。ワークシートのJIS 関数は、Dbcs に替わります。他は、配列数式を導入する場合に、Evaluate が必要になります。

sdfdfadgh
質問者

お礼

大変参考になりました。ご回答ありがとうございます。

その他の回答 (1)

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>MsgBox Evaluate("COUNTIF(列2,2)") 式が「"」で囲まれてしまっているので、「"COUNTIF(列2,2)"」全体が文字になっています。 「"COUNTIF(" & 列2 & ",2)"」としないと、列2 が変数として代入されません。

sdfdfadgh
質問者

お礼

大変参考になりました。ご回答ありがとうございます。

関連するQ&A