• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルのVBA1について)

エクセルのVBA1式のコンパイルエラーとは?

imogasiの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.6

私が、よく勉強させていただいている田中 亨先生のサイト http://officetanaka.net/excel/vba/cell/cell03.htm の後半に解説があります。 ーー シートへ普通に関数を入力する(当然正しい式)文字列(=、関数名、セル番地、引数、括弧などをそのまま持ってきて、式の中で” ”で囲まれている(リテラル)文字列についての部分だけ、”” ”"のように、””を両側に変える、(”を両側ダブルにする)、と覚えておけば良いように思うが。 参考 私のメモ(Formula関係) Vこのように、セルに数式を入力するときは、Valueプロパティに対して代入しても、 Excelがうまく処理してくれます。ただし、セルに入力されている数式を取得するには、Formulaプロパティを使わなければなりません。 ーー ・最初に=が必要 ・文字列で式を入れるーー>””で両端を囲む必要あり http://officetanaka.net/excel/vba/cell/cell03.htm ・tanaka」を囲む""(ダブルコーテーション)を、文字列の区切りである""(ダブルコーテーション)ではなく、単なるデータとしての""(ダブルコーテーション)とするには、""(ダブルコーテーション)を2つ重ねて記述します。 ーー Sub Sample10() Range("A1") = "=LEFT(""tanaka"",2)" End Sub ーー 下記D1:D4部分には両端に””は不要 Sub test02() Mdata = 5 Range("D" & Mdata).Formula = "=SUM(D1:D4)" End Sub 式の方、すなわち=の右辺の、中身がVBAではRangeの中のセル範囲は両側””が要らない ーー Sub test01() Range("H1").Formula = _ "=IF(ISERROR(VLOOKUP($E3822,Sheet2!$C:$D,2,FALSE)),""対象外"",IF($D3822>=VLOOKUP($E3822,Sheet2!$C:$D,2,FALSE),""対象"",""対象外""))" MsgBox Range("H1").Formula End Sub のように一度VBA(構文のチェック)を通してMsgboxで表示して、シートに入力する式と同じかどうか、1字1字じっくりチェックするのがおすすめ。しかし要点はリテラルの両側の””””と思うが。

関連するQ&A

  • VBAで関数の埋め込みをしていますが何度やってもエラーになってしまいま

    VBAで関数の埋め込みをしていますが何度やってもエラーになってしまいます。 以下の関数の場合、どのように式を分けて埋め込めば良いのでしょうか? Cells(11, 7).Formula = ”=IF(ISERROR(VLOOKUP(E11,製品マスタ!B$2:C$240,2,FALSE)),"",VLOOKUP(E11,製品マスタ!B$2:C$240,2,FALSE))"

  • エクセルの式を教えて下さい。

    初心者なので解りやすく翻訳して下さい。 =IF(ISERROR(VLOOKUP($D16&$C16,データ!$2:$65536,AA$1,FALSE)),"   ",IF(VLOOKUP($D16&$C16,データ!$2:$65536,AA$1,FALSE)=" ","",VLOOKUP($D16&$C16,データ!$2:$65536,AA$1,FALSE))) お願いします。

  • VLOOKUP関数 エクセル関数教えてください

    =IF(ISERROR(VLOOKUP(B2,$E$1:$F$296,2,FALSE)),"",VLOOKUP(B2,$E$1:$F$296,2,FALSE)) という関数を入れて、品番をセルに入力して元表から品名を導く表を作成しました。うまく使えています。 これを元に =IF(ISERROR(VLOOKUP(B2,$F$1:$I$1000,2,FALSE)),"",VLOOKUP(B2,$F$1:$I$1000,2,FALSE)) という関数に直して、同じような表を作ろうとしたのですが、うまくいきません。 何が悪いのか分かりません。 どうすればうまくいきますでしょうか?

  • 関数について教えて下さい。

    =IF(ISERROR(VLOOKUP($A3,母日!$C$6:Y$40,23,FALSE)),"",VLOOKUP($A3,母日!$C$6:Y$40,23,FALSE)) の関数『6』『40』という数字を横にドラッグしただけでプラス44づづ増える関数式を教えてください。例えば、 =IF(ISERROR(VLOOKUP($A3,母日!$C$50:Y$84,23,FALSE)),"",VLOOKUP($A3,母日!$C$50:Y$84,23,FALSE)) =IF(ISERROR(VLOOKUP($A3,母日!$C$94:Y$128,23,FALSE)),"",VLOOKUP($A3,母日!$C$94:Y$128,23,FALSE))という具合です。 すみませんがお忙しいところスミマセン。宜しくお願い致します。

  • #N/Aを消そうとすると正常時も消えます

    Excelの関数使用で困っています。 下記2行はどちらも「調査あり」となるべきなのですが、#N/Aを消すために2行目のようにISERROR関数を加えると空白になってしまいます。 何が間違っているのでしょうか? ご教示いただけると助かります。 よろしくお願い致します。 =IF(VLOOKUP($C20,INDIRECT($K$1&"!$B$2"):INDIRECT($K$1&"!G$122"),6,FALSE)=$B20,"調査あり","") =IF(ISERROR(VLOOKUP($C20,INDIRECT($K$1&"!$B$2"):INDIRECT($K$1&"!G$122"),6,FALSE))=$B20,"調査あり","")

  • Excelの関数の意味を教えてください。

    Excel関数初心者です。 以下のふたつの関数の式の意味を教えてください。 どの値を見に行って、それに対してどのような処理を行なっているのかを、できるだけ、わかりやすく教えてください。 (1)=IF(ISERROR(VLOOKUP(A2,B$1:C1,2,0)),"",VLOOKUP(A2,B$1:C1,2,0))&B2 (2)=SUMPRODUCT(1*NOT(ISERROR(FIND(B2,$C$1:$C$15))),$D$1:$D$15)

  • VLOOKUPのエラーについて

    教えて下さい。 =IF(ISERROR(VLOOKUP($B3,Sheet2!$A$2:$D$35,4,FALSE)),"",VLOOKUP($B3,Sheet2!$A$2:$D$35,4,FALSE))+IF(ISERROR(VLOOKUP($B3,Sheet3!$A$2:$C$50,3,FALSE)),"",VLOOKUP($B3,Sheet3!$A$2:$C$50,3,FALSE)) という数式を使っています。 最初のIF文(Shee2)については有効なのですが、それならと、欲張って他のシートも参照できるように、+の後にIF文(Sheet3)を追加したら#VALUE!が表示されます。 何がいけないのでしょうか?

  • マクロを動かすとき、毎回シート名を変更したい

    マクロを登録しているBOOKに毎月前月の名前のシートを作成し、システムからダウンロードしたデーターを張り付けます。 そのデーターをVlookup関数で検索し「実績」のシートに、値を張り付けしています。 範囲のシート名が「2月」、「3月」と毎月変更になるので、インプットボックス?で変更できるようなコードを教えてください。 検索してできた初心者のコードですので、もっとスマートなコードがありましたら教えてください。よろしくお願いいたします。 エクセル2010を使用しています。 以下コード Sub 毎月集計() Dim i As Byte Dim 範囲 As Range Dim myV As Variant Sheets("実績").Select Set 範囲 = Worksheets("2月").Range("B7:AZ20")←ここをインプットボックスで変更したい For i = Application.InputBox("開始行を半角で入力してください。", Default:=123, Type:=1) To Application.InputBox( _ "最終行を半角で入力してください。", Default:=123, Type:=1) myV = Application.VLookup(Range("B" & i).Value, 範囲, 2, False) If IsError(myV) Then Range("C" & i).Value = "0" Else Range("C" & i).Value = myV End If myV = Application.VLookup(Range("B" & i).Value, 範囲, 3, False) If IsError(myV) Then Range("D" & i).Value = "0" Else Range("D" & i).Value = myV End If myV = Application.VLookup(Range("B" & i).Value, 範囲, 4, False) If IsError(myV) Then Range("E" & i).Value = "0" Else Range("E" & i).Value = myV End If myV = Application.VLookup(Range("B" & i).Value, 範囲, 5, False) If IsError(myV) Then Range("F" & i).Value = "0" Else Range("F" & i).Value = myV End If ’以下51列まで続く  Next i End Sub

  • EXCEL VBA Worksheet_Chang

    お世話になります。 EXCEL VBAで 以下の処理をしています。 C6の内容に応じて、セルに式を設定するだけなのですが このシートの全然関係ないセルで[Delete]キーを押下した際に 実行時エラー 13 型が一致しません というエラーが発生します。 どういう理由でエラーとなるのでしょうか? また、どのような対処をすればいいでしょうか? 以下、実際のコードです Private Sub Worksheet_Change(ByVal Target As Range) If Target = Range("C6") Then If Range("C6").Value = "する" Then Range("I11").Formula = "=C7" Range("I12").Formula = "=C7" Range("I13").Formula = "=C7" Range("I14").Formula = "=C7" Range("J11").Formula = "=C8" Range("J12").Formula = "=C8" Range("J13").Formula = "=C8" Range("J14").Formula = "=C8" Else Range("I11").Formula = "" Range("I12").Formula = "" Range("I13").Formula = "" Range("I14").Formula = "" Range("J11").Formula = "" Range("J12").Formula = "" Range("J13").Formula = "" Range("J14").Formula = "" End If Else End If End Sub

  • エクセル関数で困っています

    特定セルの数字を特定文字に変換したいのですが、希望表示にさせることが出来ません 現在は下記変更       希望    123⇒あかさ       123⇒あかさ    321⇒あかさ       321⇒さかあ    223⇒かさ         223⇒かかさ   希望通りに表示できる関数を教えてください よろしくお願いいたします。 現在の関数は下記を使用中  =IF(ISERROR(SEARCH("1",A20))=FALSE,"あ","")&IF(ISERROR(SEARCH("2",A20))=FALSE,"か","")&IF(ISERROR(SEARCH("3",A20))=FALSE,"さ","")