Excel VBA忽略隐藏行并从单元格范围进行批量更新(仅更新Excel中已过滤的单元格)
基本上,现在下面的代码能够从我的工作表A16范围内的数据中批量更新我的数据库(函数GetUpdateTextSQL中的SQL语句更新),并在每次单元格中有内容时都进行检查,但我试图做的是只更新只有在用户使用excel(Alt+A+T)筛选时才选中的单元格中的数据忽略隐藏的单元格 我希望程序只更新用户选择过滤掉的单元格,而忽略隐藏的单元格Excel VBA忽略隐藏行并从单元格范围进行批量更新(仅更新Excel中已过滤的单元格),excel,ms-access,vba,Excel,Ms Access,Vba,基本上,现在下面的代码能够从我的工作表A16范围内的数据中批量更新我的数据库(函数GetUpdateTextSQL中的SQL语句更新),并在每次单元格中有内容时都进行检查,但我试图做的是只更新只有在用户使用excel(Alt+A+T)筛选时才选中的单元格中的数据忽略隐藏的单元格 我希望程序只更新用户选择过滤掉的单元格,而忽略隐藏的单元格 Private Sub CommandSave_Click() If MsgBox("All records will be updated. Please
Private Sub CommandSave_Click()
If MsgBox("All records will be updated. Please make sure that all records all correct! " & _
"Continue Saving?", vbYesNo) = vbNo Then Exit Sub
If WorksheetFunction.CountA(Range("B16:K5000")) = 0 Then
MsgBox "No Records to be Saved"
Else
Dim cnt As New ADODB.Connection
Dim CmdForSave As New ADODB.Command
Dim r As Range
Dim ConnectionString As String
ConnectionString = "Provider=SQLNCLI11;Server=ID222222\SQLEXPRESS;Database=Demo;Trusted_Connection=yes;"
'Opens connection to the database
cnt.ConnectionTimeout = 30
cnt.Open ConnectionString
CmdForSave.ActiveConnection = cnt
For Each r In Range("A16", Range("A16").End(xlDown))
CmdForSave.CommandText = _
GetUpdateTextSQL( _
r.Offset(0, 1).value, r.Offset(0, 2).value, _
r.Offset(0, 3).value, _
r.Offset(0, 4).value, r.Offset(0, 5).value, _
r.Offset(0, 6).value, _
r.Offset(0, 0).value)
CmdForSave.Execute
Next r
MsgBox "Data Updated Successfully"
cnt.Close
Set cnt = Nothing
End If
End Sub
像这样的
'....
For Each r In Range("A16", Range("A16").End(xlDown))
If Not r.EntireRow.Hidden Then
CmdForSave.CommandText = _
GetUpdateTextSQL( _
r.Offset(0, 1).value, r.Offset(0, 2).value, _
r.Offset(0, 3).value, _
r.Offset(0, 4).value, r.Offset(0, 5).value, _
r.Offset(0, 6).value, _
r.Offset(0, 0).value)
CmdForSave.Execute
End If
Next r
'....
如果不是r.EntireRow Hidden,则运行更新。我应该将语句放在哪里?谢谢蒂姆!就在每个r的循环中,谢谢!它工作得很好。。如果不是r.EntireRow.Hidden,只需对点进行一些编辑