2017-03-08 1 views
1

Ich habe diesen Code:VBA-Benachrichtigung, wenn das Ergebnis anders ist von 0

DM.OnUpdate="CalculDiferenta" 
DM.OnInsert="CalculDiferenta" 

Sub CalculDiferenta 

If Dsrid.Value=50000 Then 

stl.first 
Do While Not Stl.Eof 
Diferenta.Value=Cantv.Value-Cantc.Value 


Stl.Next 
Loop 

end if 
End Sub 

Sie den Unterschied zwischen 2 Anzahl Spalten in einem Dokument berechnet. Jetzt möchte ich gewarnt werden, wenn es einen Unterschied gibt (Cantv.Value-Cantc.Value <> 0). Der Code sollte jede Zeile des Dokuments auf Unterschiede überprüfen, und wenn er den ersten gefunden hat, stoppe und zeige msgbox.

Ich habe das getan, aber ich bin mir nicht sicher, ob es in Ordnung ist. Es zeigt ein Pop-Up, nur wenn die letzte Zeile einen Unterschied hat.

DM.OnUpdate="VerificareDiferente" 
DM.OnInsert="VerificareDiferente" 

Public Sub VerificareDiferente 

If Dsrid.value=50000 and Cantv.Value-Cantc.Value <> 0 then 

stl.first 
      Do While Not Stl.Eof 
     MsgBox "Exista diferente intre cantitate comandata si cantitate verificata.", vbInformation, "Atentie !!!" 
      Stl.Next 
      Loop 
     end if 
End Sub 

Können Sie mir helfen Jungs? Vielen Dank.

+3

prüfen für Klarheit Ihre Codeblöcke bearbeiten. Ich vermute, dass ein Fehler in der Reihenfolge der if- und while-Anweisungen vorliegt. – putonspectacles

Antwort

2

Sie Ihre If Aussage nur fehl am Platz, sollte es innerhalb der Schleife sein:

DM.OnUpdate = "VerificareDiferente" 
DM.OnInsert = "VerificareDiferente" 

Public Sub VerificareDiferente() 
    Stl.first 
    Do While Not Stl.EOF 
     If Dsrid.Value = 50000 And Cantv.Value - Cantc.Value <> 0 Then 
      MsgBox "Exista diferente intre cantitate comandata si cantitate verificata.", _ 
       vbInformation, "Atentie !!!" 
     Else 
     End If 
     Stl.Next 
    Loop 
End Sub 
+0

Großartig, das war das Problem: D –

+0

Darf ich noch eine Frage haben? Es Pop-up eine msgbox für jede Zeile, wo Unterschiede sind. Wie kann ich nur eine msgbox aufrufen, auch wenn ich eine Zeile mit Unterschieden oder "n" -Zeilen habe? –

+1

@IonutP. Fügen Sie einen Zähler innerhalb der Schleife hinzu ('i = i + 1' oder smthg) und setzen Sie die' MsgBox' nach der Schleife mit einem Test wie 'If i> 0 Then MsgBox';) – R3uK

Verwandte Themen