У меня есть рабочий лист, который подключается к базе данных SQL с помощью Ado и загружает содержимое базы данных в лист Excel. У меня эта часть работает хорошо. Теперь я хочу проверить, изменяется ли ячейка после вставки данных. Вот мой код в Worksheeet_Change до сих пор.
Private Sub Worksheet_Change(ByVal Target As range)
Dim KeyCells As range
Set KeyCells = range("Table:Environment")
If Not Application.Intersect(KeyCells, range(Target.Address)) _
Is Nothing Then
range("CleanHeaders").ClearContents
range("CleanDates").ClearContents
Call SQL_Connect.connect
Call Data_Download.header_download
Call Data_Download.download_data
Call SQL_Connect.close_connection
End If
Dim DataRng As range, roww As Long
Dim rng As range
Set DataRng = Intersect(range("DataStart:Z10000"), Target)
If Not DataRng Is Nothing Then
For Each rng In DataRng
roww = rng.Row
If Not rng.Value = " " Then
Cells(roww, "AA").Value = "1"
Else
Cells(roww, "AA").Value = "0"
End If
Next
End If
On Error GoTo 0
End Sub
Чтобы дать вам быстрое объяснение, вот что происходит в коде. Первая часть посвящена конкретному блоку на листе. Когда он изменяется, он вызывает соединение, загружает заголовки и данные, а затем закрывает соединение. Как я уже сказал, эта часть работает нормально, и у меня нет проблем с этим. Следующая часть - моя попытка проверить наличие изменений в этих ячейках. Проблема в том, что каждый раз, когда я очищаю таблицу или загружаю в нее новые данные, она думает, что это изменение, и ставит единицы во все строки. Я хочу обнаружить эти изменения ПОСЛЕ того, как данные были загружены на лист. Как мне исправить это, чтобы правильно добиться этого? Заранее спасибо!