1

次のIF条件を設定しました。

    If Range("D" & x) + Range("D" & z) = 0 = True And (Range("G" & x) = Range("G" & z)) = True And (IsEmpty(Range("A" & x)) = False) = True And (IsEmpty(Range("C" & x)) = False) = True Then

          [guts]

    End if

デバッグ中に個々の条件を評価できるようにするために、すべての(condition)= Trueを挿入しましたが、すべてTRUE=TRUEを返します。それでも、ブール値の内臓は実行されません。それは私には意味がありませんが、うまくいけば、あなたの一人がそれの何が悪いのかを見ることができます。マクロを実行するためのテストシートを作成しました。このシートには、すべての条件でTRUEを返す必要があることがわかっている数行のデータしか含まれていませんが、機能しません。痛々しいほど明らかな誤りだと感じています。

ここからいくつかのデータを含むサンプルをダウンロードできます:http ://www.mediafire.com/view/?rm299bttfsp1v01

4

2 に答える 2

1

これを再フォーマットし、貼り付け可能な例を作成しました。

 Public Sub demo()
  Dim x, Z As Long

  x = 1
  Z = 1

  If Range("D" & x) + Range("D" & Z) = 0 = True And _
  (Range("G" & x) = Range("G" & Z)) = True And _
  (IsEmpty(Range("A" & x)) = False) = True And _
  (IsEmpty(Range("C" & x)) = False) = True Then

          Debug.Print "[guts]"

    End If

End Sub

A1=12およびC1=12の場合、それは私のために機能します(例)

しかし、これは私がこれを書く方法です:

Public Sub demo()
  Dim x, Z As Long

  x = 1
  Z = 1

  'to confirm
  Debug.Print Range("D" & x) + Range("D" & Z) = 0
  Debug.Print Range("G" & x) = Range("G" & Z)
  Debug.Print Not IsEmpty(Range("A" & x))
  Debug.Print Not IsEmpty(Range("C" & x))

  If Range("D" & x) + Range("D" & Z) = 0 And _
     Range("G" & x) = Range("G" & Z) And _
     Not IsEmpty(Range("A" & x)) And _
     Not IsEmpty(Range("C" & x)) Then

          Debug.Print "[guts]"
  End If

End Sub

編集

次のコードを使用して、これを簡単にテストできます。

  Debug.Print Range("D" & x) + Range("D" & Z) = 0 And _
              Range("G" & x) = Range("G" & Z) And _
              Not IsEmpty(Range("A" & x)) And _
              Not IsEmpty(Range("C" & x))

後に貼り付け For Z = 8 To 16ます。

それは本当に解決されません、それはあなたが根性を得ていない理由です;)

于 2012-11-20T16:26:51.357 に答える
0

操作の順番に引っかかっているのではないでしょうか。最初の条件の周りに括弧のセットがないようです...

If (Range("D" & x) + Range("D" & z) = 0) = True And (Range("G" & x) = Range("G" & z)) = True And (IsEmpty(Range("A" & x)) = False) = True And (IsEmpty(Range("C" & x)) = False) = True Then

      [guts]

End if
于 2012-11-20T16:26:45.113 に答える