Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
908to912
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
908to912
908to912
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Falsche Reihenfolge

Falsche Reihenfolge
21.09.2007 18:49:00
zico
Hallo,
ich habe in einer Datei mehrere Tabellen mit QueryTables.
Nach der Aktualisierung müssen noch ein paar Formeln automatisch ausgefüllt werden.
Unten stehender 'Code' funktioniert einwandfrei, wenn ich im Einzelschritt durchgehe.
Führe ich aber den gesamten Code aus, werden die Formeln bereits nach Aktualisierung des 1. Querys
automatisch ausgefüllt, und erst anschließend werden die restlichen Querys aktualisiert.
Natürlich könnte ich die Tabellenblätter einzeln aufrufen und abarbeiten, aber es müsste eigentlich doch auch so funktionieren.
Was muss ich ändern?
Danke im voraus!
Zico

Sub QueryTables_aktualisieren()
'Anmeldedaten aus Sheet Übersicht holen
Sheets("Übersicht").Select
'User ,Passwort und Datenbank übernehmen
User = [b1]
PW = [b2]
DB = [b3]
' ODBC Connection herstellen
ODBC = "ODBC;DRIVER={Microsoft ODBC for Oracle};UID=" & User & ";Pwd=" & PW & ";SERVER=" &   _
_
DB & ";"
' Tabellen aktualisieren
Dim Blatt As Worksheet
For Each Blatt In ActiveWorkbook.Worksheets
If Blatt.Name  "Übersicht" Then
If Blatt.Name  "Bestandsziel" Then
On Error Resume Next
Blatt.QueryTables.Item(1).Connection = ODBC
Blatt.QueryTables.Item(1).Refresh
'Bei mehreren Abfragen auf einem Tabellenblatt aktivieren
Blatt.QueryTables.Item(2).Connection = ODBC
Blatt.QueryTables.Item(2).Refresh
On Error GoTo 0
End If
End If
Next Blatt
Sheets("Lager700").Select
Range("B3:E3").Select
Selection.AutoFill Destination:=Range("B3:E35"), Type:=xlFillDefault
Range("B3:E35").Select
Range("B3").Select
Sheets("Übersicht").Select
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Falsche Reihenfolge
21.09.2007 20:30:43
Renee
Hi Zico,
Ich hab deinen Code mal überarbeitet:

Sub QueryTables_aktualisieren()
Dim Blatt As Worksheet
Dim qrt As QueryTable
Dim sUser As String
Dim sPW As String
Dim sDb As String
Dim sODBC As String
'Anmeldedaten aus Sheet Übersicht holen
'User ,Passwort und Datenbank übernehmen
sUser = Sheets("Übersicht").Cells(1, 2)
sPW = Sheets("Übersicht").Cells(2, 2)
sDb = Sheets("Übersicht").Cells(3, 2)
' ODBC Connection herstellen
sODBC = "ODBC;DRIVER={Microsoft ODBC for Oracle};UID=" & _
sUser & ";Pwd=" & sPW & ";SERVER=" & sDb & ";"
' Tabellen aktualisieren
For Each Blatt In ActiveWorkbook.Worksheets
If Not (Blatt.Name = "Übersicht" Or _
Blatt.Name = "Bestandsziel") Then
For Each qrt In Blatt.QueryTables
qrt.Connection = sODBC
qrt.Refresh BackgroundQuery:=False
Next
End If
Next
Sheets("Lager700").Select
Range("B3:E3").Select
Selection.AutoFill Destination:=Range("B3:E35"), Type:=xlFillDefault
Sheets("Übersicht").Select
End Sub


Ich bin aber nicht ganz sicher, ob das dein Problem behebt. Wenn nämlich die Eigenschaft .FillAdjacentFormulas in den Queries auf WAHR gesetzt ist, werden an die Datensätze angrenzende Formeln automatisch ausgefüllt und es bräuchte den letzten Teil mit dem .Autofill gar nicht, sofern es sich dort um solche Formeln handelt.
GreetZ Renee

Anzeige
AW: Falsche Reihenfolge
21.09.2007 20:46:00
zico
Hi Renee,
funktioniert leider auch nicht besser.
Den Autofill brauche ich, da die Abfragen nicht immer gleich viele Zeilen zurückgeben.
Dann verschieben sich in der letzte Zeile die Formeln und es kommt ein #BEZUG Fehler.
Trotzdem Danke für den überarbeiteten Code.
Zico

AW: Falsche Reihenfolge
21.09.2007 21:15:11
Renee
Hallo Zico,
Fragen:
Grenzen die Formeln ab B3 an die Datensätze an ?
Ist die Eigenschaft "angrenzende Formeln auffüllen" o.ä. gesetzt ?
Wenn beides mit Ja beantwortet, könnte das gehen:

Sub QueryTables_aktualisieren()
Dim Blatt As Worksheet
Dim qrt As QueryTable
Dim sUser As String
Dim sPW As String
Dim sDb As String
Dim sODBC As String
'Anmeldedaten aus Sheet Übersicht holen
'User ,Passwort und Datenbank übernehmen
sUser = Sheets("Übersicht").Cells(1, 2)
sPW = Sheets("Übersicht").Cells(2, 2)
sDb = Sheets("Übersicht").Cells(3, 2)
' ODBC Connection herstellen
sODBC = "ODBC;DRIVER={Microsoft ODBC for Oracle};UID=" & _
sUser & ";Pwd=" & sPW & ";SERVER=" & sDb & ";"
' Tabellen aktualisieren
Sheets("Lager700").Range("B4:E500").ClearContents
For Each Blatt In ActiveWorkbook.Worksheets
If Not (Blatt.Name = "Übersicht" Or _
Blatt.Name = "Bestandsziel") Then
For Each qrt In Blatt.QueryTables
qrt.Connection = sODBC
qrt.Refresh BackgroundQuery:=False
Next
End If
Next
End Sub


GreetZ Renee

Anzeige
AW: Falsche Reihenfolge
21.09.2007 21:43:31
zico
Hi Renee,
"angrenzende Formeln ausfüllen" habe ich jetzt auf ja gesetzt.
Die Formeln werden jetzt korrekt berechnet.
So wäre dieser Fall gelöst, aber es müsste doch trotz allem eine Lösung geben, daß zuerst alle Refreshs laufen und dann der Rest vom Code.
Ich habe jetzt mal zum Test am Ende eine MsgBox "Aktualisierung beendet"angehangen, da passiert nämlich das gleiche. 1. Abfrage wird durchgeführt, dann erscheint die MsgBox und erst wenn ich diese bestätige wird der Rest aktualisiert.
Vielen Dank für deine Mühe!
Zico

erledigt. owT
22.09.2007 19:53:00
Renee

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige