Диапазон (). Клетки (). Ряд - PullRequest
0 голосов
/ 23 ноября 2018

Я был обеспокоен следующим кодом

Dim xTRrow as Integer
Dim xTitle as String
Dim xSht as Worksheet
xTRrow = xSht.Range(xTitle).Cells(1).Row

Интересно, что делает последняя строка.Особенно, .Row.В таком случае, как я могу запускать код VBA построчно, чтобы узнать, что делает конкретная строка кода?Я думаю, что-то не так с кодом.Я пытался отобразить xTRrow, которое должно быть целым числом.Но на экране ничего не прыгает.Интересно, что делает последний вариант .Row.

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Row Trouble

Описание

Переменная ' xTRrow ' равна ' строке ' для ' 1 'st' ячейка 'из диапазона * ' xTitle 'на листе' xSht '.Вы можете заставить его работать, определив отсутствующие данные.

Код

Option Explicit

Sub RowTrouble()

  Dim xSht As Worksheet  ' A Worksheet
  Dim xTitle As String   ' A Range Address (or a Named Range)
  Dim xTRrow As Long     ' A Row - rows are best declared as Long.

'  ' Your code (not yet working)
'  xTRrow = xSht.Range(xTitle).Cells(1).Row

  ' Define the range
  xTitle = "A1:D1"

  ' Create a reference to the worksheet with the name "Sheet1"
  Set xSht = ThisWorkbook.Worksheets("Sheet1")

  ' Your code working
  xTRrow = xSht.Range(xTitle).Cells(1).Row

  ' To display the result in the immediate window
  Debug.Print "The first row in my workbook's range (" & xTitle _
      & ") is equal to " & xTRrow & "."

  ' To display the result in a message box:
  MsgBox "The first row in my workbook's range (" & xTitle _
      & ") is equal to " & xTRrow & "."

  ' To display the result in the sheet:
  xSht.Range("A1") = "The first row in my workbook's range (" & xTitle _
      & ") is equal to " & xTRrow & "."

End Sub

Как

Откройте новый лист.Перейдите в редактор Visual Basic и вставьте новый модуль в лист.Скопируйте / вставьте пример в него.Откройте окно немедленное , чтобы увидеть результат.Запустите код.

Строка за строкой

Слишком большой цикл кода по строке под строкой Отладка выберите Step Into или просто используйте ' F8 ':

enter image description here

0 голосов
/ 23 ноября 2018

Помимо использования F8 для пошагового выполнения кода, вы можете использовать debug.print для отображения значений соответствующих переменных до и после заданной строки.Тем не менее, когда вы используете VBA, вы сможете распознать, что такое объект и метод.Предполагая, что код работает нормально, и все переменные и объекты были затемнены и установлены правильно:

xSht.Range(xTitle).Cells(1).Row

разбить следующим образом:

xSht: переменная, содержащая лист (какой лист мы нене знаю, так как эта часть вашего кода отсутствует в вашем вопросе)

xTitle: вероятно, имя named range (какой диапазон мы не знаем, так как эта часть вашего кода отсутствует в вашемвопрос)

Cells(1): № ячейки;1 из упомянутого выше названного диапазона

Row: строка рассматриваемой ячейки

Таким образом, xTRrow должен быть номером строки рассматриваемой ячейки.(Кстати, это действительно должно быть Dim med как Long, поскольку в Excel может быть больше строк, чем Integer позволяет

...