Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1228to1232
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

Sortieren nach X und Rest löschen

Sortieren nach X und Rest löschen
Marcus
Moin, moin,
ich brauche noch einmal Hilfe. Ich sortiere mit einem Makro gewisse Daten aus einer aktiven Tabelle raus und lösche damit alle nicht benötigten Zeilen. Im Beispiel sortiert er mir wenn in Spalte J (Spalte 10) nicht Hamburg steht alle anderen in den Müll. Passt. Hier das Beispiel :

Sub SortierenHamburg()
Dim lngZeile As Long
Dim lngZaehler As Long
Application.ScreenUpdating = False
For lngZeile = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row To 2 Step -1
If Cells(lngZeile, 10)  "Hamburg" Then
Rows(lngZeile).Delete shift:=xlUp
lngZaehler = lngZaehler + 1
End If
Next lngZeile
Application.ScreenUpdating = True
End Sub
Nun möchte ich mit dem gleichen Makro die zweite Tabelle ansprechen. Er soll also den gleiche Funktion durchführen nur in einem anderen Arbeitsblatt der selben Mappe. Ich habe versucht aus "ActiveSheet" irgendwie Workbook und was weiß ich zu machen, ich scheitere jedoch kläglich.
Hat jemand eine Idee ? Es ist wahrscheinlich wieder nur eine Kleinigkeit...
Dankbar für jeden Hinweis !

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
klappt doch einwandfrei ...
06.09.2011 08:39:25
Matthias
Hallo
Warum sollte das nicht klappen
Code gehört in ein Modul

  1. Tabelle1 wählen-Code ausführen

  2. Tabelle2 wählen-Code ausführen


https://www.herber.de/bbs/user/76475.xls
Gruß Matthias
AW: klappt doch einwandfrei ...
06.09.2011 08:41:26
Marcus
Jau im aktiven Blatt klappt das. Er soll es aber von Mappe 1 aus in Mappe 2 durchführen. Ich habe also in Mappe1 einen Button, nach Klick soll er das Makro in Mappe 2 ausführen. Idee was ich ändern muss ?
Blatt Referenzieren ...
06.09.2011 09:17:16
Matthias
Hallo
Code in ein Modul

Aus einer anderen Tabelle den Code in Tabelle2 ausführen
Tabelle2 ist hier der CodeName der Tabelle (nicht der Registername)

Sub SortierenHamburg()
Dim lngZeile As Long
Dim lngZaehler As Long
With Tabelle2
Application.ScreenUpdating = False
For lngZeile = .UsedRange.SpecialCells(xlCellTypeLastCell).Row To 2 Step -1
If .Cells(lngZeile, 10)  "Hamburg" Then
.Rows(lngZeile).Delete shift:=xlUp
lngZaehler = lngZaehler + 1
End If
Next lngZeile
Application.ScreenUpdating = True
End With
End Sub
Gruß Matthias
Anzeige
AW: Blatt Referenzieren ...
06.09.2011 09:31:14
Marcus
Hi Matthias,
das funktioniert nicht. Er haut mir immer noch alle Zeilen aus Tabelle1 raus, die sollen ja aber drinne bleiben. Er soll das Makro von Tabell1 aus in Tabell2 ausführen.
Das funktioniert doch ...
06.09.2011 09:42:40
Matthias
Hallo
Dann machst Du was falsch
Hast Du den Code auch wirklich in einem Modul?
https://www.herber.de/bbs/user/76479.xls
Wenn bei Dir etwas nicht klappt, dann mußt Du Deine Datei hochladen.
Ich habe meine Glaskugel nämlich gerade beim TÜV ;o)
Gruß Matthias
AW: Das funktioniert doch ...
06.09.2011 10:22:30
Marcus
Manmanman. Danke erstmal, es funktioniert !!!
Irgend ein Dödel hier hat die Tabelle2 mal gelöscht und nun ist es natürlich Tabelle3 mit einem anderen Namen. Und siehe da : schon gehts.
Danke Matthias für soviel Mühe ! Unglaublich hilfreich !!!
Anzeige
AW: Das funktioniert doch ...
06.09.2011 11:09:39
Marcus
Matthias kannst Du mir noch mal helfen ?
Ich muss nun das tabelle3 blatt wieder aus der ersten seite heraus autom. als csv datei speichern im gleichen ordner wo die excel datei liegt. mit dem blatt wo die buttons liegen kriege ich es wie folgt hin :
Dim intFileNumber As Integer
Dim lngRow As Long
Dim vntArray As Variant
Dim strText As String
Dim i As Integer
Const strPre As String = ";"
Reset
intFileNumber = FreeFile
With ThisWorkbook
.Save
Open .Path & "\" & Left$(.Name, Len(.Name) - 4) & _
".csv" For Output As #intFileNumber
End With
With ActiveSheet.UsedRange
For lngRow = 1 To .Row + .Rows.Count - 1
vntArray = Range(Cells(lngRow, 1), _
Cells(lngRow, .Column + .Columns.Count - 1))
vntArray = WorksheetFunction.Transpose( _
WorksheetFunction.Transpose(vntArray))
strText = Join(vntArray, strPre)
Print #intFileNumber, strText
Next
End With
Close #intFileNumber
Application.DisplayAlerts = False
Application.Quit
Kann ich da auch wieder mit "with tabelle3" arbeiten ? wenn ja, an welcher stelle ? oder hast du einen anderen lösungsvorschlag ?
Anzeige
Du musst nur die Punkte richtig setzen
06.09.2011 11:46:47
Matthias
Hallo
Sichere vorher Deine aktuelle.csv-Datei und
probiers doch einfach mal aus.
und setz die Punkte richtig, vor Cells, Range und Row

With Tabelle3.UsedRange
For lngRow = 1 To .Row + .Rows.Count - 1
vntArray = .Range(.Cells(lngRow, 1), _
.Cells(lngRow, .Column + .Columns.Count - 1))
vntArray = WorksheetFunction.Transpose( _
WorksheetFunction.Transpose(vntArray))
strText = Join(vntArray, strPre)
Print #intFileNumber, strText
Next
End With



sieht bei mir dann so aus:(aus meiner Beispieldatei mit Tabelle2)
Wert;Wert;Wert;Wert;Wert;Wert;Wert;Wert;Wert;Ort
1;1;1;1;1;1;1;1;1;Berlin
5;5;5;5;5;5;5;5;5;Berlin
9;9;9;9;9;9;9;9;9;Berlin
10;10;10;10;10;10;10;10;10;Hamburg
6;6;6;6;6;6;6;6;6;Hamburg
7;7;7;7;7;7;7;7;7;Berlin
2;2;2;2;2;2;2;2;2;Hamburg
3;3;3;3;3;3;3;3;3;Berlin
4;4;4;4;4;4;4;4;4;Berlin
8;8;8;8;8;8;8;8;8;Berlin
Gruß Matthias
Anzeige
AW: Du musst nur die Punkte richtig setzen
06.09.2011 12:11:42
Marcus
Jau hab ich probiert. Laufzeitfehler 52 Dateiname oder Nummer falsch.

Sub csv()
With Tabelle3.UsedRange
For lngRow = 1 To .Row + .Rows.Count - 1
vntArray = .Range(.Cells(lngRow, 1), _
.Cells(lngRow, .Column + .Columns.Count - 1))
vntArray = WorksheetFunction.Transpose( _
WorksheetFunction.Transpose(vntArray))
strText = Join(vntArray, strPre)
Print #intFileNumber, strText     Next
End With
End Sub
Idee ?
Organisation
06.09.2011 09:45:50
Erich
Hi Marcus,
in dieser Mappe hast du in Blatt Abc zwei Buttons. Drückst du auf den zweiten, wird Blatt Ddeeff bearbeitet.
Der eigentliche Code steht in einem allg. Modul. Stört das?
https://www.herber.de/bbs/user/76480.xls
Und hier der Code:

'Code des Blatts Abc:
Option Explicit
Private Sub cbSortAbc_Click()
SortierenHamburg ActiveSheet
End Sub
Private Sub cbSortDdeeff_Click()
SortierenHamburg Sheets("Ddeeff")
End Sub
'Allg. Modul:
Option Explicit
Sub SortierenHamburg(wks As Worksheet)
Dim lngZeile As Long
'   Dim lngZaehler As Long                      ' wofür?
Application.ScreenUpdating = False
With wks
For lngZeile = .UsedRange.SpecialCells(xlCellTypeLastCell).Row To 2 Step -1
If .Cells(lngZeile, 10)  "Hamburg" Then
.Rows(lngZeile).Delete shift:=xlUp
'         lngZaehler = lngZaehler + 1           ' wofür?
End If
Next lngZeile
End With
Application.ScreenUpdating = True
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Organisation
06.09.2011 10:23:24
Marcus
Moin Erich,
vielen Dank ! Auch das funktioniert. Ich bin mal so frei und speicher mir das weg :-) !
DANKE.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige