Правильное количество строк, не копирующих

Я стучу головой о стену, пытаясь понять, почему моя копия не выстраивается. Я думал, что индекс правильно разобрался, но я все еще ничего не вижу. Это правильно для первого случая данных, но затем отключается на один для второго, а второй для третьего. Первоначально это были две и четыре строки, но я понял, что мне нужно обновить счетчик, независимо от того, какое утверждение истинно.

Мой следующий код:

Dim FirstItem As Integer Dim SecondItem As Integer Dim Offsetcount As Integer Dim Rowoffset As Integer Dim true_offset As Integer Dim myNum As Integer Sheets("Sheet2").Activate ActiveSheet.Range("C2").Select FirstItem = ActiveCell.Value SecondItem = ActiveCell.Offset(1, 0).Value Offsetcount = 1 Rowoffset = 0 true_offset = 1 myNum = (Range("C" & Rows.Count).End(xlUp).Row) 'MsgBox myNum Do While myNum > 1 true_offset = true_offset + 1 If FirstItem = SecondItem Then Offsetcount = Offsetcount + 1 Rowoffset = Rowoffset + 1 SecondItem = ActiveCell.Offset(Offsetcount, 0).Value Else Set myactivecell = ActiveCell Set myActiveWorksheet = ActiveSheet 'Do I need to declare this and the line below? Set myActiveWorkbook = ActiveWorkbook ActiveSheet.Range(ActiveSheet.Cells(true_offset - Rowoffset, 1), ActiveSheet.Cells(true_offset + 1, 1)).EntireRow.Select Selection.Copy Set new_workbook = Workbooks.Add ActiveSheet.Paste myActiveWorkbook.Activate myActiveWorksheet.Activate myactivecell.Activate ActiveCell.Offset(Offsetcount + 1, 0).Select If ActiveCell.Value = "" Then myNum = 0 End If FirstItem = ActiveCell.Value SecondItem = ActiveCell.Offset(1, 0).Value Offsetcount = 1 myNum = myNum - 1 Rowoffset = 0 End If Loop 

Вот пример экрана некоторых выборочных данных:

http://img.msexcelonline.com/excel/EsA3B.png

Хорошо, я скажу вам быстрое исправление для вашего текущего кода. Удалите +1 из этого утверждения:

 ActiveCell.Offset(Offsetcount + 1, 0).Select ' ^^^^ 

Тем не менее, вашему коду действительно нужен полный рефакторинг. Вы жалуетесь, что «ударились головой о стену», но это нормальный результат, когда вы не соблюдаете правила хорошей практики программирования.

  • Не программируйте, «подражая» графическому интерфейсу, отбрасывайте элементы выбора / активирования
  • Удалите все переменные без исключения и используйте Option Explicit
  • У вас слишком много переменных в коде, многие из них, похоже, отслеживают одно и то же.

Надеюсь, это поможет.

Interesting Posts

Excel VBA для очистки выбранных строк

Может ли Excel найти строку и столбец, используя значения ячеек в качестве ссылки?

Преобразование класса данных из класса «Фактор» в «TS»

Сумма POI Apache не оценивается

выберите определенный слайд из презентации ppt и вставьте таблицу excel

доступ к excel как базе данных с помощью jdbc

Выполнить код на именах Col вместо заголовка Col

Классический код asp для экспорта данных из базы данных Access в лист Excel

На веб-странице asp.net дублируется при записи в файл excel

Crystal Reports 8.5: Экспорт в Excel приводит к исчезновению десятичных знаков

Excel VBA Для каждого листа получают содержимое строки и помещают в массив

Захват использования электронных таблиц в компании

Excel: CountIf (cell1> cell2 И cell3> cell4)

Выполняя исполняемый файл jar (java-код), я получаю java.lang.reflect.InvocationTargetException

Excel 2007 – Создать уникальный идентификатор на основе текста?

Давайте будем гением компьютера.