Невозможно правильно получить доступ к ячейкам в таблице - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь получить последний (самый высокий номер строки) набор значений в таблице и поместить их в лист отчета.Однако, когда я наблюдаю за переменными, все значения, к которым я обращаюсь с помощью .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 голосов
/ 22 февраля 2019

Несколько советов, которые могут вам помочь:

  1. Не используйте .Select или .Activate
  2. Если вы используете IsEmpty, не забудьте использовать =True/False
  3. Когда вы используете диапазон в определенном листе, используйте With оператор
  4. Когда вы set диапазон импортируете его в оператор With, если хотите избежатьповторения или явное объявление имени листа
  5. Объявление всех ваших переменных.
  6. Использование Option Explicit вверху
  7. Если вы хотите присвоить значение переменной, используйте .Value
  8. Если вы не уверены, что выбрали правильный диапазон, воспользуйтесь непосредственным окном для двойной проверки - rngname.select
  9. Наконец, хорошей практикой является объявление как рабочей книги, так и рабочей таблицы
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...