2016-07-13 7 views
1

現在、セル内に2つのカテゴリの何かの最初の日付を見つけるコードを書いています。Excel VBA - 2つの条件が成立していないMINを評価する

セルの1つに日付が入力されている場合はそのセルが無視されますが、他のセルが空白の場合は評価式が実行されます。

私が抱えている問題は、コード式がシート上で動作しますが、コードでは発生しません。エラー:「実行時エラー '1004':アプリケーション定義またはオブジェクト定義エラー」。

コードはxMinScaff = Evaluate("=MIN(IF('Instruction History'!$D:$D=" & cell.address(False, False) & ",IF('Instruction History'!$E:$E=""Scaffold Req"",'Instruction History'!$H:$H)))")で失敗しています。また、かなり同じであるため、xMinWorks = Evaluate("=MIN(IF('Instruction History'!$D:$D=" & cell.address(False, False) & ",IF('Instruction History'!$E:$E<>""Scaffold Req"",'Instruction History'!$H:$H)))")で失敗すると思います。

ここに私が現在持っているコードがあります。おかげ

Private Sub CommandButton4_Click() 
Dim cell, cellRange As Range 
Dim lastRow As Long 
Dim xMinScaff, xMinWorks As Double 

lastRow = sheets("Current Asset List").cells(Rows.count, "A").End(xlUp).Row 
Set cellRange = sheets("Current Asset List").Range("A8:A" & lastRow) 

For Each cell In cellRange 
    If cell.Offset(0, 24) = "" Then 
     xMinScaff = Evaluate("=MIN(IF('Instruction History'!$D:$D=" & cell.address(False, False) & ",IF('Instruction History'!$E:$E=""Scaffold Req"",'Instruction History'!$H:$H)))") 
     If xMinScaff <> "0" Then 
      cell.offset(0, 24).Value = Format(xMinScaff, "DD/MM/YYYY") 
     End If 
    End If 
    If cell.Offset(0, 25) = "" Then 
     xMinWorks = Evaluate("=MIN(IF('Instruction History'!$D:$D=" & cell.address(False, False) & ",IF('Instruction History'!$E:$E<>""Scaffold Req"",'Instruction History'!$H:$H)))") 
     If xMinWorks <> "0" Then 
      cell.offset(0, 25).Value = Format(xMinWorks, "DD/MM/YYYY") 
     End If 
    End If 
Next cell 
    End Sub 

答えて

0

エラーがスローされた場合、あなたが私たちに語っていないので、多くの問題があるかもしれないが、あなたの問題の原因である可能性がありますあなたのコード内のいくつかのタイプミスが存在する表示されます。私は以下のタイプミスを修正しました:

Private Sub CommandButton4_Click() 
Dim cell, cellRange As Range 
Dim lastRow As Long 
Dim xMinScaff, xMinWorks As Double 

lastRow = sheets("Current Asset List").cells(Rows.count, "A").End(xlUp).Row 
Set cellRange = sheets("Current Asset List").Range("A8:A" & lastRow) 

For Each cell In cellRange 
    If cell.Offset(0, 24) = "" Then 
     xMinScaff = Application.Evaluate("=MIN(IF('Instruction History'!$D:$D=" & cell.address(False, False) & ",IF('Instruction History'!$E:$E=""Scaffold Req"",'Instruction History'!$H:$H)))") 
     If xMinScaff <> "0" Then 
      cell.offset(0, 24).Value = Format(xMinScaff, "DD/MM/YYYY") 
     End If 
    End If 
    If cell.Offset(0, 25) = "" Then 
     xMinWorks = Application.Evaluate("=MIN(IF('Instruction History'!$D:$D=" & cell.address(False, False) & ",IF('Instruction History'!$E:$E<>""Scaffold Req"",'Instruction History'!$H:$H)))") 
     If xMinWorks <> "0" Then 
      cell.offset(0, 25).Value = Format(xMinWorks, "DD/MM/YYYY") 
     End If 
    End If 
Next cell 
End Sub 
+0

RGA、それらを選んでくれてありがとう、私はコードが失敗したときに定義するために投稿を更新しました。ありがとう! – atame

+0

@atameそれを追跡するのは難しいですが、私はあなたが数式のIFステートメントのいくつかの条件が不足している可能性がありますと思います。あなたは 'xMinWorks'のために何を計算しようとしていますか? VBAで直接行う方がはるかに簡単ですが、式 – RGA

+0

を避けるのは、IDが一致する場合は「xMasScaff」、足場の場合は「 ' xMinWorks 'この式は、CTRL SHIFTENTERを押したときにシート上で使用するときに機能します。私はこれが検索を行うために数千の行があるので、これを完了させる最も簡単な方法だと思っていました。ありがとう – atame

関連する問題