Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA忽略隐藏行并从单元格范围进行批量更新(仅更新Excel中已过滤的单元格)_Excel_Ms Access_Vba - Fatal编程技术网

Excel VBA忽略隐藏行并从单元格范围进行批量更新(仅更新Excel中已过滤的单元格)

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

基本上,现在下面的代码能够从我的工作表A16范围内的数据中批量更新我的数据库(函数GetUpdateTextSQL中的SQL语句更新),并在每次单元格中有内容时都进行检查,但我试图做的是只更新只有在用户使用excel(Alt+A+T)筛选时才选中的单元格中的数据忽略隐藏的单元格

我希望程序只更新用户选择过滤掉的单元格,而忽略隐藏的单元格

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,只需对点进行一些编辑