1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Makro If Target.Column

Discussion in 'Office-Programme' started by C2C4, Dec 9, 2009.

Thread Status:
Not open for further replies.
  1. C2C4

    C2C4 Byte

    hallo liebe leute,

    ich bins mal wieder... excel-xxl-anfänger!

    ich versuche seit zwei stunden den fehler zu finden, aber ich bin blind.

    In meiner tabelle will ich ein makro ausführen, aber nur, wenn die aktive zelle in der spalte a (also column=1) ist. die MsgBox.Column ist nur für mich zu testzwecken aktiviert worden. hier mein fehlerhaftes makro:


    Sub Zelladresse()

    With ActiveCell
    MsgBox .Column
    If Target.Column = 1 Then
    Call Merken
    Else
    MsgBox "keine Zelle in Spalte A ausgewählt"
    End If
    End With
    End Sub


    das problem: excel schreibt beim ausführen des makros immer wieder in "gelb" die zeile...

    If Target.Column = 1 Then

    anscheinend kennt mein excel2007 diesen befehl nicht, oder ich schreibe was falsch!

    Bitte helft mir! :)
    Lieben Dank!
     
  2. brum

    brum Kbyte

    Target ist ja auch nicht definiert. ;-) Lass es mal weg.

    Gruss
    Bruno
     
  3. Beverly

    Beverly Halbes Megabyte

    Hi,

    soll das Makro automatisch ausgeführt werden, wenn du einen Eintrag in Spalte A vornimmst? Dann den folgenden Code nach Rechtsklick auf den Tabellenreiter -> Code anzeigen ins Codefenster kopieren:

    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Column = 1 Then
            Call merken
        Else
            MsgBox "keine Zelle in Spalte A ausgewählt"
        End If
    End Sub
    
     
  4. C2C4

    C2C4 Byte


    Hi Bruno,

    hab ich auch schon versucht! Die Fehlermeldung ist dann zwar weg, aber mein Befehl "Call" für das Makro (merken) wird nie ausgeführt!

    Ich verstehe es nicht, wenn ich es einzeln aufrufe, dann klappts. :aua:

    Zum Verständnis:

    In einem Tabellenblatt werden manchmal Datensätz eingefügt. Dies soll genau dor geschehen, wo sich der Cursor befindet. Ich will den User aber dazu zwingen, wenigstens in eine Zelle in der ersten Spalte zu klicken.
    Das Makro (merken) fügt lediglich eine ZEILE Darüber ein und kopiert gleichzeitig einen Standardtext samt Formatierungen.

    Hoffe, es ist nun genauer beschrieben.

    Auch der nächste Beitrag hat leider nicht funktioniet.

    s. Beschreibung unten.

    Ich danke euch trotzdem für eure Mühen.

    Gruß Clemens
     
  5. C2C4

    C2C4 Byte

    Hi Karin,

    leider funktioniert dein Makro auch nicht :(

    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 1 Then
    Call merken
    Else
    MsgBox "keine Zelle in Spalte A ausgewählt"
    End If
    End Sub

    Auch hier wird das Makro an der selben Stelle gestoppt... "If Target.Column = 1 Then".
    Selbst wenn ich das "target." weglasse, ist zwar diese Fehlermeldung weg, aber der Befehl "Call" wird trotz Cursor in einer Zelle in Spalte A nicht ausgeführt.

    Ich verstehe s einfach nicht :(

    Hast du noch eine Idee?
    Oder andere?

    Lieben Dank!
    Clemens
     
    Last edited: Dec 9, 2009
  6. Beverly

    Beverly Halbes Megabyte

    Hi Clemens,

    das bezweifle ich denn doch seeeehr stark, dass mein Code den von dir genannten Fehler auslöst - trage in der angehängten Arbeitsmappe mal einen Wert in eine beliebige Zelle ein und schau, was dann passiert. Ich hatte ja geschreiben, dass der Code dafür gedacht ist, ausgeführt zu werden wenn in Spalte A etwas eingetragen wird, weil das aus deiner Beschreibung nicht klar hervorging. Der Code ist aber für deine jetzige Beschreibung irrelevant.

    Indem du eine Zeile einfügst wird jedoch kein auswertbares Ereignis ausgelöst und folglich kann auf diesem Weg auch keine Code gestartet werden - dein Makro "Zelladresse" wird also nie automatisch von allein laufen, du musst es schon mit einem Schalter oder von Hand direkt starten. Es ist aber nicht erforderlich, dass der Cursor sich dabei in Spalte A befindet um eine Zeile oberhalb der aktuellen einzufügen und einen Text einzutragen. Dein Makro zum Einfügen könnte deshalb so aussehen:
    Code:
    Sub Einfuegen()
        Rows(ActiveCell.Row).Insert shift:=xlDown
        Cells(ActiveCell.Row, 1) = "Dies ist ein Hinweis"
    End Sub
    
     

    Attached Files:

  7. C2C4

    C2C4 Byte

    Hallo Karin,

    habe dein Makro samt Beispieltabelle probiert und es funktioniert doch. Hatte natürlich nicht einen Wert in eine Zelle in Spalte A geschrieben, sondern nur markiert.

    Leider musste ich ja lesen, dass es so wie ich es vorerst haben wollte nicht geht. Nun habe ich eine andere Idee mit der Hoffnung, dass dies zu lösen ist.

    Hinweis:

    Ich habe ca. 40 "Schalter" über meiner Tabelle. Jeder funktioniert gleich... bei klick wird ein vorher definierter Text samt Formatierung in eine Zelle beginnend mit Spalte A kopiert.

    Problem:

    Ich möchte den User "zwingen", die Zeilennummer anzugeben, wo der entsprechende Text eingefügt werden soll.
    Aber: Da es sich um eine Rechnung handelt, sind bis auf einen "Eingabebereich" alle Zellen gesperrt. Weiter unten (im gesperrten Bereich) befindet sich noch die Summenformel. Deshalb MUSS immer im "Eingabebereich" die vorher erzwungene Zeile NEU eingefügt werden, damit dieser Bereich zunehmend wächst und die Summe weiterhin berechnet werden kann.

    Warum ich das so kompliziert mache?
    Es existiert ein Add-In, welches unabhängig von der Seitenanzahl die "Überträge" jeweils unten auf allen Seiten und oben ab der zweiten Seite hinschreibt. Da ich also nicht weiß, wie viele "Schalter" von den beschriebenen 40 Stück gedrückt werden (hier stehen z.B. Kostennoten drin), kann ich kein Layout der Seite vordefinieren.

    Mir schien dies mit dem "neuen" "Zeilenabfragemakro zum Eingeben der Zeilennummer" ein Weg zu sein.

    Hatte ja erwähnt, bin ein Excel-XXL-Anfänger :) Geht das nun so?

    Ich hoffe, dass ich alle Details nunmehr beschrieben habe. Wenn nicht, einfach fragen, ich antworte allerdings meistens nachts. :)

    Vielen Dank für die Hilfe!
    Gute Nacht!
    Clemens
     
  8. Beverly

    Beverly Halbes Megabyte

    Hi Clemens,

    der einfachste Weg: setze den Blattschutz so, dass gesperrte Zellen nicht ausgewählt werden dürfen, dann kann es auch icht passieren, dass aus Versehen eine Zeile an der falschen Stelle (also im gesperrten Bereich) eingefügt wird.
     
  9. C2C4

    C2C4 Byte

    hi Karin,

    dank dir für den Tipp. ist zwar nicht genau das, was ich wollte, hab aber einen anderen Weg dank deines Denkanstosses gefunden :)

    Lösung: Habe der Zelle, die "nicht gsperret" ist einen Kommentar gegeben. Ein Makro prüft nun ab, ob die aktive Zelle einen Kommentar besitz. Falls ja... Makro xyz, ... falls nein MSG "bitte die "richtige" Zelle auswählen".

    Ihr habt mir also wieder geholfen.
    Habt Dank dafür - bis zum nächsten Problem ;)

    Clemens
     
Thread Status:
Not open for further replies.

Share This Page