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, 12: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 (32 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.
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!
Grüße aus Norderstedt, Peter
Registriert seit: 22.06.2016
Version(en): 2007
18.07.2016, 15:01
(Dieser Beitrag wurde zuletzt bearbeitet: 19.07.2016, 12: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 Sub
anpassen? 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 (32 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, 11:54
(Dieser Beitrag wurde zuletzt bearbeitet: 19.07.2016, 12: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
|