Excel VBA .Offset(0,3)。值不返回值

时间:2016-02-18 19:42:05

标签: excel vba excel-vba

我在这里完全失败了。我的编码允许我在选择偏移(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)来查看值是什么,但什么都不返回。我不明白为什么。

1 个答案:

答案 0 :(得分:0)

我不确定为什么,但这在我的办公室2010上工作正常,我只在我的Office 2007套件上体验过它。很抱歉这个混乱,感谢所有查看代码的人。