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

Macro zum Einlesen einer Excel-Datei

Macro zum Einlesen einer Excel-Datei
11.05.2013 13:24:16
Kansas
Hallo liebe Community.
die Aufgabenstellung, mit der ich mich aktuell herumschlage ist Folgende:
Im Rohdatenformat liegt mir eine Exceltabelle vor, die ich in ein Excel Template importieren möchte.
Das Excel-Template selbst soll neben dem "Importer" eine Sortierfunktion beinhalten, die es dem Anwender erlaubt, Inhalte von Tabellenspalten auf- und absteigend komfortabel zu sortieren ohne das dieser selbst weitere Einstellungen vornehmen muss.
Das Ganze ist quasi dafür gedacht, um Bedienung und Navigation innerhalb der Daten so einfach als möglich zu gestalten.
Ich habe bislang schon mehrere Sachen ausprobiert, komme aber nicht wirklich weiter.
Die Sortierung möchte ich so lösen, dass jeder Spalte zwei Pfeilgrafiken im Tabellenkopf enthält, der jeweils ein "Sortiermacro" zugewiesen wird. Ich weiß nicht, ob es eine schönere Lösung gäbe. Wenn ja, ich wäre über jeden Hinweis dankbar.
Vielleicht findet sich ja jemand, der mir bei dieser Herausforderung den einen oder anderen Tipp geben könnte.
Viele Grüße und besten Dank schon mal.
Kansas

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: eine x-beliebige Spalte schnell sortieren
11.05.2013 15:52:02
Franz
Hallo Kansas!
Eine Alternative...
'Folgende Deklarationen in einem Modul platzieren
'Global lngC As Long
'Global blnOrder As Boolean
'Global z As Integer
'Global c As Integer
'Global iHeaderZ As Integer
'Diese nachstehende SUB unter "DieseArbeitsmappe" platzieren
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel  _
As Boolean)
iHeaderZ = 1 'die Kopfzeile ist im Regelfall in der 1.Zeile
Select Case Sh.Name
Case Sheets(1).Name
If Target.Row = iHeaderZ Then
Application.ScreenUpdating = False
If Target.Column = lngC Then
blnOrder = IIf(blnOrder = 0, -1, 0)
Else
lngC = Target.Column
blnOrder = -1
End If
z = ActiveSheet.Cells(65536, 2).End(xlUp).Row
'suche in der 2.Spalte nach dem letzten Eintrag
c = ActiveSheet.UsedRange.Columns.Count
Range(Cells(iHeaderZ, 1), Cells(z, c)).Name = "zCurMemberList"
'Die Kopfzeile ist hier in der 1.Zeile mit dem Namen "HeaderT"
[zCurMemberlist].Sort Key1:=Target, Order1:=blnOrder + 2, Header:=xlYes
Cancel = True
Cells(ActiveCell.Row + 1, ActiveCell.Column).Select
'Cursor bewegen, ich vermeide SENDKKEY weil bei mir sich die NUMLOCK-Taste ab und  _
zu deaktiviert
End If
'case sheets(2)
'case sheets(3)
Case Else
End Select
End Sub

Funktioniert tadellos in meiner Mitgliederverwaltung, habe ich aus diesem Forum für meine Zwecke lediglich angepasst. Das kannst du genauso so machen.
Tschüss
Franz D.

Anzeige
AW: eine x-beliebige Spalte schnell sortieren
11.05.2013 17:44:24
Kansas
Ganz herzlichen Dank Franz für den Beispielcode, den ich versucht habe an mein Sheet anzupassen.
Irgendwas läuft da noch falsch, vielleicht kannst Du oder einer der anderen Excelexperten noch einmal drüberschauen.
Hier bleibt der Debugger stehen:
[UMatrix].Sort Key1:=Target, Order1:=blnOrder + 2, Header:=xlYes
UMatrix ist der Name des Sheets, die Tabellenbeschreibungen befinden sich in Reihe 7, beginnend bei Spalte A.
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel _
As Boolean)
iHeaderZ = 7 'die Kopfzeile meiner Tabelle
Select Case Sh.Name
Case Sheets(2).Name
If Target.Row = iHeaderZ Then
Application.ScreenUpdating = False
If Target.Column = lngC Then
blnOrder = IIf(blnOrder = 0, -1, 0)
Else
lngC = Target.Column
blnOrder = -1
End If
z = ActiveSheet.Cells(65536, 1).End(xlUp).Row
'suche in der 2.Spalte nach dem letzten Eintrag
c = ActiveSheet.UsedRange.Columns.Count
Range(Cells(iHeaderZ, 7), Cells(z, c)).Name = "UMatrix"
'Die Kopfzeile ist hier in der 7.Zeile, 1 Spalte bezeichnet mit dem Namen " _
Unternehmen"
[UMatrix].Sort Key1:=Target, Order1:=blnOrder + 2, Header:=xlYes
Cancel = True

Anzeige
AW: eine x-beliebige Spalte schnell sortieren
11.05.2013 19:49:44
Franz
Hallo Kansas, ändere Range(Cells(iHeaderZ, 7), Cells(z, c)).Name = "UMatrix" in
Range(Cells(iHeaderZ, 1), Cells(z, c)).Name = "UMatrix", also mache aus der 7 eine (Spalte) 1.
Tschüss!
Franz D.

AW: eine x-beliebige Spalte schnell sortieren
12.05.2013 09:51:52
Kansas
Hallo Franz D.,
mercí das Du noch mal drüber geschaut hast. Vielen Dank für den nützlichen Tipp!
Toller Service!
Kansas

AW: Sortieren Tabelle per Klick auf Symbole
11.05.2013 18:41:22
fcs
Hallo Kansas
ich würde das mit dem Autofilter, ggf. in Kombination mit dem Blattschutz lösen, wobei vorher der Zellschutz für alle Zellen aufgehoben wird. BeimBlattschutz werden dann das Sortiern und der Autofilter zugelassen. Der Autofilter liefert alle erforderlichen Menüpunkte zum Sortieren.
Alternativ hier eine Beispieldatei, in der das Sortieren per Klick auf Symbole in den Spalten gestartet wird
https://www.herber.de/bbs/user/85285.xlsm
Gruß
Franz

Anzeige
AW: Sortieren Tabelle per Klick auf Symbole
12.05.2013 09:55:51
Kansas
Auch Dir ganz herzlichen Dank Franz!
Anhand der Beispieldatei lässt sich die Funktionsweise sehr gut nachvollziehen.
Schöner schlanker Code,
im Gegensatz zu meinen redundanten Makros "pro Spalte definiert" ein Bruchteil an Quellcode.
Habt Ihr zufällig noch eine ähnlich smarte Lösung für das Einlesen meiner Excel-Rohdatendatei in das Sortiertemplate?
Wäre nett!
Ansonsten allen einen wunderschönen Sonntag

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige