我在这里完全失败了。我的编码允许我在选择偏移(0,1)和选择偏移(1,1)时返回值。然而,对于我想要使用它的东西,我试图看得更远 - 这个例子是Offset(0,3),但是当我尝试这个时 - 它给了我一个空值。
我尝试过Offset.Value,Offset.Value2和Offset.Text没有运气。如果有人可以请查看我的代码并提出建议或给我另一个解决方法 - 我将不胜感激。
我已将其缩小到尽可能小以使其更容易破译,而我所要做的就是将数据从工作表(“详细”)发布到工作表(“报告”)。
提前致谢, 罗尼。
Sub TEST()
Dim DetailedSrchRng As Range, DetailedCel As Range
Set DetailedSrchRng = Range("C1:C15")
Dim DMArray(1 To 3), GMArray(1 To 2, 1 To 2), GMRow(1 To 8), X As Integer, Y As Integer
DMArray(1) = "DistributionMailing1"
DMArray(2) = "DistributionMailing2"
DMArray(3) = "0"
GMArray(1, 1) = "GeneralMailing1"
GMArray(1, 2) = "GeneralMailing2"
GMArray(2, 1) = "GeneralMailing3"
GMArray(2, 2) = "0"
X = 3
Do Until DMArray(X) <> "0"
X = X - 1
Loop
A = X
X = 1
For X = 1 To 3
If X > A Then
Exit For
End If
GMRow(1) = 5
GMRow(2) = 10
For Y = 1 To 2
For Each DetailedCel In DetailedSrchRng
If DetailedCel.Value = GMArray(X, Y) Then
'The Code Listed Directly Below Was A Workaround I Tried, It Didn't Work Either
'Worksheets("Reports").Range("A" & GMRow(Y)) = DetailedCel.Offset(0, 3).Value2
ActiveWorkbook.Worksheets("Reports").Cells(GMRow(Y), 1).Value = DetailedCel.Offset(0, 3).Value2
MsgBox (DetailedCel.Offset(0, 3).Value2)
GMRow(Y) = GMRow(Y) + 1
End If
Next DetailedCel
Next Y
Next X
End Sub
这将是我从中提取数据的示例工作表:
A B C D E F G
1 GeneralMailing1 1 2 3 4
2 GeneralMailing1 5 6 7 8
3 9 10 11 12 13
4 GeneralMailing2 14 15 16 17
5 GeneralMailing2 18 19 20 21
6 22 23 24 25 26
7 GeneralMailing3 27 28 29 30
8 GeneralMailing3 31 32 33 34
9 35 36 37 38 39
10 40 41 42 43 44
11 GeneralMailing4 45 46 47 48
12 GeneralMailing4 49 50 51 52
13 53 54 55 56 57
14 58 59 60 61 62
当我有偏移(0,1)时,它会正确地提取数据并准确发布:
A
1
2
3
4
5 27
6 31
7
8
9
10 14
11 18
然而,当我更改偏移(0,3)时 - 发布零数据。我创建了MsgBox(DetailedCel.Offset(0,3).Value2)来查看值是什么,但什么都不返回。我不明白为什么。
答案 0 :(得分:0)
我不确定为什么,但这在我的办公室2010上工作正常,我只在我的Office 2007套件上体验过它。很抱歉这个混乱,感谢所有查看代码的人。