3.8k Aufrufe
Gefragt in Tabellenkalkulation von
Guten Morgen, ich habe folgendes Problem und hoffe mir(Leihe) kann jemand helfen. Wäre sehr dankbar :-)

Habe eine Tabelle gebastelt: Salte ab E8 Erinnerung 4 Monate vor Vertragsablaufzeit: (in E5 stehen 20Monate)

=DATUM(JAHR(F8);MONAT(F8)+$E5$;TAG(F8))*ZEILE(1:500)

Sie funktioniert auch, aber ich bräuchte auch Spalte G/H/I/J/K und N darin! (dort sollt man auch ein jeweiliges Datum eintragen können;ich meine man sollte die auswahl haben zwischen F bis N. (die Spalten enthalten verschiedene Vertragsvarianten).

Was mach ich falsch oder was fehlt noch?? Ich komm einfach nicht weiter...es fehlt der Bezug und nix klappt. Vielen Dank schon mal im Vorraus.

Lg Bri

106 Antworten

+1 Punkt
Beantwortet von m-o Profi (22.8k Punkte)

Hallo Bri,

da die Frage nichts mit dem alten Problem zu tun hat, wäre es besser gewesen, du hättest einen neuen Thread aufgemacht (für das nächste Mal wink).

Aber zu deiner neuen Frage. Das ist grundsätzlich möglich. Soll das Sortieren nur dann erfolgen, wenn in Spalte F die RETURN-Taste gedrückt wird, oder soll generell beim Drücken von RETURN sortiert werden?

Stehen in der Zeile 4 die Überschriften oder schon Daten?

Und ich nehme mal an, dass alle Spalten ab Zeile 4 nach der Spalte F, den Nachnamen, sortiert werden sollen.

Gruß

M.O.

0 Punkte
Beantwortet von _bri Mitglied (437 Punkte)

Oh ja, danke für den Hinweis! War mich nicht sicher, ob ich dich dann wieder erreiche....wink

Es sollte generell bei Neuanlegung eines Kunden sortiert werden, also egal in welcher Spalte..

In Zeile 4 gehts schon mit Daten los: A-Kennung, B-Anrede, CundC Firma, E-KundenNr., F- Nachname usw.bis V.

Sortiert sollte ab Spalte A werden, aber entscheidend Alphabetisch bezogen auf F. (Ein Kunde hat quasi einen Eintrag von A:V.

smileyLG

Bri

+1 Punkt
Beantwortet von m-o Profi (22.8k Punkte)
Bearbeitet von m-o

Hallo Bri,

der folgende Code (zum Abfangen der Return-Taste) gehört in das VBA-Projekt der Tabelle mit den Kundendaten:

Private Sub Worksheet_Change(ByVal Target As Range)

'Beim Drücken von Return das Makro sortieren aufrufen
Application.OnKey "{ENTER}", "sortieren"    'Enter-Taste auf Numlock gedrückt
Application.OnKey "~", "sortieren"          'Return-Taste gedrückt

End Sub


Achtung: Damit der Aufruf des Makros funktioniert, muss vor dem Drücken der RETURN-Taste eine Eingabe in die aktuelle Zelle erfolgen.

Das folgende Makro zum Sortieren gehört in ein normales Modul deiner Arbeitsmappe:

Sub sortieren()
Dim lngLZeile As Long
Dim lngLSpalte As Long

With ActiveSheet
  'letzte Zeile und Spalte ermitteln
   lngLZeile = .Cells(Rows.Count, 6).End(xlUp).Row
   lngLSpalte = .Cells(4, Columns.Count).End(xlToLeft).Column
   'Daten sortieren; Sortierung nach Spalte F
  .Sort.SortFields.Clear
   .Sort.SortFields.Add Key:=Range(.Cells(4, 6), .Cells(lngLZeile, 6)), SortOn:=xlSortOnValues, _
        Order:=xlAscending, DataOption:=xlSortNormal
   With .Sort
      .SetRange Range(Cells(4, 1), Cells(lngLZeile, lngLSpalte))
     .Header = xlGuess
     .MatchCase = False
     .Orientation = xlTopToBottom
     .SortMethod = xlPinYin
     .Apply
    End With
End With

'benutzerdefinierte Belegung wieder rückgänging machen
Application.OnKey "{ENTER}", ""
Application.OnKey "~", ""

End Sub

Achtung: Benennst du das Makro um, muss auch der Name im Aufruf im ersten Makro geändert werden.

Zum Schluss noch ein Warnung: Das Abfangen des Tastendrucks ist tückisch! Ich würde das Makro per Hand starten.

Gruß

M.O.

+1 Punkt
Beantwortet von m-o Profi (22.8k Punkte)

Hallo Bri,

ich noch einmal wink.

Hier eine bessere Version.

Makro für das Tabellenblatt mit den Adressen:

Private Sub Worksheet_Change(ByVal Target As Range)

If CommandKeyClick() Then sortieren

End Sub

Kopiere die folgenden Makros in ein normales Modul:

Private Declare PtrSafe Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

Public Function CommandKeyClick() As Boolean
  CommandKeyClick = CBool((GetAsyncKeyState(vbKeyReturn) And &H8000) = &H8000)
End Function

Sub sortieren()
Dim lngLZeile As Long
Dim lngLSpalte As Long

With ActiveSheet
  'letzte Zeile und Spalte ermitteln
   lngLZeile = .Cells(Rows.Count, 6).End(xlUp).Row
   lngLSpalte = .Cells(4, Columns.Count).End(xlToLeft).Column
   'Daten sortieren; Sortierung nach Spalte F
  .Sort.SortFields.Clear
   .Sort.SortFields.Add Key:=Range(.Cells(4, 6), .Cells(lngLZeile, 6)), SortOn:=xlSortOnValues, _
        Order:=xlAscending, DataOption:=xlSortNormal
   With .Sort
      .SetRange Range(Cells(4, 1), Cells(lngLZeile, lngLSpalte))
     .Header = xlGuess
     .MatchCase = False
     .Orientation = xlTopToBottom
     .SortMethod = xlPinYin
     .Apply
    End With
End With

End Sub

Gruß

M.O.

0 Punkte
Beantwortet von _bri Mitglied (437 Punkte)
Hallo M.O.,

vielen Dank erstmals für Deine Mühen!!

Ich habe das jetzt ausprobiert, aber es funktioniert nicht, wenn ich einen Namen eintippe, springt zwar nach Enter Excel ganz hoch zum A. aber der Eintrag bleibt unten, sortiert ihn also nicht dazu...

Was mache ich falsch? Dieser Anleitungslink, ist auch nicht für Excel2019..kann es daran liegen?

Die erste Formel habe ich in Excel objekt wie beschrieben kopiert und das zweite auch in eine extra mappe...danach habe ich das Fenster geschlossen und es in der Tabelle mit dem Eintrag versucht....

An was könnte das liegen? Was mach ich nur falsch?

Gruß zurück
+1 Punkt
Beantwortet von m-o Profi (22.8k Punkte)

Hallo Bri,

beide Makros müssen in die selbe Arbeitsmappe. Hier eine Beispielmappe.

Gruß

M.O.

0 Punkte
Beantwortet von _bri Mitglied (437 Punkte)

Hi, M.O.,

also es klappt wunderbar! Nur kann ich jetzt die Datei nicht mehr speicher, er will das ich in Dateityp Makros aktiviere...ich finde dort nicht hin...Wo muss ich da hin?

im Trust Center habe ich bereits makros aktivieren... funktioniert nicht...

Ich hoffe du hast noch diesen eine Tipp für mich wink

+1 Punkt
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Bri,

du musst die Datei mit Speichern unter und als .xlsm-Datei (Excel-Datei mit Makros) speichern. In dem Speichern-Fenster musst bei Datei-Typ durchgreifen und dann ."Excel-Arbeitsmappe mit Makros (.xlsm)" auswählen.

Gruß

M.O.
0 Punkte
Beantwortet von _bri Mitglied (437 Punkte)

Hallo M.O.,

1000 Dank!! Du bist Spitzelaughyes

Alles bestens geklappt!

Eine schöne Restwoche noch

Gruß

Brigitte

0 Punkte
Beantwortet von _bri Mitglied (437 Punkte)

Hallo M.O,

du bist irgendwie der einzige hier, der mir Fragen beantwortet...ich bräuchte dringend deine Hilfe.

Hoffentlich kannst Du mir helfen! Und ich hoffe auch, Dir geht es noch gut, da wo du bist!

Ich füge mal ein Beispiel. Gruß und bleib Gesund

Lg Bri

https://supportnet.de/forum/?qa=blob&qa_blobid=7903854557392443689

...