Hot News:

Unser Angebot:

  Foren auf CAD.de
  Excel
  Zugriff auf gefilterte Daten mit vb

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
Autor Thema:  Zugriff auf gefilterte Daten mit vb (5341 mal gelesen)
Axel.Strasser
Ehrenmitglied V.I.P. h.c.
Selbstständig im Bereich PLM/CAx



Sehen Sie sich das Profil von Axel.Strasser an!   Senden Sie eine Private Message an Axel.Strasser  Schreiben Sie einen Gästebucheintrag für Axel.Strasser

Beiträge: 4107
Registriert: 12.03.2001

Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!

erstellt am: 30. Nov. 2007 17:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

In einer Tabelle setze ich den Autofilter via vb. Wie kann ich jetzt am besten mit vb auf diese gefilterte Liste zugreifen. Ich will aus den gefilterten Spalten auf gewisse Zellen zugreifen.

Axel

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

runkelruebe
Moderator
Straßen- / Tiefbau




Sehen Sie sich das Profil von runkelruebe an!   Senden Sie eine Private Message an runkelruebe  Schreiben Sie einen Gästebucheintrag für runkelruebe

Beiträge: 8086
Registriert: 09.03.2006

MS-Office 365 ProPlus x86
WIN7(x64)

erstellt am: 30. Nov. 2007 22:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Axel.Strasser 10 Unities + Antwort hilfreich

Hallo Axel,
was genau meinst Du mit auf gewisse Zellen?
per vba kannst Du weiterhin auf alle Zellen zugreifen.
Die weggefilterten unterscheiden sich dabei von den angezeigten z.B. in den Range-Eigenschaften: RowHeight oder ColumnWidth
Sheets(1).Rows(1).RowHeight
[rredit] und wo Du den Filter eh schon via vba erzeugst, kannst Du auch Dein dort definiertes Kriterium hier weiter nutzen. [/rredit]
------------------
Gruß,
runkelruebe                        Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Axel.Strasser
Ehrenmitglied V.I.P. h.c.
Selbstständig im Bereich PLM/CAx



Sehen Sie sich das Profil von Axel.Strasser an!   Senden Sie eine Private Message an Axel.Strasser  Schreiben Sie einen Gästebucheintrag für Axel.Strasser

Beiträge: 4107
Registriert: 12.03.2001

Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!

erstellt am: 30. Nov. 2007 22:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Also ich habe eine Tabelle mit 1000 Zeilen. über den Autofilter (ausgeführt mit vb) bleiben nur noch 3 Zeilen angezeigt (Zeile 3, 345, 786). Jetzt brauche ich genau von diesen drei Zeilen die Werte aus der Spalte A, C, D und T und zwar in einem vb Skript umd diese dann in einer anderen Tabelle einzutragen.

Jetzt klarer ?

Axel

PS: Was ich gefunden habe wäre alles zu selektieren und in einer neuen Tabelle einzufügen

[Diese Nachricht wurde von Axel.Strasser am 30. Nov. 2007 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Thomas Harmening
Moderator
Arbeiter ツ




Sehen Sie sich das Profil von Thomas Harmening an!   Senden Sie eine Private Message an Thomas Harmening  Schreiben Sie einen Gästebucheintrag für Thomas Harmening

Beiträge: 2897
Registriert: 06.07.2001

Das Innerste geäussert
und aufs Äusserste verinnerlicht

erstellt am: 01. Dez. 2007 14:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Axel.Strasser 10 Unities + Antwort hilfreich

2 Schnippsel, gefilterte Daten im Bereich A:E nach tabelle2

Code:
Sub Filterschleife()
    Dim iCounter As Integer, iRow As Integer
    For iCounter = 2 To WorksheetFunction.CountA(Columns(1))
      If Rows(iCounter).Hidden = False Then
        iRow = iRow + 1
        targetrow = "A" & iRow & ":E" & iRow 'ziel
        copyrow = "A" & iCounter & ":E" & iCounter 'copy
        Worksheets("Tabelle2").Range(targetrow).Value = _
            Range(copyrow).Value
        End If
    Next iCounter
End Sub
Code:
Sub Filtercopy()
  Dim rng As Range
  Set rng = Range("A1").CurrentRegion _
      .SpecialCells(xlCellTypeVisible)
    rng.Copy Worksheets("Tabelle2").Range("A1")
  Worksheets("Tabelle2").Rows(1).Delete
  Worksheets("Tabelle2").Columns("U:IV").Delete
  Worksheets("Tabelle2").Columns("E:S").Delete
  Worksheets("Tabelle2").Columns("B").Delete
End Sub
HTHHope this helps (Hoffe, es hilft weiter)

[edit]habe gerade nochmal gelesen, du brauchst nur die Werte aus die Werte aus der Spalte A, C, D und T?, dann

Code:
Sub Filterschleife()
    Dim iCounter As Integer, iRow As Integer
    For iCounter = 2 To WorksheetFunction.CountA(Columns(1))
      If Rows(iCounter).Hidden = False Then
        iRow = iRow + 1
        Worksheets("Tabelle2").Cells(iRow, 1).Value = _
            Cells(iCounter, 1).Value
        Worksheets("Tabelle2").Cells(iRow, 2).Value = _
            Cells(iCounter, 3).Value
        Worksheets("Tabelle2").Cells(iRow, 3).Value = _
            Cells(iCounter, 4).Value
        Worksheets("Tabelle2").Cells(iRow, 4).Value = _
            Cells(iCounter, 20).Value
        End If
    Next iCounter
End Sub

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Axel.Strasser
Ehrenmitglied V.I.P. h.c.
Selbstständig im Bereich PLM/CAx



Sehen Sie sich das Profil von Axel.Strasser an!   Senden Sie eine Private Message an Axel.Strasser  Schreiben Sie einen Gästebucheintrag für Axel.Strasser

Beiträge: 4107
Registriert: 12.03.2001

Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!

erstellt am: 01. Dez. 2007 16:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke für Deine Schnippsel,

Ich hatte mich heute Morgen im Halbschlaf  entschlossen es über eine temporäre Tabelle zu machen. Ich denke mal die Performance wird besser, wenn ich bis zu 50'000 Zeilen habe und durch die Filter die auf 10 zusammen gestaucht werden, geht das wahrscheinlich schneller als 50'000 mal abzufragen, bist du hidden oder nicht, aber ich werde mal Deinen Filtercopy versuchen.

Code:
    With Workbooks(XlsFileName)
        .Sheets.Add Before:=Worksheets(1)
        .ActiveSheet.Name = "tmp"
        LastRow = .Sheets("InputData").Cells(Rows.Count, 2).End(xlUp).Row
        .Sheets("InputData").Range("A2:T" & LastRow).Copy
        .Sheets("tmp").Range("A1").PasteSpecial Paste:=xlPasteValues
       
        LastRow = .Sheets("tmp").Cells(Rows.Count, 2).End(xlUp).Row
        For i = 1 To LastRow
            .Sheets("Tool").Cells(i + 19, 1).Value = .Sheets("tmp").Cells(i, 3).Value
            .Sheets("Tool").Cells(i + 19, 2).Value = .Sheets("tmp").Cells(i, 2).Value
            .Sheets("Tool").Cells(i + 19, 3).Value = .Sheets("tmp").Cells(i, 5).Value
            .Sheets("Tool").Cells(i + 19, 4).Value = .Sheets("tmp").Cells(i, 6).Value
        .Sheets("Tool").Cells(i + 19, 8).Value = .Sheets("tmp").Cells(i, 7).Value * .Sheets("tmp").Cells(i, 13).Value
            .Sheets("Tool").Cells(i + 19, 11).Value = .Sheets("tmp").Cells(i, 18).Value
        Next
       
        Application.DisplayAlerts = False
        .Sheets("tmp").Delete
        Application.DisplayAlerts = True

Axel

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz