2016-06-17 12 views
0

Ich habe eine Tabelle voller Nullen, aber einige Zellen haben Werte. Diese Werte zeigen einen Fehler an und ich möchte wissen, wo sich diese Fehler befinden. Dies ist meine Tabelle:So speichern Sie die Zelladresse in einer Schleife

My spreadsheet

Dies ist mein Code:

Sub FindErrors() 

Worksheets("Realisering Flow - aggregeret").Activate 

For Each c In Range("EC3:IX1372").Cells 
    If c.Value <> 0 Then 
    Value = c.Value 
    Address = c.Address 

    MsgBox "Der er fundet fejl i celle " & Address & _ 
     "; som har værdien " & Value 
    End If 

Next 

Worksheets("OPS_Volume").Activate 

MsgBox "Der er ikke nogen fejl" 

End Sub 

Im Moment habe ich einen msgbox für jeden Fehler, aber ich würde eine Liste aller Fehler in einer anderen Tabelle gefallen , aber ich kann die Adresse nicht in einer Schleife speichern. Auch möchte ich den Header für die Spalte des Error speichern.

Ich hoffe jemand kann mir helfen - danke im Voraus.

Antwort

0
Sub FindErrors() 
Dim myArray() ' declare array as dynamic so we can adjust its size later 
ReDim myArray(2,0) ' redim it so it's 2 dimensional 
With Worksheets("Realisering Flow - aggregeret") 

    For Each c In .Range("EC3:IX1372").Cells 
     If c.Value <> 0 Then 
      Value = c.Value 
      Address = c.Address 
      Header = .Cells(1, c.Column).Value 

      'MsgBox "Der er fundet fejl i celle " & Address; som har værdien " & Value 
      myArray(0, UBound(myArray,2)) = Value 
      myArray(1, UBound(myArray,2)) = Address 
      myArray(2, UBound(myArray,2)) = Header 
      ReDim Preserve myArray(2, UBound(myArray, 2)+1) ' increase size of array by 1 
     End If 

    Next 
End With 

Dim Destination As Range 
Set Destination = Worksheets("OPS_Volume").Range("A1") ' point Range to A1 
' Now push the array into OPS_Volume starting from A1 (adjust Destination as necessary) 
Destination.Resize(UBound(myArray, 2)+1, UBound(myArray, 1)+1).Value = myArray 
'MsgBox "Der er ikke nogen fejl" 

End Sub 

Der obige Code wird die Details sammeln Sie in einem 2-dimensionalen Array fragen, dann ausgegeben, das Array zurück auf das zweite Arbeitsblatt, das Sie in der Sub haben. Sie können ändern, wo es das Array zu leicht genug ausgibt; lassen Sie es mich wissen, wenn es hier etwas gibt, was Sie nicht verstanden haben?

+0

Danke Dave - es funktioniert fast perfekt. Ich kann den Teil mit dem Header nicht zur Arbeit bringen, aber wenn ich diesen Teil kommentiere, funktioniert es wie ein Zauber. ich diesen Fehler: [Fehler für den Header] [1] [1]: http://i.stack.imgur.com/XguPW.png Vielen Dank für die Zeit nehmen, um mir zu helfen! – Kristensen

+0

Mein Fehler, gab es in einem 'Cells' Format, wenn es eine' Range' war. Habe das jetzt im obigen Code sortiert, eine schnelle Änderung und du solltest gut gehen – Dave

+0

Hi nochmal :) Ich bekomme keinen Fehler mehr im Header, aber die Ausgabe enthält immer noch nicht den Header, sondern nur den Wert und die Zelle Adresse. Wenn ich den Code schrittweise ausfühle, kann ich sehen, dass myArray den Header enthält, aber nicht, wenn er in die andere Tabelle geschoben wird. – Kristensen