如何在循环中保存单元格地址
How to save cell address in a loop
我有一个全是零的电子表格,但有些单元格有值。这些值表示错误,我想知道这些错误位于何处。这是我的电子表格:
这是我的代码:
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
现在我得到每个错误的消息框,但我想要一个不同电子表格中所有错误的列表,但我不知道如何在循环中保存地址。此外,我想为错误列保存 header。
我希望有人能帮助我 - 提前致谢。
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
以上代码将收集您在二维数组中要求的详细信息,然后将该数组输出回您在 Sub 中的第二个工作表。您可以很容易地修改它输出数组的位置;让我知道这里有什么你不明白的吗?
我有一个全是零的电子表格,但有些单元格有值。这些值表示错误,我想知道这些错误位于何处。这是我的电子表格:
这是我的代码:
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
现在我得到每个错误的消息框,但我想要一个不同电子表格中所有错误的列表,但我不知道如何在循环中保存地址。此外,我想为错误列保存 header。
我希望有人能帮助我 - 提前致谢。
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
以上代码将收集您在二维数组中要求的详细信息,然后将该数组输出回您在 Sub 中的第二个工作表。您可以很容易地修改它输出数组的位置;让我知道这里有什么你不明白的吗?