Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1948to1952
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

Felder ausgrauen und sperren per Modul - Fehleranalyse

Felder ausgrauen und sperren per Modul - Fehleranalyse
05.10.2023 16:01:15
LordWuffel
Hallo miteinander,

ich habe mir ein modul geschrieben, dass Eingabefelder ausgrauen und sperren soll, wenn die eingabe nicht sinnvoll ist (es fehlt das entsprechende Bauteil)
den Farbwechsel macht das Modul, das sperren der Eingabefelder auch aber ich bekomme den "Schreibschutz" nicht zurückgesetzt [. locked = false]




Sub flipflop()

Dim color As String
Dim schutz As Boolean

'Aus der Excel-Tabelle wird ein Wert geholt, die Zelle Tabelle1!D1 wurde in "Bauteil" umbeannnt
if Range("Bauteil").Value 1 Then
color = "&H80000011"
schutz = True
Else: color = "&H80000008"
schutz = False
End If

With Main
.Label165.ForeColor = color
'zig Textboxen: Farbe wechseln.. -> geht
.Label183.ForeColor = color
'hier werden die textboxen gesperrt und die Schriftfarbe angepasst , naja soll...
With .Art_Anschl_315_zen
.Locked = schutz
.ForeColor = color
End With
'eine Ausgabe um den zustand von "Schutz" zu sehen, als check, weil es nicht ging
schutz = MsgBox(schutz, vbOKOnly, "Autausch aufgerufen")

With .Art_Anschl_315_ex
.Locked = schutz
.ForeColor = color
End With
' noch für ca 30 Felder wiederholt nach dem Muster, for...to schleife klappt glaube ich nicht weil die namen nicht "zählbar" sind

End With 'für main.
End Sub

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Felder ausgrauen und sperren per Modul - Fehleranalyse
05.10.2023 16:37:33
Oberschlumpf
Hi,

änder mal...


Else: color = "&H80000008"
schutz = False
End If

...um in...


Else
color = "&H80000008"
schutz = False
End If

...hilfts?

Nein? Dann zeig bitte per Upload eine Bsp-Datei mit Bsp-Daten.

Ciao
Thorsten
AW: Felder ausgrauen und sperren per Modul - Fehleranalyse
05.10.2023 16:59:57
Yal
Hallo,

ich gehe davon aus, "Label165" sind benannte Zellen.
Wenn die Zellen, die es zu prüfen gibt, ein getrennte Namensmsuter haben, dann kann man gezielt, diese in einer Schleife ansprechen:

Sub flipflop()

Dim Farbe As String
Dim Schutz As Boolean
Dim N As Name

'Prüfen und setzen
If Range("Bauteil").Value 1 Then
Farbe = "&H80000011"
Schutz = True
Else
Farbe = "&H80000008"
Schutz = False
End If

'Anwenden
For Each N In Application.Names
If N.Name Like "Label*" Or N.Name Like "Art_Anschl_315_*" Then
With Main.Range(N.Name)
.ForeColor = Farbe
.Locked = Schutz
End With
End If
Next
End Sub


VG
Yal
Anzeige
AW: Felder ausgrauen und sperren per Modul - Fehleranalyse
05.10.2023 17:18:36
LordWuffel
hm.. label165 usw sind die labels die vba zu den eingabefeldern (textboxen) erstellt hat auf dem userform . coole idee, einen ähnichen namen zu vergeben und die schleife zu nutzen. hatte mit einem counter und fortlaufenden lablnummern herumprobiert aber es nicht hinbekommen. kann ich nochmal gebrauchen.

der wechsel des schreibschutzes klappt aber nicht

gruß wuffel
AW: Felder ausgrauen und sperren per Modul - Fehleranalyse
05.10.2023 17:49:57
Yal
Hallo Wuffel,

die Namen "Labelxx" deuten auf die Verwendung von Label-Objekt. Diese haben den Eigenschaft "Locked" nicht.

Ich gehe eher davon aus, dass es sich um TextBox-Objekt. Neben "Locked" haben diesen auch den Eigenschaft "Enabled".
Aber Locked sollte schon funktionieren.

Genauere Untersuchungen können nur am Patient gemacht werden, äh pardon, an der Datei. Wenn diese ins Praxis äh, ins Forum hochgeladen wird.

VG
Yal
Anzeige
AW: Felder ausgrauen und sperren per Modul - Fehleranalyse
05.10.2023 17:59:53
Ulf
Hi,


Sub flipflop()
Dim ctr As MSForms.Control
Dim txt As MSForms.TextBox
Dim lbl As MSForms.Label
Dim strColor As String
Dim schutz As Boolean
'false 0=1
If 1 = 1 Then
strColor = "&H80000011"
schutz = True
Else
strColor = "&H80000008"
schutz = False
End If
'ggf. Focus auf Button /Dummy-Label o.ä setzen
'Me.CommandButton1.SetFocus
For Each ctr In Main.Controls
'ggf. Focus auf Button /Dummy-Label o.ä setzen
'If Me.ActiveControl = ctr Then
'End If
Select Case TypeName(ctr)
Case "Label"
Set lbl = ctr
lbl.ForeColor = strColor
Case "TextBox"
Set txt = ctr
With txt
.ForeColor = strColor
.Locked = schutz
End With
Case Else
End Select
Next ctr
End Sub

hth
Ulf
Anzeige
AW: Felder ausgrauen und sperren per Modul - Fehleranalyse
05.10.2023 18:40:29
LordWuffel
Also, ich bin über die Lösung gestolpert...

If CDec(Range("calc_Box_H_Stk_DRT").Value)  1 Then


verstehe ich zwar nicht, das Problem habe ich fast bei jedem Rechenwert gehabt, ist also ein Grundsatzproblem bei dem ich Nachhilfe brauche:

Exceltabelle mit benannten Zellen "speichert" Werte -, die beim Programmieren meist integer oder short integer wären weil alles "Stück Bauteil" sind.

die hole ich in die userform zum anzeigen und ändern

als Beispiel für das Einlesen der Textbox Höhe:


Hoehe.value = range("Bauteil_Hoehe").value


und schreibe bei Änderung aus der userform in die Exceldatei zurück:


Private Sub hoehe_Change()
On Error Resume Next
Range("Bauteil_Hoehe").Value = cdec(hoehe.value)
End Sub


und ständig scheint der zurückgeschriebene Wert keine Zahl zu sein
Das hat mich schon stunden gekostet bis ichs begriffen habe, weil der Debugger of an ganz anderen Stellen angehalten ist

ich probiere gleich mal aus, ob
If Range("calc_Box_H_Stk_DRT").Value = "0" Then


funktioniert hätte, dann kann ich ja sicher sagen, dass der Zahlenwert als string abgelegt war. im Excel erke ich nichts davon, noch nutze ich ein anderes Tabellenblatt um z.B. Staffelpreise zu bestimmen - aber das möchte ich auch nach VBA ziehen- und da funktioniert alles problemlos


Gruß und dank ans Forum

Wuffel

Anzeige
AW: Felder ausgrauen und sperren per Modul - Fehleranalyse
05.10.2023 20:10:34
LordWuffel
hey Ulf, verstehe ich das richtig, dass dein code alle Elemente ändert?
AW: Felder ausgrauen und sperren per Modul - Fehleranalyse
06.10.2023 00:28:10
Ulf
Hi,
ja abhängig vom Elementtyp, anpassbar wäre es bspw mit Ausnahmen
ctr.Name>"UNVERÄNDERT" ... oder ctr.Tag>... bzw lbl.Eigenschaft oder txt.Eigenschaft
Gruß
Ulf

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige