VBA Makro programmierung

Hallo zusammen,
ich bin ziemlich neu hier und benutze diese Seite zum ersten Mal, ich brauche bißchen Hilfe beim VBA Programmieren,da ich schon mal in C,C++ programmiert habe,ich wusste eigentlich nicht dass man so viel in Excel Tabellen programmieren kann mit Hilfe von Makros,bißchen Übung zeigt dass die VBA programmiersprache nicht so schwer ist(so war mein Eindruck),also meine Frage,wäre es möglich einen Filter zu erstellen der zur Filtern bzw. Auswerten von Daten in einer Excel Tabbele dient? Wenn ja bekomme ich paar Hinweise!?

Danke.

Grungy

Hallo,

ich bin ziemlich neu hier und benutze diese Seite zum ersten
Mal,

dann erst mal: Herzlich willkommen!

ich brauche bißchen Hilfe beim VBA Programmieren,da ich
schon mal in C,C++ programmiert habe,ich wusste eigentlich
nicht dass man so viel in Excel Tabellen programmieren kann
mit Hilfe von Makros,bißchen Übung zeigt dass die VBA
programmiersprache nicht so schwer ist(so war mein
Eindruck)

Der Eindruck war richtig, VBA ist viel leichter als C/C++. Was Dir dabei schwer fallen wird, VBA ist nicht objektorientiert.

,also meine Frage,wäre es möglich einen Filter zu
erstellen der zur Filtern bzw. Auswerten von Daten in einer
Excel Tabbele dient? Wenn ja bekomme ich paar Hinweise!?

Klar, nur wird Dir jetzt sicher Niemand ein komplettes Tutorial hier posten. Etwas konkreter sollte Deine Frage schon sein. Sieh bis dahin schon mal in die FAQ, die wird Dir beim Einstieg sicher helfen. Oder denk Dir zum Einstieg eine einfache Aufgabe aus, versuche die zu lösen, dann kannst Du konkrete Fragen dazu stellen.

Gruß Rainer

Eindruck),also meine Frage,wäre es möglich einen Filter zu
erstellen der zur Filtern bzw. Auswerten von Daten in einer
Excel Tabbele dient? Wenn ja bekomme ich paar Hinweise!?

Hi Grungy,

normalerweise werden Filter in Excel dazu benutzt, daß du eine Riesenkundenliste hast und du benutzt einen Filter um nur die Kunden aus München zu sehen, alle anderen Kunden bzw. deren zeilen werden ausgeblendet.

Dazu gibt es in Excel eingebaut den Autofilter und den Spezialfilter. Mit dem Spezialfilter kannst du auch feiner filtern, also nur alle Kunden anzeigen die in in München wohnen, bei dir einen Umsatz über 10 Millionen machen und die Kundin ist weiblich und ledig *schwer hüstel* :smile:

Das ist zigfach, manche sprechen von 10.000 mal, schneller als wenn du das in Vba probierst alle Zeilen/Zellen abzuklappern usw.

Bei diesen Excel Filter Funktionen bist du halt nicht völlig frei in deinen Filterbedingungen. Wenn es was Spezielles sein muß bleibt nur Vba.

Und, wie schon von Rainer richtig nachgefragt, welchen Zellenbereich willst du aufgrund welcher Bedingungen wie filtern und soll das Filterergebnis, also die zutreffenden Zeilen dadurch sichtbar sein, daß alle anderen Zeilen ausgeblendet werden oder sollen sie in einem neuen Blatt erscheinen odr was soll da geschehen ?

Gruß
Reinhard

Hallo,
danke für die Tipps,ich habe eigentlich recherchiert und habe auch ein konkretes Beispiel betrachtet,eigentlich was ich im Exel programmieren will ist ziemlich komplizierter als den zur Verfügung gestellte Filter,das Programm soll Daten aus einem zentralen Datenbank
holen (ich muss die verknüpfung erstellen die diesen Datenanruf ermöglicht)die werden nachher in Exceltabellen umgewandelt,und dieses Makro das ich jetzt bauen will sollte die Möglichkeit anbieten nach Eingabe von bestimmten Kritierien für ein Produkt"X" die entsprechenden Informationen dazu zeigen ,dass man die bearbeiten kann,ich rede von einer riesen Datenbank,die sich außer diese Möglichkeit ganz schwer zu bedienen lässt,also die gezielte Informationen per Hand zu holen ist total ungünstig.
über noch paar Hinweise werde ich mich freuen.
Grüße.

Grungy

über noch paar Hinweise werde ich mich freuen.

Hi Grungy,

wir auch.

Gruß
Reinhard

HI,
mmh,es scheint gar nicht einfach dieses makro zu bauen,es liegt eigentlich daran dass ich keinen Zugriff auf der zentrallen Datenbank habe,eigentlich brauche ich das nicht,ich will nur eine Kopie von diesen Daten,ich glaube so was kann man anhand einen Rekordset in Access machen das über ein ODBC verknüpft ist und damit den entsprechenden Server.
meine Frage ist ob jemand schon mal sowas gemacht hat der mich vielleicht weiter helfen kann oder den günstigen Weg mir zu zeigen,ich arbeite daran schon seit paar Wochen.
Danke.

Grüße.

Grungy.

Hi,

mmh,es scheint gar nicht einfach dieses makro zu bauen,es
liegt eigentlich daran dass ich keinen Zugriff auf der
zentrallen Datenbank habe,eigentlich brauche ich das nicht,ich
will nur eine Kopie von diesen Daten,ich glaube so was kann
man anhand einen Rekordset in Access machen das über ein ODBC
verknüpft ist und damit den entsprechenden Server.
meine Frage ist ob jemand schon mal sowas gemacht hat der mich
vielleicht weiter helfen kann oder den günstigen Weg mir zu
zeigen,ich arbeite daran schon seit paar Wochen.

ein Beispielcode, wie ich auf eine Tabelle in einer Access Datenbank zugreife. Wenn Deine Datenbank nicht Access ist, musst Du den Code entsprechend anpassen.

Im Beispiel übergebe ich das Recordset an ein Steuerelement und die Daten werden angezeigt. Danach schließe ich das Recordset wieder.
Wenn Du mit dem Recordset arbeiten willst, darfst Du es natürlich erst am Ende wieder schließen.

Aber Du schreibst:
‚es liegt eigentlich daran dass ich keinen Zugriff auf der zentrallen Datenbank habe‘

Den Zugriff brauchst Du natürlich. Wenn Du keine Rechte hast, die Datenbank zu lesen, wird Dir der Code nicht helfen.

Gruß Rainer

Dim strSQL As String
Dim objRS As ADODB.Recordset
Dim objConnection As ADODB.Connection

Private Sub Command1\_Click()
 Lesen
End Sub

Private Sub Lesen()
 Dim DB As String
 DB = "C:\Datenbank.mdb"
 strSQL = "SELECT \* FROM Tabelle;"
 Set objConnection = New ADODB.Connection

 With objConnection
 .CursorLocation = adUseClient
 .Mode = adModeShareDenyNone
 .Provider = "Microsoft.Jet.OLEDB.4.0"
 .ConnectionString = DB
 .Open
 End With

 Set objRS = New ADODB.Recordset
 With objRS
 Set .ActiveConnection = objConnection
 .CursorLocation = adUseClient
 .CursorType = adOpenStatic
 .LockType = adLockOptimistic
 .Source = strSQL
 Call .Open
 End With

 Set Adodc1.Recordset = objRS '

Hallo,
vielen dank noch mal für die Ünterstützung,die Sache mit dem Zugriff auf der Datenbank ist so dass ich eigentlich das leserecht habe aber wenn ich gefragt habe (da wo ich jetzt mein Praxissemester mache)keiner könnte mir weiter helfen oder was konkretes sachen,es gibt keinen Server der den direkten zugriff ermöglicht,{oder gibts nicht mehr},brauch ich nicht unbedingt,ich kann die Daten lesen wenn ich die normalerweise mit Cognos und Impromptu öffne,aber da sind die nur einzelne Fälle,ich will aber das ich mit dem aktuellen Zustand arbeite und zwar das es mir nach meiner suchkriterium den entsprechneden Infos gezeigt werden was ich bis jetzt zu Fuss mache,das war der Grund warum ich an einen Recordset gedacht habe, der immer eine aktuelle Kopie macht das ich abrufen kann um die Daten am Ende in Excel zur Verfügung zu stellen.
ich glaub das theoretisch sollte gehen,oder-?!
Gruß.

Grungy

Hallo,

das war der Grund warum ich an einen Recordset gedacht
habe, der immer eine aktuelle Kopie macht das ich abrufen kann
um die Daten am Ende in Excel zur Verfügung zu stellen.
ich glaub das theoretisch sollte gehen,oder-?!

das Rekordset ist keine Kopie sondern zeigt den Inhalt der Tabellen ganz oder teilweise an, ja nachdem, wie Deine Abfrage aussieht. Wenn Du Schreibrechte hast, kannst Du damit auch in die Tabellen schreiben.

Natürlich kannst Du die Inhalte als Kopie auch in eine Excel-Tabelle eintragen, wie hat ja Reinhard geschrieben.

Du hast ja Leserechte, dann funktioniert das so. Hast Du den Code schon mal kopiert, Deine Pfade und Tabellennamen eingetragen und getestet?

Gruß Rainer