Registriert seit: 22.06.2016
	
 Version(en): 2007
	 
 
	
	
		Hallo liebe Gemeinde;
  folgendes Problem habe mir ein Makro gebaut,
  es wird automatisch nach der Größe sortiere, wenn eine bestimmte Zelle verändert wird.
  Funktioniert super, wenn ich die Zelle per Hand ändere, wenn ich einen verweis auf eine andere Zelle lege, also die Zelle M1 sich die Daten holt, funktioniert es nicht!
  Hat wer eine Idee?
 
  Private Sub Worksheet_Change(ByVal Target As Range)    If Target.Cells.Count > 1 Then Exit Sub    If Intersect(Target, Range("$M$1")) Is Nothing Then Exit Sub     ActiveWorkbook.Worksheets("Nebenrechnungen").AutoFilter.Sort.SortFields.Clear     ActiveWorkbook.Worksheets("Nebenrechnungen").AutoFilter.Sort.SortFields.Add _         Key:=Range("K3"), SortOn:=xlSortOnValues, Order:=xlDescending, _         DataOption:=xlSortNormal     With ActiveWorkbook.Worksheets("Nebenrechnungen").AutoFilter.Sort         .Header = xlYes         .MatchCase = False         .Orientation = xlTopToBottom         .SortMethod = xlPinYin         .Apply     End With      End Sub
	 
	
	
	
	
 
 
	
	
	
		
	Registriert seit: 10.04.2014
	
 Version(en): 2016 + 365
	 
 
	
	
		Hi,  (18.07.2016, 13:47)KS20 schrieb:  Funktioniert super, wenn ich die Zelle per Hand ändere, wenn ich einen verweis auf eine andere Zelle lege, also die Zelle M1 sich die Daten holt, funktioniert es nicht! das geht meines Wissens nicht, da eine Änderung per Formel nicht als Change-Event erkannt wird.
	  
	
	
	
	
 
 
	
	
	
		
	Registriert seit: 22.06.2016
	
 Version(en): 2007
	 
 
	
	
		Gibt es denn da eine andere Lösung?
  bzw. weiß wer eine?
  Danke
	 
	
	
	
	
 
 
	
	
	
		
	Registriert seit: 12.10.2014
	
 Version(en): 365 Insider (64 Bit)
	 
 
	
	
		Moin! Dann musst Du halt die Zelle(n) überwachen, die das Formelergebnis in M1 verändern.
  Gruß Ralf
	 
	
	
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.  Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
 
	
	
 
 
	
	
	
		
	Registriert seit: 11.04.2014
	
 Version(en): '97 bis 2016; 365
	 
 
	
	
		Hallo, Zitat:Gibt es denn da eine andere Lösung?
  bzw. weiß wer eine? (ungetestet)Ich schlage vor, daß Du Dir eine Zelle einrichtest, in die Du den Formelwert aus, ich glaube M1 war es, übertragen läßt. Dann sollte das mit dem Auslesen der Wertänderung klappen.
	  
	
	
	
	
 
 
	
	
	
		
	Registriert seit: 22.06.2016
	
 Version(en): 2007
	 
 
	
		
		
		18.07.2016, 16:01 
(Dieser Beitrag wurde zuletzt bearbeitet: 19.07.2016, 13:19 von Rabe.
 Bearbeitungsgrund: Code mit Code-Tags
)
		
	 
	
		Hallo, hat alles nicht funktioniert, dann Plan B   so sieht nun mein Makro aus: Code: Private Sub Worksheet_Change(ByVal Target As Range)    If Target.Cells.Count > 1 Then Exit Sub  [color=#333333]  If Intersect(Target, Range("$M$1")) Is Nothing Then Exit Sub[/color]     ActiveWorkbook.Worksheets("Nebenrechnungen").AutoFilter.Sort.SortFields.Clear     ActiveWorkbook.Worksheets("Nebenrechnungen").AutoFilter.Sort.SortFields.Add _         Key:=Range("K3"), SortOn:=xlSortOnValues, Order:=xlDescending, _         DataOption:=xlSortNormal     With ActiveWorkbook.Worksheets("Nebenrechnungen").AutoFilter.Sort         .Header = xlYes         .MatchCase = False         .Orientation = xlTopToBottom         .SortMethod = xlPinYin         .Apply     End With    End Sub
 Die Sortierung wird im Tabellenblatt "Nebenrechnungen" gestartet Was muss ich ändern, dass er startet, wenn ich im Tabellenblatt "TEST" im Bereich A9:A30 was ändere? Dann müsste ich doch die Zeile:  If Intersect(Target, Range("$M$1")) Is Nothing Then Exit Subanpassen? Aber da hänge ich nun fest!Danke
	 
	
	
	
	
 
 
	
	
	
		
	Registriert seit: 10.04.2014
	
 Version(en): 97-2019 (32) + 365 (64)
	 
 
	
	
		Hallöchen,
  ich hoffe, das Makro hast Du schon im Modul des Tabellenblattes Test. Dann brauchst Du nur statt "M1" "A9:A30" einzusetzen.
	 
	
	
.      \\\|///      Hoffe, geholfen zu haben.        ( ô ô )      Grüße, André aus G in T     ooO-(_)-Ooo    (Excel 97-2019+365)
 
	
	
 
 
	
	
	
		
	Registriert seit: 12.10.2014
	
 Version(en): 365 Insider (64 Bit)
	 
 
	
	
		Noch eine Ergänzung: Arbeite niemals mit ActiveWorbook, wenn es sich verhindern lässt. Hier also ThisWorkbook
  (in diesem speziellen Fall ist es unerheblich, es dient mir auch nur der Sensibilisierung zur Verhinderung von unexpected errors)
  Gruß Ralf
	 
	
	
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.  Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
 
	
	
 
 
	
	
	
		
	Registriert seit: 14.04.2014
	
 Version(en): Office 2013/2016/2019/365
	 
 
	
	
		Hi,
  If Target.Cells.Count > 1 Then Exit Sub
  mache eine Kopie der Mappe -> markiere mal das ganze Blatt und drücke die Entf. Taste;)
	 
	
	
lg Chris Feedback nicht vergessen.  3a2920576572206973742064656e20646120736f206e65756769657269672e
 
	
	
 
 
	
	
	
		
	Registriert seit: 22.06.2016
	
 Version(en): 2007
	 
 
	
		
		
		19.07.2016, 12:54 
(Dieser Beitrag wurde zuletzt bearbeitet: 19.07.2016, 13:18 von Rabe.
 Bearbeitungsgrund: Code ohne Schriftformatierung, dafür mit Code-Tags!
)
		
	 
	
		Hi, danke für die vielen Tipps, jetzt noch ein kleines Problem^^ Wie bekomme ich Makros zusammen nun aktiv in das Tabellenblatt, wenn da schon ein Makro steht? Code: Private Sub Worksheet_Change(ByVal Target As Range) Dim rng As Range On Error Resume Next Set rng = Range("ad9:as999") If Not Intersect(rng, Target) Is Nothing Then     Application.EnableEvents = False     Target(1, 1).Value = WorksheetFunction.VLookup(Target(1, 1).Value, Tabelle3.Range("a2:b33"), 2, 0)     End If errmsg: On Error GoTo 0 Application.EnableEvents = True    If Intersect(Target, Range("A1:A100")) Is Nothing Then Exit Sub    If Target.Value <> "" Then       Target.Offset(0, 1).Value = Date    Else       Target.Offset(0, 1).ClearContents    End If End Sub
 Das habe ich dort schon und das soll mit rein: Code: Private Sub Worksheet_Change(ByVal Target As Range)    If Target.Cells.Count > 1 Then Exit Sub    If Intersect(Target, Range("$M$1")) Is Nothing Then Exit Sub     ActiveWorkbook.Worksheets("Nebenrechnungen").AutoFilter.Sort.SortFields.Clear     ActiveWorkbook.Worksheets("Nebenrechnungen").AutoFilter.Sort.SortFields.Add _         Key:=Range("K3"), SortOn:=xlSortOnValues, Order:=xlDescending, _         DataOption:=xlSortNormal     With ActiveWorkbook.Worksheets("Nebenrechnungen").AutoFilter.Sort         .Header = xlYes         .MatchCase = False         .Orientation = xlTopToBottom         .SortMethod = xlPinYin         .Apply     End With     MsgBox "Makro gestartet!" End Sub
 Danke
	  
	
	
	
	
 
 
	 
 |