无法正确访问表中的单元格

时间:2019-02-22 13:06:08

标签: excel vba

我正在尝试检索表中的最后一组(最高行号)值,并将其放入报表中。但是,当我观察变量时,我使用.Offset()访问的所有值都为空。任何帮助表示赞赏。

Sub Create_Report()
Dim cel As Range
Dim celTable As Range
Dim selectedRange As Range
Dim selectedRangeTable As Range
Set selectedRange = Range("B6:B17")
Set selectedRangeTable = Range("A:A")

Sheets("Report").Select
For Each cel In selectedRange.Cells
    WellName = cel.Text
    Sheets(WellName & " Table").Select
    For Each celTable In selectedRangeTable.Cells
        If IsEmpty(celTable.Offset(1, 0)) Then
            IPDate = Range("AF2")
            DaysOnline = Date - IPDate
            NRI = Range("AD2")
            Bench = Range("AG2")
            NBOED = celTable.Offset(0, 11)
            BOPD = celTable.Offset(0, 14)
            MCFD = celTable.Offset(0, 12)
            BWPD = celTable.Offset(0, 16)
            CurrentTubing = celTable.Offset(0, 21)
            LastTest = celTable.Offset(0, 2)
            Exit For
        End If
    Next celTable

    cel.Offset(0, 1) = IPDate
    cel.Offset(0, 2) = DaysOnline
    cel.Offset(0, 3) = NRI
    cel.Offset(0, 4) = Bench
    cel.Offset(0, 5) = NBOED
    cel.Offset(0, 6) = BOPD
    cel.Offset(0, 7) = MCFD
    cel.Offset(0, 8) = CurrentTubing
    cel.Offset(0, 9) = LastTest
    If IsEmpty(cel.Offset(1, 0)) Then Exit For
Next cel

End Sub

1 个答案:

答案 0 :(得分:0)

一些提示可能会帮助您:

  1. 请勿使用.Select.Activate
  2. 如果您使用IsEmpty,请不要忘记使用=True/False
  3. 在特定工作表中使用范围时,请使用With语句
  4. 如果您想避免重复或明确声明工作表名称,则在set范围内将其导入With语句中
  5. 声明所有变量。
  6. 在顶部使用Option Explicit
  7. 如果要为变量分配值,请使用.Value
  8. 如果不确定是否选择了正确的范围,请使用即时窗口仔细检查-rngname.select
  9. 最好同时声明工作簿和工作表