Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1440to1444
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
Inhaltsverzeichnis

Tabelle mit VBA öffnen, Spaltenabgleich & löschen

Tabelle mit VBA öffnen, Spaltenabgleich & löschen
07.08.2015 12:48:20
benny
Hallo,
ich habe ein kleines Problem. Ich habe eine Userform in eine Excel hinterlegt (siehe Code unten). Sinn dahinter ist, dass ich mit dieser Userform über die Eingabe des Pfades in Textbox1 eine andere Excel datei öffne, welche dann weiterbearbeitet werden soll, indem der Zelleninhalt einer Spalte nach einem bestimmten Wert (hier "Hallo") durchsucht wird und wenn dieser vorhanden ist, soll die gesamte Zeile gelöscht werden. Aber irgendwie steh ich nach langem Überlegen jetzt in einer Sackgasse. Vielleicht kann mir jemand von euch weiterhelfen.
Vielen Dank schonmal im Voraus.
Private Sub CommandButton1_Click()
Dim Pfad_lokal As String
Pfad_lokal = TextBox1.Text      ' Pfad aus Textbox lesen
Dim wbZiel As Workbook
Dim wbQuelle As Workbook
Set wbZiel = ThisWorkbook 'Die Mappe, in der der Code liegt
Set wbQuelle = Workbooks.Open(TextBox1.Text)
End Sub
Private Sub CommandButton2_Click()
Dim i As Long
Dim wbQuelle As Workbook
Set wbQuelle = Workbooks.Open(TextBox4.Text)
With wbQuelle.Worksheets("Tabelle1")
For i = Cells(Rows.Count, 4).End(xlUp).Row To 1 Step -1
If Cells(i, 5) = "hallo" Then Rows(i).Delete
Next i
End With
End Sub

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabelle mit VBA öffnen, Spaltenabgleich & löschen
07.08.2015 12:58:06
Sepp
Hallo Benny,
teste mal.
Private Sub CommandButton2_Click()
Dim i As Long
Dim wbQuelle As Workbook

Set wbQuelle = Workbooks.Open(TextBox4.Text)

With wbQuelle.Worksheets("Tabelle1").UsedRange
  With .Columns(.Columns.Count + 1)
    .FormulaR1C1 = "=if(iserror(find(""hallo"",RC4)),Row(),0)"
    .Cells(1, 1).Value = 0
    .EntireRow.RemoveDuplicates .Column, xlNo
    .ClearContents
  End With
End With

End Sub


Gruß Sepp

Anzeige
AW: Tabelle mit VBA öffnen....
07.08.2015 13:08:45
EtoPHG
Hallo Benny,
Zitat:Aber irgendwie steh ich nach langem Überlegen jetzt in einer Sackgasse.
Wie sieht deine Sackgasse aus? Was ist dein Problem? Gibt es Fehler oder Fehlverhalten?
Was hast du ausprobiert? Wo stehst du an? All das sind Fragen, deren Antwort das Problem eingrenzen und eine Fehleranalyse erlauben. Du gehst einfach davon aus, dass der Leser aus deinem Post eine Antwort auf all diese Fragen geben kann?
Hier drin steckt schon mal ein entscheidender Fehler:
   With wbQuelle.Worksheets("Tabelle1")
For i = Cells(Rows.Count, 4).End(xlUp).Row To 1 Step -1
If Cells(i, 5) = "hallo" Then Rows(i).Delete
Next i
End With
Du verwendest ein With-Konstrukt aber brauchst es nicht!
For i = .Cells(.Rows.Count, 4).End(xlUp).Row To 1 Step -1
If .Cells(i, 5) = "hallo" Then .Rows(i).Delete
Next i
Gruess Hansueli

Anzeige
AW: Tabelle mit VBA öffnen....
07.08.2015 14:28:15
benny
Hallo, vielen Dank für eure schnellen Antworten. Habe gerade als erstes die Codeverbesserung von Sebb probiert. Da bekomme ich einen Indexfehler.
Zweitens: Ja tut mir leid das waren vielleicht ein bisschen zu wenig Infos. Der Code funktioniert bei mri soweit das ich mit der Eingabe des Dateifeldes und den Drücken des Buttons1 eine Excel öffne. Wenn diese dann durch Drücken auf Button2 von bestimmten Zeilen bereinigt werden soll, wird das Programm abgebrochen. Das Hauptproblem denke ich mal wird sein, die beiden Exceldateien so zu deklarieren das der Code weiß mit welcher er arbeiten soll. Zu Info: In der einen ist die Userform hinterleget und die andere soll bearbeitet werden.

Anzeige
AW: Tabelle mit VBA öffnen....
07.08.2015 14:41:29
Sepp
Hallo Benny,
wo kommt der Fehler?
Ich habe deine Code übernommen, also war der Fehler wohl schon drin!
Poste den gesamten Code und nicht nur schnipsel.
Gruß Sepp

AW: Tabelle mit VBA öffnen....
07.08.2015 15:12:43
benny
Das ist mein gesamter Code, so wie ich Ihn vorhin gepostet hatte.
Private Sub CommandButton1_Click()
Dim Pfad_lokal As String
Pfad_lokal = TextBo1.Text      ' Pfad aus Textbox lesen
Dim wbZiel As Workbook
Dim wbQuelle As Workbook
Set wbZiel = ThisWorkbook 'Die Mappe, in der der Code liegt
Set wbQuelle = Workbooks.Open(TextBox1.Text)
End Sub

Private Sub CommandButton2_Click()
Dim i As Long
For i = .Cells(.Rows.Count, 4).End(xlUp).Row To 1 Step -1
If .Cells(i, 4) = "hallo" Then .Rows(i).Delete
Next i
End Sub
Private Sub CommandButton3_Click()
Unload Me
End Sub

Anzeige
AW: Tabelle mit VBA öffnen....
07.08.2015 15:23:59
Sepp
Hallo Benny,
die Codes sind nicht identisch!
Definiere wbQuelle in einem allgemeinen Modul als Public.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public wbQuelle As Workbook

' **********************************************************************
' Modul: UserForm1 Typ: Userform
' **********************************************************************

Option Explicit

Private Sub CommandButton1_Click()
Dim Pfad_lokal As String
Dim wbZiel As Workbook

Pfad_lokal = TextBox1.Text ' Pfad aus Textbox lesen

Set wbZiel = ThisWorkbook 'Die Mappe, in der der Code liegt
Set wbQuelle = Workbooks.Open(TextBox1.Text)
End Sub


Private Sub CommandButton2_Click()
If Not wbQuelle Is Nothing Then
  With wbQuelle.Worksheets("Tabelle1").UsedRange
    With .Columns(.Columns.Count + 1)
      .FormulaR1C1 = "=if(iserror(find(""hallo"",RC4)),Row(),0)"
      .Cells(1, 1).Value = 0
      .EntireRow.RemoveDuplicates .Column, xlNo
      .ClearContents
    End With
  End With
End If
End Sub


Private Sub CommandButton3_Click()
Unload Me
End Sub


Gruß Sepp

Anzeige
AW: Tabelle mit VBA öffnen....
07.08.2015 15:53:04
benny
Ja das ist der "letzte Stand" meines Codes.
Ich muss sagen jetzt bin ich irgendwie total verwirrt. Die wbQuelle in einem eigenen Modul anlegen? Also in kein Formular? Sry das ich das gerade nciht durchblicke. Kann aber auch an der Hitze liegen ;)

AW: Tabelle mit VBA öffnen....
07.08.2015 15:57:23
Sepp
Hallo Benny,
ja, in einem allgemeinen Modul asl Public, dann kann von Überall darauf zugegriffen werden.
Mit dem Button1 öffnest du ja die Datei und gleichzeitig wird wbQuelle initialisiert, Button2 kann dann auf wbQuelle zugreifen. das geht aber nur, wenn die Variable eben als Public deklariert wird.
Gruß Sepp

Anzeige
AW: Tabelle mit VBA öffnen....
10.08.2015 10:12:27
benny
sry aber ich bekomm es einfach nciht hin...die Tabelle wird geöffnet aber wenn die Spalte gefiltert und bestimmte Zeilen dann gelöscht werden sollen bekomme ich einen Indexfehler. Einfach halber hab ich mal von dem Code und den beiden Modulen Screenshots gemacht. Hoffe du kannst mir ncohmal helfen.
Userbild
Userbild
Userbild

Anzeige
Quelle:"Basisdaten" statt "Tabelle1" (owT)
10.08.2015 10:19:51
EtoPHG

AW: Quelle:"Basisdaten" statt "Tabelle1" (owT)
10.08.2015 13:50:36
benny
oh vielen Dank...darauf hät ich auch selber kommen können ;)

AW: Quelle:"Basisdaten" statt "Tabelle1" (owT)
10.08.2015 13:50:37
benny
oh vielen Dank...darauf hät ich auch selber kommen können ;)

AW: Quelle:"Basisdaten" statt "Tabelle1" (owT)
10.08.2015 13:54:14
benny
ich hätte aber nochmal eine Frage: und zwar soll der Code ncoh vervollständigt werden. Das heißt über einen Button 3 soll soll ein Datumsbereich (von - bis, Eingabe über textbox2 und textbox3) gezogen werden und danach gefiltert werden. Also alle Daten die außerhalb dieses Bereiches liegen sollen gelöscht werden.
Bisher sieht mein Code dazu so aus: (Bekomme aber einen Indexfehler)
Private Sub CommandButton3_Click()
Dim wbQuelle As Worksheet
Dim lngSpalte As Long
Dim dteAbDatum As Date
Dim dteBisDatum As Date
dteAbDatum = CDate(TextBox2.Text)
dteBisDatum = CDate(TextBox3.Text)
Set wbQuelle = ThisWorkbook.Worksheets("Basisdaten")
lngSpalte = 3
If wbQuelle.AutoFilterMode Then
wbQuelle.UsedRange.AutoFilter
End If
wbQuelle.UsedRange.AutoFilter Field:=lngSpalte, _
Criteria1:=">=" & CLng(dteAbDatum), _
Operator:=xlAnd, _
Criteria2:="

Anzeige
AW: Quelle:"Basisdaten" statt "Tabelle1" (owT)
10.08.2015 14:00:06
EtoPHG
Hallo Benny,
Ein bisschen mehr Aufmerksamkeit bei deinen Programmierversuchen wäre wohl angebracht.
Der Code ist in einer Arbeitsmappe und mit:
ThisWorkbook.Worksheets("Basisdaten") versuchst du eine Tabelle anzusprechen, die nicht in der Arbeitsmappe mit dem Code liegt, sondern in einer anderen Mappe!
Indexfehler deuten praktisch immer auf einen solchen Fehler hin: Falscher Blattname, Falsche Arbeitsmappe.
Gruess Hansueli

AW: Quelle:"Basisdaten" statt "Tabelle1" (owT)
10.08.2015 18:26:49
benny
ja das stimmt natürlich.
Mir ist gerade aufgefallen, dass bei diesem Code ja die Zeilen lediglich gefiltert werden. Kann man auch Filtern udn die nicht gefilterten Daten zeilen werden gelöscht und nciht nur ausgeblendet?
Anzeige

317 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige