Excel / VBA – Пользовательская форма, переписывающая существующие данные

Я написал пользовательскую форму для сотрудников, чтобы вводить данные о конфискованных предметах, распечатывать копии указанной формы и сохранять все введенные данные.

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

Теперь – любые данные, вводимые в форму, перезаписывают предыдущие строки. Каждый новый вход перезаписывает другую строку выше (старше). Я использую следующие строки, чтобы найти следующую пустую строку и ввести данные на рабочий лист. Он записывал 5 строк одних и тех же данных, так как следующий код был написан 5 раз подряд.

Я не вижу, где ошибка – или понять, как удалять строки на листе будет иметь эффект или изменить код в пользовательской форме?

' WRITE DATA TO SPREADSHEET emptyRow = WorksheetFunction.CountA(Range("F:F")) + 1 RowCount = Worksheets("Sheet1").Range("A2").CurrentRegion.Rows.Count With Worksheets("Sheet1").Range("A2") .Offset(emptyRow, 0).Value = Me.txtSurname.Value .Offset(emptyRow, 1).Value = Me.numCRN.Value .Offset(emptyRow, 2).Value = Me.cboUnit.Value .Offset(emptyRow, 3).Value = DateValue(Me.txtDateConf.Value) .Offset(emptyRow, 4).Value = Me.numBoxnum.Value .Offset(emptyRow, 5).Value = Me.txtItem6.Value .Offset(emptyRow, 6).Value = Me.txtItemDesc6.Value .Offset(emptyRow, 7).Value = Me.numQTY6.Value .Offset(emptyRow, 8).Value = Me.cboCondition6.Value .Offset(emptyRow, 9).Value = Me.cboReason6.Value If Me.chkHistCheck6.Value = True Then .Offset(emptyRow, 10).Value = "Yes" Else .Offset(emptyRow, 10).Value = "No" End If If Me.chkHistCheck6.Value = "" Then .Offset(emptyRow, 10).Value = "No" End If .Offset(emptyRow, 11).Value = Format(Now, "dd/mm/yyyy hh:nn:ss") End With 

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

Рабочий лист, который был написан, был в 1400 строк, с 2 годами ввода данных. Обнаружено, что если мы просто архивируем (вырезаем и вставляем), чтобы все в новый файл, форма и рабочий лист выполнялись безупречно снова.

Конечно, кто-то здесь задумался бы через несколько секунд, глядя на весь файл, но поделившись данными или вечером весь код был не-нет. Спасибо за ваше время.

  • Экран Userform и Worksheet работает в Excel 2010, но не в Excel 2016
  • Пользовательские формы для установки нескольких критериев фильтра
  • Увеличение значения текстового поля на единицу
  • Чтение значений объектов пользовательской формы
  • Передача результата пользовательской формы в переменную кода vba
  • Помощь VBA Excel в управлении пользовательской формой refedit
  • Расположите две пользовательские формы без пробелов между ними
  • Закройте форму пользователя клавишами со стрелками и откройте новую
  • Внешний вид Windows Forms
  • Динамический флажок выбрать все
  • Ошибка передачи массива в список в качестве параметра
  • Interesting Posts

    Как добавить рабочий лист после всех существующих рабочих листов Excel?

    Как создать гиперссылку на другой лист Excel в той же книге

    VB.Net – приложение Excel показывает значения диапазона

    Попытка вытащить данные из API в Excel по ссылке на строку, которую я набираю в ячейке

    Прочитать файл Excel, содержащий несколько значений в одном столбце -Java

    Защита кода модуля Excel (.dll?)

    Ссылка на глобальный именованный диапазон без ссылки на рабочий лист

    Как выделить ячейку в Excel с помощью условного if?

    Ошибка: неподдерживаемый формат или поврежденный файл: ожидаемая запись в BOF

    Попытка скопировать формулу по всему столбцу в последнюю строку данных в соседнем столбце

    Извлеките все числа после символа

    Сохранение файла excel вызывает ошибку в окнах c #

    Excel VBA: списки конкатенаций с различным количеством строк

    добавить текстовую строку слева от всех ячеек столбца в excel 2002?

    В Wix, Как получить подстроку значения ключа реестра в свойстве?

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