Office: spalten aneinander hängen + combolist hilfe

Helfe beim Thema spalten aneinander hängen + combolist hilfe in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; "If (Target.Row = 2) And (Target.Column = 5) Then" ich weis du sprichst damit die 2. zeile 5. spalte an, aber warum mit target und getrennt? Das... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von greyhole, 9. Juni 2010.

  1. miriki Erfahrener User

    spalten aneinander hängen + combolist hilfe


    Das "Target" wird als Parameter an die "Change"-Routine übergeben. Es ist ein "Range", der im Zweifelsfall aus nur einer einzigen Zelle bestehen kann. Wenn Du aber einen ganzen Bereich markierst und z.B. mit "Entf(ernen)" die Inhalte löscht, dann beinhaltet "Target" auch diesen ganzen Bereich. Ein "Range"-Objekt hat etliche Eigenschaften wie z.B. auch Angaben über linke und obere Ecke, Anzahl der Zeilen und Spalten, ... Und Eigenschaften eines Objekts wiederum werden mit "." angehängt.

    "Target.Row" heißt also im Prinzip: Die Zeile von Target. Das sieht überall so aus. Anderes Beispiel:
    Code:
    thisworkbook.activesheet.range("b2:d4").font.colorindex = 1
    Vielleicht hilft es, solche Dinger von rechts nach links zu lesen:

    Es geht um einen colorindex, also den Verweis auf einen Farbwert. Dieser wird einem Font, also der Vordergundfarbe von Texten, zugewiesen. Die Texte, die eingefärbt werden sollen, befinden sich im Bereich B2:D4. Dieser Bereich wiederum ist im aktiven Arbeitsblatt zu finden. Und es ist das aktive Arbeitsblatt der "eigenen" Arbeitsmappe (Das ist die, in dem sich der gerade ausgeführte VBA-Code befindet) gemeint.

    Ich hab hier, genau genommen, eine kleine Abkürzung genommen. Eigentlich fehlt eine kleine Abfrage vorher, ob "Target" nur aus einer einzigen Zelle besteht. Was aber dann passiert:

    Ich frage, ob die Zeile von "Target" 2 ist und ob die Spalte von "Target" 5 ist, was also der Zelle E2 entspricht. Man könnte auch die etwas kompliziertere Syntax mit "Intersect" verwenden, um zu bestimmen, ob die Bereiche "Target" und "E2" sich überschneiden. Geschmackssache...

    Das (Ent-) Sperren des Bereichs muß nur durchgeführt werden, wenn der Wert in E2 sich geändert hat. Bei Änderungen in anderen Zellen braucht diese Routine nicht aktiv zu werden. Das spart Rechenzeit (Ruckeln nach jeder Eingabe irgendwo auf dem Blatt) und läßt Platz für andere Reaktionen auf Änderungen in anderen Zellen.

    Das Konstrukt macht eigentlich nichts anderes, als sich den Wert aus E5 zu holen. Dabei wird y vorsichtshalber mit einem Defaultwert von 0 vorbelegt. Wenn in E5 dann ein Buchstabe oder sonst irgendein "ungültiger" Wert steht, würde die Zuweisung auf die Longint-Variable einen Fehler verursachen. Um das zu verhindern habe ich das "On Error" drumherum gesetzt. In dem Fall würde y auf 0 bleiben und der Rest der Routine entsprechend nicht durchlaufen werden.

    Hmmm... Das kann ich jetzt noch nicht so ganz nachvollziehen... Bei einer Änderung in E5 werden ja zuerst einmal alle Zellen pauschal entsperrt ("s1.Cells.Locked = False"). Danach werden die Zellen A1:D(y-1) wieder gesperrt ("s1.Range("A1:D" & y - 1).Locked = True"). Wenn in E5 also eine 2 steht, dann wird nur A1:D1 gesperrt. Wenn immer A1:D4 gesperrt sind, muß auch irgendwie immer eine 5 in y stehen. Hmmm... Fehlt mir jetzt eine Idee, aber ich schau's mir gerne nochmal genauer an.

    Gruß, Michael
     
    miriki, 11. Juni 2010
    #16
  2. miriki Erfahrener User
    Argl, ja, es gibt einen kleinen Fehler, der aber nur in einer recht speziellen Situation auftritt:

    Wenn man in E5 einen gültigen Wert eingibt (z.B. "15") und danach mit z.B. "1" wieder alle Zellen freigeben möchte, dann klappt das nicht, weil durch die Abfrage >=2 die Routine nicht durchlaufen wird.

    Wenn eine "0" oder ein ungültiger Wert eingetragen wird, bleiben die vorher eingestellten Zellen ebenfalls gesperrt, aber das erschien mir auch sinnvoll. Wenn das nicht so sein soll, kann man das aber auch anpassen.

    Ich hab mal 2 kleine Änderungen eingebaut:
    a) Der o.a. Speziallfall wird mit abgedeckt
    b) Der Test auf den geänderten Bereich umfaßt nun auch 1x1 Größentest
    Code:
    Option Explicit
    
    Private Sub Worksheet_Change(ByVal Target As Range)
    
        Dim y As Long
        Dim s1 As Worksheet
    
        If (Target.Rows.Count = 1) And (Target.Columns.Count = 1) And (Target.Row = 2) And (Target.Column = 5) Then
    
            y = 0: On Error Resume Next: y = Target.Value: On Error GoTo 0
            If (y > 0) Then
    
                Set s1 = ActiveSheet
                s1.Unprotect
                s1.Cells.Locked = False
    
                If (y >= 2) And (y < 65536) Then
                    s1.Range("A1:D" & y - 1).Locked = True
                End If
    
                s1.Protect
    
            End If
        End If
    
    End Sub
    Aber daß immer A1:D4 gesperrt sind, kann ich (nach wie vor) nicht nachvollziehen.

    Gruß, Michael
     
    miriki, 11. Juni 2010
    #17
Thema:

spalten aneinander hängen + combolist hilfe

Die Seite wird geladen...
  1. spalten aneinander hängen + combolist hilfe - Similar Threads - spalten aneinander hängen

  2. Wie kann ich die x häufigsten Ausdrücke aus einer Spalte ermitteln?

    in Microsoft Excel Hilfe
    Wie kann ich die x häufigsten Ausdrücke aus einer Spalte ermitteln?: Nach umfangreicher Recherche und einigem Probieren konnte ich meine Anforderung noch nicht erfüllen. Nun hoffe ich auf Eure Unterstützung. Für ein Tippspiel importieren wir regelmäßig aus einer...
  3. Wenn ein Wert ein einer Spalte, dann komplette Zeile im anderen Blatt untereinander einfügen.

    in Microsoft Excel Hilfe
    Wenn ein Wert ein einer Spalte, dann komplette Zeile im anderen Blatt untereinander einfügen.: Hallo, kann mir jemand bitte bei folgenderm Helfen. Habe etwas ähnliches gefunden was ich brauche, nur noch eine kleine Änderung ist notwendig. Aufgabe: Es wird geprüft, ob in Spalte Q ein Wert...
  4. Mittelwert aus mehreren Spalten als dynamisches Array

    in Microsoft Excel Hilfe
    Mittelwert aus mehreren Spalten als dynamisches Array: Hallo liebes Forum, ich bin bei folgendem Problem ratlos: Ich berechne für verschiedene Dozenten Feedback anhand von 3 verschiedenen Kriterien. Die Stammdaten der Feedbacks stehen in einer...
  5. Formel in Spalten / Zellen aktivieren

    in Microsoft Excel Hilfe
    Formel in Spalten / Zellen aktivieren: Hallo, ich versuche mich immer noch an einer Tabelle, wo ich mittels Userform Daten hineinkopiere. Formeln in den Spalten F, I und L ebenfalls zu kopieren gelingt mir nicht. Ich suche...
  6. Zwei Dateien vergleichen - Zielinfo in unterschiedlichen Spalten

    in Microsoft Excel Hilfe
    Zwei Dateien vergleichen - Zielinfo in unterschiedlichen Spalten: Hallo, ich benötige eure Unterstützung. Ich habe zwei Dateien (Excel) dahingehend abgleichen ob in der einen Datei (Master) Zieldaten (Boxennummern - jede in einer Zeile) und deren Folgedaten...
  7. Spalte Summieren wenn Monat UND Jahr

    in Microsoft Excel Hilfe
    Spalte Summieren wenn Monat UND Jahr: Hallo Forum, ich scheitere an einem wie ich dachte recht einfachen Problem, aber vielleicht kann mir hier jemand helfen. Ich habe eine Spalte mit einem Datum, und eine Zweite mit einer Summe. Der...
  8. Spalten Sortieren nach Zahlen mit Buchstaben (1a,1b usw)

    in Microsoft Excel Hilfe
    Spalten Sortieren nach Zahlen mit Buchstaben (1a,1b usw): Hallo, ich habe hier eine Bauteileliste erstellt um diese leichter wiederzufinden. Das Problem ist, dass die Baugruppen unterteilt sind (ist ein Kartonbaubogen mit mehreren Hundert Teilen,...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden