Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1180to1184
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
Inhaltsverzeichnis

VBA erkannt Excel Zellenwert nicht

VBA erkannt Excel Zellenwert nicht
Marc
Hallo.
Dank der Hilfe/Suche hier im Forum habe ich mir einiges basteln können. Im angehängten Excelfile werden die Spalte gesperrt in der ein "X" steht. Geben ich das "X" per Hand ein, funktioniert das. Wird das "X" per Formel erzeugt. Im Beipiel durch ein (Wenn, 2, dann "X") funktioniert es nicht.
https://www.herber.de/bbs/user/71922.xls
Die X-Feld sind als Text formatiert. Aber auch wenn ich statt X eine Zahl nehme klappt das nicht.
Liegt das an einer Variablen Definition im VBA? Oder erkennt der Code nur direkte Eingaben? Ich bin am Ende mit meinen Latin und für jede Hilfe dankbar.
Gruß, Marc
AW: VBA erkannt Excel Zellenwert nicht
14.10.2010 14:51:33
Marc
Info: Der VBA Code stammt noch aus dem beschriebenen Zahlenversuch.
Statt
.Locked = UCase(Target.Value) = 1

muss natürlich
.Locked = UCase(Target.Value) = "X"

stehen. Trotzdem funzt das nicht.
AW: VBA erkannt Excel Zellenwert nicht
14.10.2010 15:43:57
BoskoBiati
Hallo,
Worksheet_Change arbeitet nicht mit Berechnungen per Formel. Da brauchst Du Worksheet_calculate.
Gruß
Bosko
...Das wird dann aber erst abgearbeitet,...
14.10.2010 15:58:33
Luc:-?
…wenn alle durch die Eingabe ausgelösten Berechnungen durchgelaufen sind und hat/kennt dann natürlich auch kein Target
Insofern ist Tinos Vorschlag effektiver…
Gruß Luc :-?
Anzeige
AW: VBA erkannt Excel Zellenwert nicht
14.10.2010 15:14:23
Tino
Hallo,
im Code musst Du die Prüfung auf die Eingabezelle machen.
If Target.Address = Cells(5, 3).Address Then
Weil eine Formel dieses Event nicht startet und
Target die Zelle oder der Zellbereich ist wo eine Eingabe gemacht wird.
Gruß Tino
AW: VBA erkannt Excel Zellenwert nicht
14.10.2010 15:57:51
Marc
Hallo Tino.
Danke (schon wieder) für Deine Antwort/Hilfe. Wenn ich dich mit meinem mangelhaften VBA Verständnis richtig verstehe, arbeitet "Target" nur wenn ich eine direkte Eingabe tätige und da ich mir mein "X" mit einer Formel ziehe bringt mir das also gar nischts :-/
Wie sage ich denn nun diesem Mistding:
Lies das was in der Zelle C5 steht, dann sperre/sperre nicht c10 bis c18 und führ das bis Spalte AH fort.
  • 
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rngCell As Range
    If Not Intersect(Rows(1), Target) Is Nothing Then
    Me.Protect , UserInterfaceOnly:=True
    With Range("A1:D10")
    For Each rngCell In .Columns
    With rngCell
    Range(.Cells(2), .Cells(.Rows.Count)).Locked = _
    UCase(.Cells(1).Value) = "X"
    End With
    Next rngCell
    End With
    End If
    End Sub
    

  • Ich habe auch schon mit deinem Code, den du mir netterweise für mein erstes Simpelbeispiel gebastelt hast gearbeitet. Aber ich bin einfach zu lange aus VB rausgewesen und noch nicht lange genug zurück.
  • 
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rngCell As Range
    If Not Intersect(Rows(5), Target) Is Nothing Then
    Me.Protect , UserInterfaceOnly:=True
    With Range("C10:AH18")
    For Each rngCell In .Columns
    With rngCell
    Range(.Cells(10), .Cells(.Rows.Count)).Locked = _
    UCase(.Cells(5).Value) = "X"
    End With
    Next rngCell
    End With
    End If
    End Sub
    


  • Dank Dir schon mal - auch wenn du dir das Bier virtuell vorstellen musst ;-)
    Anzeige
    AW: VBA erkannt Excel Zellenwert nicht
    14.10.2010 16:10:13
    Tino
    Hallo,
    Deine Formel berechnet sich nach der Eingabe in Zeile 4, also überwache diese.
    Man könnte nun noch einbauen das auch nur dieser Bereich überprüft wird wo tatsächlich
    eine Eingabe stattfindet, aber dies kannst Du ja später mal machen wenn Du dich
    wieder eingearbeitet hast.
    https://www.herber.de/bbs/user/71924.xls
    Gruß Tino
    AW: VBA erkannt Excel Zellenwert nicht
    14.10.2010 16:34:36
    Marc
    Du triffst es am Besten mit:
  • wenn Du dich wieder eingearbeitet hast.

  • Langsam wird's mir auch ein bißchen peinlich.
    Die Krux an der Sache ist, dass es es nur in meinem Beispiel eine manuelle Eingabe gibt. Sorry. Ich habe gedacht an einem einfachen Beispiel wäre es für andere besser verständlich. Ich wusste nicht von dem ganzen Rattenschwanz der sich da hinterher zieht.
    In meiner eigentlichen Arbeitsunterlage - prüfe ich über mehrere SVERWEISE und WENN Abfragen aus einem anderen Excelreiter in einer Tabelle ob ein bestimmter Tatbestand erfüllt ist. Das lasse ich mir als "X" darstellen, da ich dachte mit dieser Hilfezeile kann ich die Spalten am einfachsten sperren lassen.
    Es gibt also nie eine direkte Eingabe - sondern immer nur eine Werte-Weitergabe.
    Anzeige
    ohne Eingabe keine Berechnung Hand o. VBA
    14.10.2010 16:59:35
    Tino
    Hallo,
    , eine Formel hat doch irgendwo einen Bezug zu einer Zelle wo etwas von Hand oder mit VBA eingegeben wird,
    sonst würde ja keine Berechnung stattfinden (oder sehe ich das falsch),
    eben diese Zelle oder der Zellbereich müsste überwacht werden,
    der kann ja auch auf einer anderen Tabelle liegen,
    dann muss eben dieses Eventmakro in dieser Tabelle eingebaut werden.
    Du kannst auch den Vorschlag von Bosko verwenden,
    dieses Event startet nach jeder Berechnung in der Tabelle,
    dies kann aber unschöne Effekte hervorrufen die auf Dauer nervig werden könnten.
    Gruß Tino
    Anzeige
    AW: ohne Eingabe keine Berechnung Hand o. VBA
    14.10.2010 17:30:04
    Marc
    Hallo Tino,
    leider ist es genau so.
    Ich ziehe mir per WENN und SVERWEIS Daten aus einer Liste.
    Wenn die Kriterien X oder Y oder Z erfüllt sind soll die Spalte (Teil einer Matrix) nicht mehr bearbeitbar sein ("X").
    Wenn nicht. Soll eine Eingabe in die Spalte möglich sein, die ich in den nachfolgenden Schritte auswerte/benutze.
    D. h. es gibt keine Eingabe per Hand oder VBA die ich für das Sperren, wie von dir vorgeschlagen, überwachen kann.
    Zusätzlich sollte die ganze Prozedur über mehrere Excel-Reiter laufen.
    Wenn ich die Sub als Worksheet_Calculate (ByVal Target As Range) nutze, passiert leider gar nichts.
    Die X-Spalten die ich sperren möchte sind zwar bereits über bedingte Formatierung deutlich markiert, aber in dem Laden hier hätte ich mir gewünscht das noch etwas sicherer zu gestalten.
    Vielen Dank für deine/eure Bemühungen - aber langsam muss ich wohl zu dem Schluss kommen dass es keine, mit vertretbarem Aufwand, gestaltbare Lösung gibt.
    Gruß, Marc
    Anzeige
    und wo ist diese Liste?
    14.10.2010 17:41:38
    Tino
    Hallo,
    aber wenn sich in dieser besagten Liste nichts ändert, ändert sich auch nichts am Ergebnis der Formel.
    Calculate hat kein Target,
    daher muss bei jeder Berechnung der auf dieser Tabelle durchgeführt wird dieser Code ablaufen.
    Private Sub Worksheet_Calculate()
    Dim rngCell As Range
    Me.Protect , UserInterfaceOnly:=True
    With Range("D5:AH18")
    For Each rngCell In .Columns
    With rngCell
    Range(.Cells(6), .Cells(.Rows.Count)).Locked = _
    UCase(.Cells(1).Value) = "X"
    End With
    Next rngCell
    End With
    End Sub
    

    Gruß Tino
    AW: und wo ist diese Liste?
    15.10.2010 09:10:01
    Marc
    Guten Morgen :-)
    Das habe ich eigentlich auch gedacht. Aber wenn ich mein File mit dem Code füttere passiert gar nichts. Nicht mal das Me.Protect.
    Der Code stimmt. Wenn in der ersten Range Zeile x steht sperre ab Range Zeile 6. Alles i.O. und trotzdem funzt nichts.
    Die Stammdaten befinden sind in einem SAP Excelauszug (Einzelfile) Aus diesem ziehe ich mir meine Infos in mein Arbeitsfile in einen Reiter "Data". Den "Data" Reiter durchpflüge ich mit WENN und SVERWEIS und wenn Zustand X,Y oder Z entsteht, malt mir die Formel ein "X" mit dem ich die Sperrspalte kennzeiche. Tadaaaa! Hört sich einfach an - isses aber wohl überhaupt nicht.
    https://www.herber.de/bbs/user/71933.xls
    Am Besten drucke ich alles aus und stelle mich mit nem Rohrstock daneben wenn jemand etwas ausfüllt :-)
    Merci, für deine Geduld.
    Anzeige
    AW: und wo ist diese Liste?
    15.10.2010 10:54:33
    Tino
    Hallo,
    die gelben Zellen sind als Text Formatiert, stelle dies mal auf Standard ein.
    Oder Versuch mal und lass diesen Code einmal drüberlaufen.
    Sub FormelErstellen()
    Dim rngRange As Range, FArray
    Tabelle1.Protect , UserInterfaceOnly:=True
    Set rngRange = Tabelle1.Range("C5:AH5")
    FArray = rngRange.Formula
    rngRange.NumberFormat = "General"
    rngRange.Formula = FArray
    End Sub
    

    Gruß Tino
    ES FUNKTIONIERT!!
    15.10.2010 11:44:54
    Marc
    O_O
    Das geht. Das geht ja tatsächlich. Ich glaub's ja nicht. Super Tino!!! Herzlichen Dank!!
    Beste Grüße, Marc

    308 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige