- ベストアンサー
数式 VBA
VBA勉強中のものです。 以下のコードを表示したいのですが「型が一致しません」と出てしまいます。 Sub TEST() Dim 列 As String, 列2 As String 列 = "B" 列2 = 列 & ":" & 列 MsgBox Evaluate("COUNTIF(列2,2)") 数式の表示の仕方がわかりません。 ややこくしてすいません。 よろしくお願い致します。
- みんなの回答 (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 が必要になります。
その他の回答 (1)
- hana-hana3
- ベストアンサー率31% (4940/15541)
>MsgBox Evaluate("COUNTIF(列2,2)") 式が「"」で囲まれてしまっているので、「"COUNTIF(列2,2)"」全体が文字になっています。 「"COUNTIF(" & 列2 & ",2)"」としないと、列2 が変数として代入されません。
お礼
大変参考になりました。ご回答ありがとうございます。
お礼
大変参考になりました。ご回答ありがとうございます。