[[20180511143812]] 『VBA Match関数 1004のエラーについて』(ぜん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBA Match関数 1004のエラーについて』(ぜん)

こんにちは

初めてVBAでmatchの関数を利用します。
下記のコードを作成しました。
C列に"20"と入力されている行のK列に"2400"を入力しその下のセルにIF関数が入るようにしたいです。
ステップインで実行していくと
>Cells(r + 1, 11).Formula = "=IF(cells(r,6))="""",IF(cells(r+1,6)="""","""",2400),"""")"
ここまで希望通りの動作をします。

しかし1004のエラーとなってしまいますがなぜでしょうか?
これは"20"があっても出るものなのでしょうか?

Sub test()

  Const KEY = 20
  Dim r As Long

  On Error GoTo ERR_HNDL

  r = WorksheetFunction.Match(KEY, Range("C:C"), 0)
  Cells(r, 11).Value = 2400

  Cells(r + 1, 11).Formula = "=IF(cells(r,6))="""",IF(cells(r+1,6)="""","""",2400),"""")"

  Exit Sub

ERR_HNDL:

  Select Case Err.Number
    Case 1004
     MsgBox "『" & KEY & "』は見つかりませんでした。"
    Case Else
     MsgBox "エラーが発生しました。"
  End Select
  Err.Clear

   Columns("M:M").Select
    Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
        Formula1:="=1", Formula2:="=9"
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .Color = 16776960
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).StopIfTrue = True

 End Sub

< 使用 Excel:Excel2007、使用 OS:Windows7 >


 数式は文字列にしないと...

  Cells(r + 1, 11).Formula = "=IF(" & cells(r,6).address(0,0) & ")="""",IF(" & _
  cells(r+1,6).address(0,0) & "="""","""",2400),"""")"
 
(seiya) 2018/05/11(金) 15:08

推敲してる間に、回答付いてますが書いちゃたので、投稿します。

違ってたらごめんなさいですけど、
 Sub test()

    Debug.Print "=IF(cells(r,6))="""",IF(cells(r+1,6)="""","""",2400),"""")"
 End Sub

↑のコードを実行してイミディエイトに出力される文字列をそのまま数式バーに貼り付けてみてください。
たぶんExcel君から怒られると思います。

実は↓の様にしたかったんじゃないかと推測しますがどうでしょうか?(ワークシート関数にCell関数はあれど、Cells関数はないので・・)
"=IF(" & Cells(r, 6).Address & ")="""",IF(" & Cells(r + 1, 6).Address & "="""","""",2400),"""")"

(もこな2) 2018/05/11(金) 15:23


素早いご回答ありがとうございます。

ご教授頂いた通り変更しましたが、変わずでした。
他に原因があるのでしょうか?
(ぜん) 2018/05/11(金) 15:52


 余計な")"

   Cells(r + 1, 11).Formula = "=IF(" & cells(r,6).address(0,0) & "="""",IF(" & _
  cells(r+1,6).address(0,0) & "="""","""",2400),"""")"

(seiya) 2018/05/11(金) 16:01


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.