2017-07-20 3 views
0

Grundsätzlich, für jetzt unter Code sind in der Lage, meine Datenbank (SQL-Anweisung Update in Funktion GetUpdateTextSQL) aus Daten im Bereich A16 in Mein Arbeitsblatt und zu prüfen, bis immer Inhalt in Zellen ist, aber was ich tun will, ist nur Daten von Zellen zu aktualisieren, die nur ausgewählt werden, wenn Benutzer mit Excel (Alt + A + T) filtern und versteckte Zellen ignorieren.Excel VBA ignorieren versteckte Zeile und Massenaktualisierung von Zellen Bereich (Update nur für gefilterte Zelle in Excel)

Ich möchte das Programm nur die Zellen zu aktualisieren, die von Benutzern Auswahl herausgefiltert wurden und versteckte Zellen ignorieren

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 
+0

'If Not r.EntireRow Versteckte Then' ... führe das Update aus. –

+0

wo genau sollte ich die Aussage setzen? Danke Tim! –

+0

Nur in der 'For Each r'-Schleife –

Antwort

0

So etwas wie dieses

'.... 
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 
'.... 
+0

Danke! es funktioniert einwandfrei .. Nur ein paar Bearbeitungen für dot für If Not r.EntireRow.Hidden –

Verwandte Themen