2017-09-29 13 views
0

ausgeführt wird Ich habe dieses Verfahren in einer Aufrufsequenz mit einer Schaltfläche verknüpft. Dies funktioniert nicht immer, wenn es über die Schaltfläche aufgerufen wird, funktioniert aber immer, wenn es separat ausgeführt wird. Irgendwelche Gedanken, warum? Der Zweck dieses Verfahrens besteht darin, nummerierte Konten zu analysieren und zu klassifizieren.Code schlägt fehl, wenn er durch die Taste

Sub IndexMatchBsIS() 

     'declare the variable 
     Dim lr As Long 

     'create formula to calculate the last row based on number of materials in column J 

     lr = Sheets("JDE TB").Cells(1048576, 1).End(xlUp).Row 

     'declare a variant to store the row count 
     Dim x As Variant 

     'row that I want to start in 
     x = 2 

     'declare variables as ranges 
     Dim rng As Range, Cell As Range 

     'initialize the Range object rng with Range("E2:the last row in column E") 
     Set rng = Sheets("JDE TB").Range("n2" & ":" & "n" & lr) 


     'Add the For Each Next loop. 
     For Each Cell In rng 

     'Perform the index match calculation without using the spreadsheet filldown method 

    If Cell(x, 3) > 50000 Then 

    Cells(x, 14).Value = "IS" 
    Else 
    Cells(x, 14).Value = "BS" 
    End If 


     'Add the next row to the current count 
     x = x + 1 



      'loop to the next cell until complete 
      Next Cell 

     'exit the function 

     Sheets("JDE TB").Range("k1").Value = "Entity" 
     Sheets("JDE TB").Range("l1").Value = "ONESHIRE HFM Account" 
     Sheets("JDE TB").Range("m1").Value = "ONESHIRE HFM Account Desc." 
     Sheets("JDE TB").Range("n1").Value = "BS/IS" 
     Sheets("JDE TB").Range("o1").Value = "Lv4 JDE" 

    End Sub 
+0

"Es funktioniert nicht" ist, wie Ihr Benutzer das Problem beschreiben könnte. Ist es nicht empörend, eine solche E-Mail zu bekommen, wo Sie keine Ahnung haben, was das Problem ist? Nun, genau das ist Ihre Frage. Bitte sehen Sie [fragen]. –

+1

FWIW [Rubberduck] (http://rubberduckvba.com) (ein VBIDE-Add-In-OSS-Projekt, das ich verwalte) würde diese "Cells (x, 14) .Value" -Zuweisung als * implizite Verweise auf das aktive Blatt * kennzeichnen, das sollte Ihnen einiges über das Problem erzählen. –

Antwort

2

Ich werde eine Vermutung nehmen und sagen, dass Ihre if-Anweisung wie diese

If Cell(x, 3) > 50000 Then 
    Cell(x, 14).Value = "IS" 
    Else 
    Cell(x, 14).Value = "BS" 
    End If 

aussehen sollte sehen, wie ich jeden Singular statt Plural gemacht? Cells bezieht sich auf die aktive Arbeitsmappe und Ihre Cell Variable stammt aus Ihrem qualifizierten Bereich.

2

Verwenden Sie Offset anstelle der x Variable.

If Cell.Offset(, 3) > 50000 Then  
    Cell.Offset(, 14).Value = "IS" 
Else 
    Cell.Offset(, 14).Value = "BS" 
End If 
Verwandte Themen