У меня есть отчет, который я извлекаю непосредственно из нашей базы данных (Query), но он содержит больше информации, чем необходимо (элементы без значений), поэтому я добавил подпрограмму для удаления лишних строк. Подпрограмма, похоже, отлично работает, чтобы исправить пустые строки. Затем у меня есть другая подпрограмма, которая копирует возвращаемые значения и помещает их ниже на другой лист, где уже размещен заголовок, а затем другой, чтобы добавить блок подписи внизу. Когда все это будет завершено, пользователь сделает копию этого листа и переименует его в течение месяца и года, к которому он относится. Это был бы законченный и простой процесс, но ...Когда я обновляю свои данные, он меняет результаты моего Sub
Проблема в том, что когда данные рабочей книги обновляются, чтобы создать новый отчет, все предыдущие копии отформатированных и готовых отчетов внезапно включают строки, которые были удален. Я не понимаю, как удаленные строки возвращаются к отчетам на разных листах, но вот VBA, которые я использую для этого. (С тех пор я установил это для автоматического запуска при обновлении данных, но получаю тот же результат)
Надеюсь, кто-то может помочь, спасибо за любую помощь заранее.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim wb1 As Workbook
Dim lr As Long, i As Long
Set wb1 = ActiveWorkbook
With wb1.Sheets("DATA SHEET")
lr = Application.Max(.Cells(Rows.Count, 4).End(xlUp).Row, _
.Cells(Rows.Count, 6).End(xlUp).Row)
For i = lr To 1 Step -1
If .Cells(i, 4).Value = 0 And _
.Cells(i, 5).Value = 0 And _
.Cells(i, 7).Value = 0 And _
.Cells(i, 8).Value = 0 And _
.Cells(i, 9).Value = 0 And _
.Cells(i, 10).Value = 0 Then
.Rows(i).EntireRow.Delete
End If
Next i
End With
End Sub
Вот VBA, чтобы скопировать данные, которые были только записью Макро. Мне нужно сохранить форматирование, но не видел, как передавать значения и форматировать только.
Sub CopyToTemplate()
'
' CopyToTemplate Macro
'
'
Rows("3:100").Select
Selection.Copy
Sheets("SAVE TEMPLATE").Select
Range("A7").Select
ActiveSheet.Paste
End Sub
Не могли бы вы указать свой код для запроса базы данных и для копирования из базовых данных в отформатированный отчет? Эта проблема более вероятна в одном из них или взаимодействии между ними. –
Это код для передачи данных на второй странице Sub CopyToTemplate() ' ' CopyToTemplate Макро ' ' Ряды ("3: 100") Выбрать Selection.Copy Sheets ("SAVE ШАБЛОН".) .Выберите Диапазон («A7»). Выберите ActiveSheet.Paste End Sub –
Пожалуйста, отредактируйте дополнительную информацию в сообщение вопроса. Вы, скорее всего, получите полезные ответы, тем легче вы сделаете это для людей, чтобы понять вашу проблему и ее контекст. –