2016-06-17 28 views
0

我有一個電子表格充滿了零,但有些單元格有值。這些值表示一個錯誤,我想知道這些錯誤的位置。這是我的電子表格:如何在一個循環中保存單元格地址

My spreadsheet

這是我的代碼:

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 

現在我得到每個錯誤一個MsgBox,但我想在不同的電子表格中所有錯誤的列表,但我不知道如何將地址保存在循環中。另外我想保存錯誤列的標題。

我希望有人能幫助我 - 在此先感謝。

回答

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 

上面的代碼將收集要在2維陣列要求的詳細信息,然後輸出該數組返回到你在Sub具有第二工作表。你可以很容易地修改它輸出數組的位置;讓我知道你在這裏有什麼不明白的東西嗎?

+0

謝謝戴夫 - 它幾乎完美。我不能讓頭部工作,但如果我評論這部分,它就像一個魅力。 我得到這個錯誤: [錯誤的標題] [1] [1]:http://i.stack.imgur.com/XguPW.png 感謝您抽出時間來幫我! – Kristensen

+0

我的錯誤,當它是'Range'時,用'Cells'格式指定它。現在已經在上面的代碼中進行了排序,一個快速的更改,你應該很好去 – Dave

+0

嗨再次:)我沒有在頭上得到一個錯誤,但輸出仍然不包含頭,但只有值和單元格地址。當我逐步運行代碼時,我可以看到myArray包含Header,但是當它被推入到另一個電子表格中時不會。 – Kristensen

相關問題