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

Makro anpassen

Makro anpassen
wafi
Hallo Excel Freunde
Folgendes Problem hat sich gestellt, mit dem ich ohne Hilfe nicht zurecht komme.
Ich verwende dieses Makro schon lange und es funktioniert perfekt.
Nun möchte ich es aber innerhalb einer Tabelle zweimal verwenden.
Wenn ich im Bereich C15:C192 eine Eingabe mache, dann sollte der Bereich B15:GK192 sortiert werden.
Mache ich aber eine Eingabe im Bereich C198:C375 , dann sollte im Bereich B198:GK375 sortiert werden.
Setze ich das Makro zweimal ein und passe die Bereiche richtig an, funktioniert nur das Erste.
Es ist mir auch klar das das so nicht klappen kann, bestimmt muß vorher schon entschieden werden
welches Makro ausgeführt werden soll.
Also, wenn Eingabe im Bereich x bis x dann Makro 1 ausführen, wenn Eingabe im Bereich y bis y dann Makro 2 aufrufen.
Kann mir hier jemand weiter helfen.
Vielen Dank
Gruß
wafi
Private Sub Worksheet_Change(ByVal Target As Range)
Dim RaBereich As Range, RaZelle As Range
'   alle Buchstaben Groß im Bereich ("C15:C192")
Application.EnableEvents = False
'   Bereich der Wirksamkeit
Set RaBereich = Range("C15:C192")
Application.EnableEvents = False
ActiveSheet.Unprotect
For Each RaZelle In Range(Target.Address)
If Not Intersect(RaZelle, RaBereich) Is Nothing Then
RaZelle.Value = UCase(RaZelle.Value)
End If
Next RaZelle
Application.EnableEvents = True
'   automatisch sortieren bei Eingabe im Bereich C15:C192
Set RaBereich = Nothing
Set RaBereich = Range("C15:C192")
For Each RaZelle In Range(Target.Address)
If Not Intersect(Target, RaBereich) Is Nothing Then ' Zelle ist im Bereich
Range("B15:GK192").Sort Key1:=Range("C15"), Order1:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
Exit For
End If
Next RaZelle
ActiveSheet.Protect
Application.EnableEvents = False
'   Bereich der Wirksamkeit
Set RaBereich = Range("D15:D192")
'    ActiveSheet.Unprotect
Application.EnableEvents = False
For Each RaZelle In Range(Target.Address)
If Not Intersect(RaZelle, RaBereich) Is Nothing Then
If RaZelle  "" Then
RaZelle.Value = UCase(Mid(RaZelle.Value, 1, 1)) _
& LCase(Mid(RaZelle.Value, 2, Len(RaZelle.Value) - 1))
End If
End If
Next RaZelle
Application.EnableEvents = True
'    ActiveSheet.protect
Set RaBereich = Nothing
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Makro anpassen
19.07.2011 09:29:37
Matthias
Hallo
Nur mal zum Verständnis:
Klicke z.B mal in Zelle C192 und dannach mal in Zelle C198

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("C15:C192")) Is Nothing Then
'mach was
MsgBox "Bereich 1"
End If
If Not Intersect(Target, Range("C198:C375")) Is Nothing Then
'mach hier was Anderes
MsgBox "Bereich 2"
End If
End Sub
Gruß Matthias
AW: Makro anpassen
19.07.2011 09:36:35
Hajo_Zi
ich hätte es vielleicht so geschrieben, ungestestet.
Option Explicit                             ' Variablendefinition erforderlich
Private Sub Worksheet_Change(ByVal Target As Range)
Dim RaBereich As Range, RaZelle As Range
Set RaBereich = Range("C15:C192")
ActiveSheet.Unprotect
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
If Not RaBereich Is Nothing Then
' alle Eingaben im Bereich in Großbuchstaben umwandeln
Application.EnableEvents = False
For Each RaZelle In RaBereich
RaZelle.Value = UCase(RaZelle.Value)
Next RaZelle
Range("B15:GK192").Sort Key1:=Range("C15"), Order1:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
Application.EnableEvents = True
End If
Set RaBereich = Range("C198:C375")
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
If Not RaBereich Is Nothing Then
' alle Eingaben im Bereich in Großbuchstaben umwandeln
Application.EnableEvents = False
For Each RaZelle In RaBereich
RaZelle.Value = UCase(RaZelle.Value)
Next RaZelle
Range("B198:GK375").Sort Key1:=Range("C198"), Order1:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
Application.EnableEvents = True
End If
Set RaBereich = Range("D15:D192")
Set RaBereich = Intersect(RaBereich, Range(Target.Address))
If Not RaBereich Is Nothing Then
Application.EnableEvents = False
For Each RaZelle In RaBereich
If RaZelle  "" Then
RaZelle.Value = UCase(Mid(RaZelle.Value, 1, 1)) _
& LCase(Mid(RaZelle.Value, 2, Len(RaZelle.Value) - 1))
End If
Next RaZelle
Application.EnableEvents = True
End If
ActiveSheet.Protect
Set RaBereich = Nothing
End Sub


Anzeige
AW: Makro anpassen
19.07.2011 11:39:30
wafi
Danke für die schnelle Hilfe, es klappt wunderbar.
LG
wafi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige