Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
744to748
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
744to748
744to748
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA Was ist falsch

VBA Was ist falsch
17.03.2006 14:09:24
Wolf
Sub Sortieren()

Private Sub Worksheet_Change(ByVal Target As Range)
'   automatisch sortieren bei Eingabe im Bereich F4:F34
Dim Bereich As Range
Set Bereich = Range("C2:C200")
If Not Intersect(Target, Bereich) Is Nothing Then ' Zelle ist im Bereich
Range("A2:D200").Sort Key1:=Range("C2"), Order1:=xlDescending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
End Sub

FEHLER:
Fehler beim kompilieren:
End Sub erwartet
Habe eine Liste mit 4 Spalten die sich ständig neu sortieren soll. Die Daten für diese Tabelle kommen von mehreren anderen Tabellen.
Danke

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Was ist falsch
17.03.2006 14:10:32
Andi
Hi,
End If fehlt vor End Sub.
Schönen Gruß,
Andi
AW: VBA Was ist falsch
17.03.2006 14:12:41
Wolf
Sub Sortieren()

Private Sub Worksheet_Change(ByVal Target As Range)
'   automatisch sortieren bei Eingabe im Bereich F4:F34
Dim Bereich As Range
Set Bereich = Range("C2:C200")
If Not Intersect(Target, Bereich) Is Nothing Then ' Zelle ist im Bereich
Range("A2:D200").Sort Key1:=Range("C2"), Order1:=xlDescending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
End If
End Sub

Selber Fehler imme noch
AW: VBA Was ist falsch
17.03.2006 14:17:08
Reinhard
Hi Wolf,
Sub Sortieren() löschen
Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..

Anzeige
AW: VBA Was ist falsch
17.03.2006 14:30:54
Wolf
Sub Sortieren() löschen
Dann ist aber mein MAKRO weg! Sorry gehöre zu den Lusern im VBA
So schaut meine Tabelle aus. Die Daten werden aber alle von anderen Tabellen geholt. ich trage hier nichts ein.
Name Sp - Nr Punkte
Heiko 6 2
Gasse 5 1
Vadder 4 0
Mahoni 2 0 Ausser Wertung
Klee 8 5
Kerstin 9 0
Kapton 3 0
Franky 1 0 Ausser Wertung
Mein Makro:
Sub Sortieren()

Private Sub Worksheet_Change(ByVal Target As Range)
'   automatisch sortieren bei Eingabe im Bereich C2:C200
Dim Bereich As Range
Set Bereich = Range("C2:C200")
If Not Intersect(Target, Bereich) Is Nothing Then ' Zelle ist im Bereich
Range("A2:D200").Sort Key1:=Range("C2"), Order1:=xlDescending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
End If
End Sub

Anzeige
AW: VBA Was ist falsch
HansHei
Hi Wolf,
wetten, dass es dennoch funzt?
Gruß
Hans
AW: VBA Was ist falsch
17.03.2006 14:44:07
Reinhard
Hi Wolf,
du musst die Zeile mit "Sub Sortieren()" löschen.
Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
AW: VBA Was ist falsch
17.03.2006 14:44:25
IngGi
Hallo Wolf,
Private Sub Worksheet_Change(ByVal Target As Range)
ist eine sogenannte Ereignisprozedur. Diese startet automatisch, wenn du im betreffenden Tabellenblatt etwas änderst. Ich vermute mal, dass du das gar nicht willst, sondern dass du dir das Makro von irgendwoher in ein allgemeines Modul kopiert und die Zeile
Sub Sortieren()
dazugeschrieben hast, damit das Makro in der Liste erscheint, wenn du über Extras-Makro-Makros dieses starten willst.
Wenn das so zutrifft, dann lösche die Zeile
Private Sub Worksheet_Change(ByVal Target As Range)
und die beiden Zeilen mit If... und End If. Dann sollte es funktionieren.
Gruß Ingolf
Anzeige
AW: VBA Was ist falsch
17.03.2006 15:11:36
Wolf
' automatisch sortieren im Bereich C2:C200
Dim Bereich As Range
Set Bereich = Range("C2:C200")
If Not Intersect(Target, Bereich) Is Nothing Then ' Zelle ist im Bereich
Range("A2:D200").Sort Key1:=Range("C2"), Order1:=xlDescending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
Jetzt geht gar nichts mehr!!!!!
Spalte:
a2:a200 wird automatisch mit "Name" gefüllt
b2:b200 wird automatich mit "Spielernummer" gefüllt
c2:c200 wird automatisch mit "Punkte (Gewonnene Spiel)" gefüllt
Beispiel:
a2 =Adressliste!$F14 b2=Adressliste!$c14 c2=Adressliste!$B14
Die Tabelle soll immer aktuell nach 1. Punkte 2. Spielernummer sortiert werden.
Kann mir das jemand fertig machen? Vieleicht kapiere ich es dann. DANKE
Anzeige
AW: VBA Was ist falsch
HansHei
Hi,
was Ingolf meinte:
entweder:
Sub sortieren()
    Dim Bereich As Range
    Set Bereich = Range("C2:C200")
        Range("A2:D200").Sort Key1:=Range("C2"), Order1:=xlDescending, _
        Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
        Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
End Sub
oder
Private Sub Worksheet_Change(ByVal Target As Range)
'   automatisch sortieren bei Eingabe im Bereich C2:C200
    Dim Bereich As Range
    Set Bereich = Range("C2:C200")
    If Not Intersect(Target, Bereich) Is Nothing Then ' Zelle ist im Bereich
        Range("A2:D200").Sort Key1:=Range("C2"), Order1:=xlDescending, _
        Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
        Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
        End If
End Sub
Gruß
Hans
Anzeige
AW: kleine Rorrektur
HansHei
Sub sortieren()
    Dim Bereich As Range
    Set Bereich = Range("C2:C200")
        Bereich.Sort Key1:=Range("C2"), Order1:=xlDescending, _
        Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
        Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
'   automatisch sortieren bei Eingabe im Bereich C2:C200
    Dim Bereich As Range
    Set Bereich = Range("C2:C200")
    If Not Intersect(Target, Bereich) Is Nothing Then ' Zelle ist im Bereich
        Bereich.Sort Key1:=Range("C2"), Order1:=xlDescending, _
        Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
        Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
        End If
End Sub
Anzeige
AW: nehme Korrektur zurück o.T.
HansHei
AW: VBA Was ist falsch
17.03.2006 15:26:29
Andi
Hi,
vielleicht mal grundsätzlich:
eine

Sub fängt immer an mit der Zeile

Sub MakroName()
und hört auf mit der Zeile
End Sub

Die erste Zeile (

Sub MakroName()) heißt 'Header'. Vor diesen Header kann man noch Private schreiben, dann kann das Makro nicht manuell gestartet werden, wie zB die bereits erwähnten Ereignisprozeduren.
In Deinem ersten Posting hattest Du zwei Header, nämlich

Sub Sortieren()
und
Private 

Sub Worksheet_Change(ByVal Target As Range)
Das ist einer zuviel.
Jetzt hast Du aber gar keinen mehr, und das ist einer zu wenig.
Je nachdem was Du willst, musst Du einen der beiden Header stehen lassen.
Den Header 

Sub Sortieren(), wenn Du das Makro manuell starten willst, oder den anderen, wenn, wenn Du das Change-Ereignis nutzen willst, sprich wenn das Makro bei Änderung einer Zelle automatisch ausgeführt werden soll.
Wie bereits gesagt, musst Du in ersten Fall die Zeilen
If Not Intersect(Target, Bereich) Is Nothing Then ' Zelle ist im Bereich
und
End If
löschen, weil das Target nur in der Change-Ereignisprozedur zur Verfügung steht.
Schönen Gruß,
Andi

Anzeige
AW: VBA Was ist falsch
17.03.2006 15:29:04
IngGi
Hallo Wolf,
offensichtlich ist es ja eben nicht so, wie ich vermutet habe. Das Makro soll eben doch automatisch ablaufen, sobald sich die Werte ändern. Das funktioniert allerdings in diesem Fall nicht mit dem Worksheet_Change-Ereignis, da sich die Werte über Formeln in den Zellen ergeben und die Formeln ändern sich ja nicht. Du musst statt dessen das Worksheet_Calculate-Ereignis nehmen. Dabei wird das Makro immer dann automatisch gestartet, wenn das Tabellenblatt neu berechnet wird. Kopiere folgendes Makro in das Modul deines Tabellenblattes. Gehe hierzu mit Alt+F11 in den VBA-Editor, doppelklicke auf "Tabelle1 (Tabelle1)" bzw. den Namen deines Tabellenblattes.

Private Sub Worksheet_Calculate()
Range("A2:D200").Sort Key1:=Range("C2"), Order1:=xlDescending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
End Sub
Gruß Ingolf
Anzeige
JUHUUUUUU Funktioniert
17.03.2006 17:17:48
wolf
Danke Danke Danke

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige