Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
876to880
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
876to880
876to880
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Worksheet_Change

Worksheet_Change
20.06.2007 17:14:00
Hugo
Hallo VAB-Profis
Habe einen einfachen Code geschrieben der so weit funktioniert (dh es wird ausgeführt, was ich will) aber nach der Ausführung springt der Cursor (Pfeil Rechts) nicht in die nächste Zelle nach rechts sondern zwei Zeilen nach unten und eine nach rechts.
Habe das Beispiel beigelegt.
https://www.herber.de/bbs/user/43444.xls
Gibt man in der Zelle B10 einen Text ein, soll eine Zeile eingefügt werden und die Formatierung und die Formeln der ausgeblendeten Hilfszeile kopiert werden.
Das läuft. Aber wie gesagt der Cursor springt danach in eine der ausgeblendeten Zeilen.
Wie kann ich das verhindern?
Besten Dank für eure Hilfe
Gruss Hugo

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worksheet_Change
20.06.2007 19:43:10
Armin
Hallo Hugo,
Du hast leider (entschuldige) keinen guten VBA Ansatz.
1. Der Makkro-Recorder mach viel redundanten Code.
Select brauch man fast nie!
2. Die _Change Prozedur wird mehrfach aufgerufen (z.B. Zeile einfügen) das kann man zwar auschalten aber behebt Dein Problem nicht (Application.EnableEvents = False; Einschalten nicht vergessen auch bei Fehler; sonnst geht nix mehr).
3. Beim Einfügen von Zeilen oder Spalten muss bedacht werden, das dann ActiveCell plötzlich eine Zeile höher oder tiefer adressiert, je nach dem. Übrigen habe ich mir das abgewöhnt damit handelt man sich nur Probleme ein, die man an irgend einer Stelle übersieht. Und mehr Zeilen gewinnst Du auch nicht.
4. Versuche Deinen Ansatz zu überdenken es gibt meist einen bessern.
Ich hoffe etwas geholfen zu haben.
Armin

Anzeige
AW: Worksheet_Change
20.06.2007 20:07:32
Hugo
Hallo Armin
Ist mir schon klar das mein VBA-Ansatz nicht gut ist.
Das hilft mir aber nicht weiter.
Ist es mit dem Code nicht möglich, dem der Curser beizubringen wohin er gehört?
Ich möchte erreichen, dass beim beschreiben der letzten Zeile eines Abschnittes automatisch eine neue Leerzeile mit allen Formatierungen und Formel eingefügt wird und damit verhindern das nicht an falscher Stelle eingefügt und die Totals nich mehr korrkt sind.
Darum auf der Ebene Worksheet_Change
Also nochmals die Frage gibt es eine Lösung den Cursor nicht zu "verlieren"?
Danke für die Bemühung und Gruss
Hugo

Anzeige
AW: Worksheet_Change
20.06.2007 22:45:00
Hugo
Habe dies nun wie folgend gelöst. Für Profis wahrscheinlich unsauber aber läuft.
Sollte doch noch eine bessere Lösung erscheinen nehme ich sie gerne an
Besten Dank und Gruss
  • 
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 2 And Target.Cells.Offset(1, 0).EntireRow.Hidden = False Then Exit Sub
    On Error GoTo Ende
    If Target.Column = 2 And Target.Cells.Offset(1, 0).EntireRow.Hidden = True Then
    Application.EnableEvents = False
    Target.Cells.Select
    ActiveCell.Offset(1, 0).Select
    Selection.EntireRow.Insert
    ActiveCell.Offset(1, 0).EntireRow.Select
    Selection.Copy
    ActiveCell.Offset(-1, 0).EntireRow.Select
    Selection.PasteSpecial Paste:=xlFormats
    Selection.PasteSpecial Paste:=xlFormulas
    Application.CutCopyMode = False
    Selection.EntireRow.Hidden = False
    Target.Cells.Offset(0, 0).Select
    Application.EnableEvents = True
    Else
    Target.Cells.Offset(0, 0).Select
    End If
    Exit Sub
    Ende:
    Exit Sub
    End Sub
    


    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Offset(0, 0).EntireRow.Hidden = True Then
    ActiveCell.Offset(-3, 0).Select
    End If
    End Sub
    


  • Anzeige
    AW: Worksheet_Change
    23.06.2007 18:21:26
    Hajo_Zi
    Hallo Hugo,
    auf select kann in VBA zu 99,9% verzichtet werden.
    
    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not (Target.Column = 2 And Target.Offset(1, 0).EntireRow.Hidden = False) Then
    On Error GoTo Ende
    Application.EnableEvents = False
    Target.Offset(1, 0).EntireRow.Insert
    Target.Offset(1, 0).EntireRow.Copy
    With Target.Offset(-1, 0).EntireRow
    .PasteSpecial Paste:=xlFormats
    .PasteSpecial Paste:=xlFormulas
    .EntireRow.Hidden = False
    End With
    Application.CutCopyMode = False
    Target.Cells.Offset(0, 0).Select
    Else
    Target.Cells.Offset(0, 0).Select
    End If
    Ende:
    Application.EnableEvents = True
    End Sub
    



    Anzeige
    AW: Worksheet_Change
    24.06.2007 10:23:59
    Hugo
    Hoi Hajo
    Besten Dank für den überarbeiten Code, so habe ich wieder was wieder was dazu gelernt.
    Gruss Hugo

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige