質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

7569閲覧

Excel VBAでセルにIFERROR関数を入れようとすると『型が一致しません』というエラーが出る

haruhi.

総合スコア18

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2019/08/27 05:35

前提・実現したいこと

VBAでセルにIFERROR関数を入れたい。

発生している問題・エラーメッセージ

お世話になります。VBA初学者です。
現在、ひとつのフォルダ内にある複数ファイルに対して、特定のセルにIFERROR関数を挿入したいと考えています。
ステップイン実行を試したところ、ファイルを開くことまではできるのですが、Valueを挿入する箇所で**『型が一致しません』**というエラーメッセージが表示され、コードの実行を続けることができません。

なお、IFERROR関数ではなく普通の文字列(例:"hoge")を挿入する分には上手くいきます。
自分ではどこがおかしいのか分からず…どなたかお知恵をお貸しいただけないでしょうか。

質問内容に不明点・不備等ございましたらご指摘いただけますと幸いです。
どうぞよろしくお願いいたします。

該当のソースコード

VB

1'****関数の置換**** 2Sub macro1() 3 Dim myPath As String 4 Dim myFile As String 5 Dim newFunction As String 6 Dim myCell As String 7 Dim mySheetname As String 8 9 myPath = "C\dummy" 10 11 myPath = ThisWorkbook.Path & "\" 12 myFile = Dir(myPath & "*.xlsx") 13 Do Until myFile = "" 14 Workbooks.Open myPath & myFile 15 16 '↓↓↓エラーが発生しているのは以下一文 17 ActiveWorkbook.Worksheets("データベース").Range("R5").Formula = "=IFERROR(IF(H5<6,0,IF(AND(H5>=6,H5<18),10,IF(AND(H5>=18,H5<30),11,IF(AND(H5>=30,H5<42),12,IF(AND(H5>=42,H5<54),14,IF(AND(H5>=54,H5<66),16,IF(AND(H5>=66,H5<78),18,IF(AND(H5>=78,H5<78),20," - ")))))))),"")" 18 ActiveWorkbook.Close True 19 20 myFile = Dir() 21 Loop 22End Sub 23

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ダブルコーテーションを二重にしてエスケープしてあげたらいけると思います

投稿2019/08/27 05:44

shirokuma4690

総合スコア154

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

haruhi.

2019/08/27 05:56

ご回答ありがとうございます。 ダブルコーテーションを2つ使うことは初めて知りました。 とても勉強になりました。本当にありがとうございました!
guest

0

ベストアンサー

こうかしら

VBA

1ActiveWorkbook.Worksheets("データベース").Range("R5").Formula = "=IFERROR(IF(H5<6,0,IF(AND(H5>=6,H5<18),10,IF(AND(H5>=18,H5<30),11,IF(AND(H5>=30,H5<42),12,IF(AND(H5>=42,H5<54),14,IF(AND(H5>=54,H5<66),16,IF(AND(H5>=66,H5<78),18,IF(AND(H5>=78,H5<78),20,"" - "")))))))),"""")"

「"(ここに数式)"」で囲われている数式の中に「"」を使うときは、2個重ねて、「このダブルクオーテーションは数式の区切りではなくて文字です」と教えてあげるためです。

投稿2019/08/27 05:50

編集2019/08/27 05:54
sumire_cl

総合スコア228

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

haruhi.

2019/08/27 05:55

ご回答いただきありがとうございます。 二つ入力しなければならなかったのですね。解決いたしました!本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問