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

Case und Locked

Case und Locked
27.05.2017 15:45:01
Lumila
Hallo,
ich habe mal eine Frage zu unten stehendem Beispiel.
Warum muß ich die Locked Eigenschaft vor dem Ereignis eines Steuerelemtes setzen?
Sub Locked()
With UF1
For Each obj In .Controls
Select Case TypeName(obj)
Case "TextBox"
If obj.Name  "txtBLAnz" Then obj.Locked = True: obj.Value = ""  'Fehlermeldung
If obj.Name  "txtBLAnz" Then: obj.Value = "": obj.Locked = True 'Fehlermeldung
If obj.Name  "txtBLAnz" Then: obj.Locked = True: obj.Value = "" 'In Ordnung
Case "ComboBox": obj.ListIndex = -1: obj.Locked = True 'Fehlermeldung
Case "ComboBox": obj.Locked = True: obj.ListIndex = -1 'in Ordnung
End Select: Next obj
End With
End Sub

Danke!
Lg
Ludmila

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Dim Obj As Object hast Du drin ? owT
27.05.2017 15:57:00
Matthias
AW: Dim Obj As Object hast Du drin ? owT
27.05.2017 16:00:36
Lumila
Hallo Matthias,
Dim obj as Object habe ich drin.
Der obj.Name "txtBLAnz" ist auch korrekt.
Lg
Ludmila
Bei mir kommt kein Fehler ...
27.05.2017 16:05:55
Matthias
Hallo
Mein Bsp.
https://www.herber.de/bbs/user/113824.xlsm
Aber ein Nachbau ist meist anders als das Orginal
Lad doch Deine Mappe hier hoch.
Alles Überflüssige raus was nix mit dem Problem zu tun hat,
sensible Daten sowieso.
Gruß Matthias
AW: In Deinem Beispiel nicht, aber ...
27.05.2017 16:29:22
Lumila
Hallo Matthias,
nachfolgend der Code wo der Fehler erscheint.
Public Declare PtrSafe

Function ShowCursor Lib "user32.dll" (ByVal bShow As Long) As Long
Public Declare 

Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Dim wD as Object, wBL as Object, obj as Object
Dim sBL $
Dim lFZNRfind&, lSp as long

Sub BL_speichern()
Set wD = Workbooks(sD): Set wBL = wD.Worksheets(sBL) ' Workbook und die Tabelle
With wBL ' Die Tabelle Bauleitung
If lZNRfind > 0 Then GoTo Step1 ' Wenn BL bearbeitet wurde damit nicht neu eingetragen
If .Cells(2, 1) = "" Then 'Wenn noch nichts eingetragen wurde
lZNRfind = 2
Else
lZNRfind = .Cells(Rows.Count, 1).End(xlUp).Row + 1
End If
End With
Step1:
With UF1   'hier werden die CommandButton 1 - 7 ausgeblendet die sich im Frame "fraUF1"  _
befinden
For Each obj In .fraUF1.Controls
Select Case TypeName(obj)
Case "CommandButton": obj.Visible = False
End Select: Next obj
.fraUF1.BackColor = 49152 'grün  Der Frame wird von blau auf grün geändert
.lblUFTitel.Visible = False  ' Das Label welches die Bezeichnung Bauleitung angibt wird  _
ausgeblendet das Label "lblSpTitel" wird eingeblendet
With .lblSpTitel: .ForeColor = 16777215: .BackColor = 49152: .Top = 12: .Height = 18: . _
Width = UF1.fraUF1.Width - 10: .Left = 5: .Caption = "Die Bauleiterdaten werden gespeichert....": .Visible = True: End With
End With
DoEvents 'Sonst keine Anzeige des Label
Call ShowCursor(0) 'Der Mousepointer wird ausgeschaltet, es sollen keine Änderungen in  _
der Userform während des Speicherns erfolgen
Call Sleep(1000) 'sonst geht es zu schnell
On Error GoTo Aus 'Bei Fehler
With wBL 'Tabellenblatt mit Daten aus Userform füllen
lSp = Application.Match("ID", .Rows(1), 0): .Cells(lZNRfind, lSp) = lZNRfind
lSp = Application.Match("KDNR", .Rows(1), 0): .Cells(lZNRfind, lSp) = UF1.txtBL1.Value
lSp = Application.Match("NACHNAME", .Rows(1), 0): .Cells(lZNRfind, lSp) = UF1.txtBL2. _
Value
lSp = Application.Match("VORNAME", .Rows(1), 0): .Cells(lZNRfind, lSp) = UF1.txtBL3.Value
lSp = Application.Match("MOBIL", .Rows(1), 0): .Cells(lZNRfind, lSp).NumberFormat = "@": . _
Cells(lZNRfind, lSp) = UF1.txtBL4.Value
lSp = Application.Match("TELEFON", .Rows(1), 0): .Cells(lZNRfind, lSp).NumberFormat = "@": _
.Cells(lZNRfind, lSp) = UF1.txtBL5.Value
lSp = Application.Match("MAIL", .Rows(1), 0): .Cells(lZNRfind, lSp) = UF1.txtBL6.Value
lSp = Application.Match("NOTIZ", .Rows(1), 0): .Cells(lZNRfind, lSp) = UF1.txtBL7.Value
lSp = Application.Match("NAMEKOMPLETT", .Rows(1), 0)
If UF1.txtBL3.Value  "" Then 'Wenn bei Bauleiter Vor und Nachname eingetragen ist
.Cells(lZNRfind, lSp) = UF1.txtBL2.Value & " " & UF1.txtBL3.Value
Else
.Cells(lZNRfind, lSp) = UF1.txtBL2.Value 'Nur mit Nachnamen
End If
lSp = Application.Match("ANREDE", .Rows(1), 0): .Cells(lZNRfind, lSp) = UF1.cboBL2.Value
lSp = Application.Match("TITEL", .Rows(1), 0): .Cells(lZNRfind, lSp) = UF1.cboBL3.Value
lSp = Application.Match("POSITION", .Rows(1), 0): .Cells(lZNRfind, lSp) = UF1.cboBL4. _
Value
lSp = Application.Match("BRIEF", .Rows(1), 0): .Cells(lZNRfind, lSp) = UF1.cboBL5.Value
loEnde = .Cells(Rows.Count, 1).End(xlUp).Row 'sortieren
lSp = .Cells(1, Columns.Count).End(xlToLeft).Column
Range(.Cells(1, 1), .Cells(loEnde, lSp)).Sort _
Key1:=.Range("C1"), Order1:=xlAscending, _
Header:=xlYes, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom
For ii = 2 To loEnde   'Neue ID Nummer zuordnen
.Cells(ii, 1) = ii
Next ii
.Columns.AutoFit
End With
'        Call BL_lsv_vorbereiten  'Hier werden die ColumnHeaders.Add eingerichtet
'        Call BL_lsv_einlesen  'Hier wird die ListView eingelesen
With UF1   'Jetzt kommt der Teil wo die Fehelrmeldung erscheint, ´wenn ich die Locked  _
vor setzte
For Each obj In .Controls
Select Case TypeName(obj)
Case "TextBox"
If obj.Name  "txtBLAnz" Then: obj.Locked = True: obj.Value = ""
Case "ComboBox"
If obj.Name  "cboBL1" Then: obj.Locked = True: obj.ListIndex = -1
End Select: Next obj
.cmd3.Visible = False
End With
Workbooks(sD).Save ' ausgeblendete Mappe speichern
DoEvents ' wieder damit Text im Label angezeigt wird
With UF1
iZeit = 2
For ii = 1 To 4
Call Sleep(999)
With .lblSpTitel:  .ForeColor = 16777215: .Caption = "Die Speicherung der Bauleiterdaten  _
wurde abgeschlossen...( Diese Medung endet in " & iZeit & " sec. )": End With
iZeit = iZeit - 1
DoEvents
Next ii
.lblSpTitel.Visible = False
.fraUF1.BackColor = 16711680 'blau
.lblUFTitel.Visible = True
End With
Call Auswahl_speichern_anlegen 'Hier werden die Button wieder eingeblendet
Call ShowCursor(1)
lZNRfind = 0
UF1.txtruhe.SetFocus
Aus:
Set wD = Nothing: Set wData = Nothing
If Err.Number  0 Then MsgBox "Error: " & Err.Number & " " & Err.Description
End Sub
Vielleicht ist im Code ein Fehler.
Lg
Ludmila
Anzeige
ich bitte um Verständnis, das baue ich nicht nach.
27.05.2017 16:51:50
Matthias
Hallo
Zu viel unklar

  • Welche Zeile wird beim Fehler markiert

  • Welche Fehlermeldung kommt überhaupt


ich bitte um Verständnis, das baue ich nicht nach.
Ich lass offen.
Gruß Matthias
AW: ich bitte um Verständnis, das baue ich nicht nach.
27.05.2017 17:44:12
Lumila
Hallo Matthias,
ich habe den Teil fett herausgestellt.
Tausche ich obj.Locked = true und obj.value = "" dann läuft der Code einwandfrei.
Aber ich habe sowieso ein generelles Problem, sollte ich z.B. ein End With oder End if vergesse, auch wenn ich in einer sub Anweisung z.B. With UF1 txtbl1.value den Punkt vergesse ,dann kommt sofort die Fehlermeldung. Automatisierungsproblem. Der Klient wird getrennt. Excel stürzt ab.
With UF1 'Jetzt kommt der Teil wo die Fehelrmeldung erscheint, ´wenn ich die Locked _
vor setzte
For Each obj In .Controls
Select Case TypeName(obj)
Case "TextBox"
If obj.Name "txtBLAnz" Then: obj.Value = "": obj.Locked = True 'Hier kommt der Fehler wenn ich Fehler Code 91 Objectvariable oder With Blockvariable nicht festgelegt
Case "ComboBox"
If obj.Name "cboBL1" Then: obj.Locked = True: obj.ListIndex = -1
End Select: Next obj
.cmd3.Visible = False
End With
Lg
Ludmila
Anzeige
AW: ich bitte um Verständnis, das baue ich nicht nach.
27.05.2017 17:44:17
Lumila
Hallo Matthias,
ich habe den Teil fett herausgestellt.
Tausche ich obj.Locked = true und obj.value = "" dann läuft der Code einwandfrei.
Aber ich habe sowieso ein generelles Problem, sollte ich z.B. ein End With oder End if vergesse, auch wenn ich in einer sub Anweisung z.B. With UF1 txtbl1.value den Punkt vergesse ,dann kommt sofort die Fehlermeldung. Automatisierungsproblem. Der Klient wird getrennt. Excel stürzt ab.
With UF1 'Jetzt kommt der Teil wo die Fehelrmeldung erscheint, ´wenn ich die Locked _
vor setzte
For Each obj In .Controls
Select Case TypeName(obj)
Case "TextBox"
If obj.Name "txtBLAnz" Then: obj.Value = "": obj.Locked = True 'Hier kommt der Fehler wenn ich Fehler Code 91 Objectvariable oder With Blockvariable nicht festgelegt
Case "ComboBox"
If obj.Name "cboBL1" Then: obj.Locked = True: obj.ListIndex = -1
End Select: Next obj
.cmd3.Visible = False
End With
Lg
Ludmila
Anzeige
AW: ich bitte um Verständnis, das baue ich nicht nach.
27.05.2017 17:44:22
Lumila
Hallo Matthias,
ich habe den Teil fett herausgestellt.
Tausche ich obj.Locked = true und obj.value = "" dann läuft der Code einwandfrei.
Aber ich habe sowieso ein generelles Problem, sollte ich z.B. ein End With oder End if vergesse, auch wenn ich in einer sub Anweisung z.B. With UF1 txtbl1.value den Punkt vergesse ,dann kommt sofort die Fehlermeldung. Automatisierungsproblem. Der Klient wird getrennt. Excel stürzt ab.
With UF1 'Jetzt kommt der Teil wo die Fehelrmeldung erscheint, ´wenn ich die Locked _
vor setzte
For Each obj In .Controls
Select Case TypeName(obj)
Case "TextBox"
If obj.Name "txtBLAnz" Then: obj.Value = "": obj.Locked = True 'Hier kommt der Fehler wenn ich Fehler Code 91 Objectvariable oder With Blockvariable nicht festgelegt
Case "ComboBox"
If obj.Name "cboBL1" Then: obj.Locked = True: obj.ListIndex = -1
End Select: Next obj
.cmd3.Visible = False
End With
Lg
Ludmila
Anzeige
AW: ich bitte um Verständnis, das baue ich nicht nach.
27.05.2017 17:44:23
Lumila
Hallo Matthias,
ich habe den Teil fett herausgestellt.
Tausche ich obj.Locked = true und obj.value = "" dann läuft der Code einwandfrei.
Aber ich habe sowieso ein generelles Problem, sollte ich z.B. ein End With oder End if vergesse, auch wenn ich in einer sub Anweisung z.B. With UF1 txtbl1.value den Punkt vergesse ,dann kommt sofort die Fehlermeldung. Automatisierungsproblem. Der Klient wird getrennt. Excel stürzt ab.
With UF1 'Jetzt kommt der Teil wo die Fehelrmeldung erscheint, ´wenn ich die Locked _
vor setzte
For Each obj In .Controls
Select Case TypeName(obj)
Case "TextBox"
If obj.Name "txtBLAnz" Then: obj.Value = "": obj.Locked = True 'Hier kommt der Fehler wenn ich Fehler Code 91 Objectvariable oder With Blockvariable nicht festgelegt
Case "ComboBox"
If obj.Name "cboBL1" Then: obj.Locked = True: obj.ListIndex = -1
End Select: Next obj
.cmd3.Visible = False
End With
Lg
Ludmila
Anzeige
AW: ich bitte um Verständnis, das baue ich nicht nach.
27.05.2017 17:44:30
Lumila
Hallo Matthias,
ich habe den Teil fett herausgestellt.
Tausche ich obj.Locked = true und obj.value = "" dann läuft der Code einwandfrei.
Aber ich habe sowieso ein generelles Problem, sollte ich z.B. ein End With oder End if vergesse, auch wenn ich in einer sub Anweisung z.B. With UF1 txtbl1.value den Punkt vergesse ,dann kommt sofort die Fehlermeldung. Automatisierungsproblem. Der Klient wird getrennt. Excel stürzt ab.
With UF1 'Jetzt kommt der Teil wo die Fehelrmeldung erscheint, ´wenn ich die Locked _
vor setzte
For Each obj In .Controls
Select Case TypeName(obj)
Case "TextBox"
If obj.Name "txtBLAnz" Then: obj.Value = "": obj.Locked = True 'Hier kommt der Fehler wenn ich Fehler Code 91 Objectvariable oder With Blockvariable nicht festgelegt
Case "ComboBox"
If obj.Name "cboBL1" Then: obj.Locked = True: obj.ListIndex = -1
End Select: Next obj
.cmd3.Visible = False
End With
Lg
Ludmila
Anzeige
AW: ich bitte um Verständnis, das baue ich nicht nach.
27.05.2017 17:44:31
Lumila
Hallo Matthias,
ich habe den Teil fett herausgestellt.
Tausche ich obj.Locked = true und obj.value = "" dann läuft der Code einwandfrei.
Aber ich habe sowieso ein generelles Problem, sollte ich z.B. ein End With oder End if vergesse, auch wenn ich in einer sub Anweisung z.B. With UF1 txtbl1.value den Punkt vergesse ,dann kommt sofort die Fehlermeldung. Automatisierungsproblem. Der Klient wird getrennt. Excel stürzt ab.
With UF1 'Jetzt kommt der Teil wo die Fehelrmeldung erscheint, ´wenn ich die Locked _
vor setzte
For Each obj In .Controls
Select Case TypeName(obj)
Case "TextBox"
If obj.Name "txtBLAnz" Then: obj.Value = "": obj.Locked = True 'Hier kommt der Fehler wenn ich Fehler Code 91 Objectvariable oder With Blockvariable nicht festgelegt
Case "ComboBox"
If obj.Name "cboBL1" Then: obj.Locked = True: obj.ListIndex = -1
End Select: Next obj
.cmd3.Visible = False
End With
Lg
Ludmila
Anzeige
AW: ich bitte um Verständnis, das baue ich nicht nach.
27.05.2017 17:44:58
Lumila
Hallo Matthias,
ich habe den Teil fett herausgestellt.
Tausche ich obj.Locked = true und obj.value = "" dann läuft der Code einwandfrei.
Aber ich habe sowieso ein generelles Problem, sollte ich z.B. ein End With oder End if vergessen, auch wenn ich in einer sub Anweisung z.B. With UF1 txtbl1.value den Punkt vergesse ,dann kommt sofort die Fehlermeldung. Automatisierungsproblem. Der Klient wird getrennt. Excel stürzt ab.
With UF1 'Jetzt kommt der Teil wo die Fehelrmeldung erscheint, ´wenn ich die Locked _
vor setzte
For Each obj In .Controls
Select Case TypeName(obj)
Case "TextBox"
If obj.Name "txtBLAnz" Then: obj.Value = "": obj.Locked = True 'Hier kommt der Fehler wenn ich Fehler Code 91 Objectvariable oder With Blockvariable nicht festgelegt
Case "ComboBox"
If obj.Name "cboBL1" Then: obj.Locked = True: obj.ListIndex = -1
End Select: Next obj
.cmd3.Visible = False
End With
Lg
Ludmila
Anzeige
AW: Case und Locked
27.05.2017 17:30:18
Gerd
Hallo Ludmilla,
ich vermute, dass der Fehler an anderer Stelle im Code auftritt und nur "dort" angezeigt wird.
Stelle mal unter Extras-Optionen-Allgemein-Unterbrechen bei Fehlern
auf "In Klassemodul" u. teste im Einzelschritt-Modus.
Gruß Gerd
AW: Case und Locked
27.05.2017 18:02:40
Lumila
Hallo Gerd,
ich habe Deine Anweisung befolgt.
Ich hat die Option "bei jedem Fehler unterbrechen" aktiviert.
Im Einzelschritt-Modus läuft alles durch es wird kein Fehler angezeigt.
Habe die Optionen wieder zurück gestellt.
Ich habe nun die Case Anweisungen getauscht und nun läuft der Code.
Der Code bringt die Meldungen, speichert die Daten ab, schaltet die Meldungen wieder aus, setzt die angegeben Elemente auf true.
Lg
Ludmila
Anzeige
AW: Case und Locked
27.05.2017 18:03:46
Lumila
Hallo Gerd,
ich habe Deine Anweisung befolgt.
Ich hat die Option "bei jedem Fehler unterbrechen" aktiviert.
Im Einzelschritt-Modus läuft alles durch es wird kein Fehler angezeigt.
Habe die Optionen wieder zurück gestellt.
Ich habe nun die Case Anweisungen getauscht und nun läuft der Code.
Der Code bringt die Meldungen, speichert die Daten ab, schaltet die Meldungen wieder aus, setzt die angegeben Elemente auf true.
Lg
Ludmila
AW: Case und Locked
28.05.2017 09:17:07
Hajo_Zi
Hallo Ludmila,
was ist offen?
Ich habe nun die Case Anweisungen getauscht und nun läuft der Code

AW: Case und Locked
28.05.2017 10:40:23
Lumila
Hallo Hajo,
habe das Häckchen aus versehen aktiviert.
Ich werde Excel neu laden, den die Fehler welche bei mir passieren sind schon gravierend.
Danke!
Lg
Ludmila

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige