Registriert seit: 27.04.2014
Version(en): Privat: Office Home & Business 2019 / Arbeit: MS365
Hallo liebe Excelgemeinde,
habe schone wieder eine Frage :)
Mit folgendem Code(Codeteil):
Code: Dim ctrElement As Control
For Each ctrElement In Me.Controls
If TypeName(ctrElement) = "TextBox" Then
If ctrElement.Value = "" Then
MsgBox "Bitte alle Pflichtfelder ausfüllen!" ', 48
Controlsgelb
ctrElement.SetFocus
Exit Sub
End If
End If
Next
prüfe ich ob alle meine TextBoxen in meiner Userform befüllt sind! Soweit so gut!
Ich möchte aber dass alle meine Textboxe und meine Comboboxen geprüft werden aber mit jeweils Ausnahmen und zwar TextBox 1,2, 57, 58, 59 und Combobox 2 und 3 sollen nicht geprüft werden!
Vielen lieben Dank schon im Voraus
VG
Alexandra
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Alexandra,
ich favorisiere für solche Sachen die "Select Case-Anweisung".
Code: Dim ctrElement As Control
For Each ctrElement In Me.Controls
Select Case ctrElement.Name
Case "TextBox1", "TextBox2", "TextBox57", "TextBox58", "TextBox59", "ComboBox2", "ComboBox3"
Case Else
If ctrElement.Value = "" Then
MsgBox "Bitte alle Pflichtfelder ausfüllen!" ', 48
Controlsgelb
ctrElement.SetFocus
Exit For
End If
End Select
Next ctrElement
Gruß Uwe
Registriert seit: 27.04.2014
Version(en): Privat: Office Home & Business 2019 / Arbeit: MS365
Hallo Uwe,
vielen Dank für deine Antwort!
Leider bekomme ich da immer eine Fehlermeldung! Laufzeitfehler 438! Objekt unterstützt diese Eigenschaft oder Methode nicht!
Woran liegt das?
Hier mein ganzer Code:
Code: Private Sub cmdÄnderungenSpeichern_Click() 'Änderungen speichern
Dim var
Dim rngID As Range
Dim sSearch As String
var = MsgBox("Sind Sie sicher, dass Sie die Änderungen zum Artikel" & " " & TextBox3.Value & " " & "speichern möchten? ", vbYesNo)
If var = 7 Then
Exit Sub
Else
Dim ctrElement As Control
For Each ctrElement In ArtikelDB.Controls
Select Case ctrElement.Name
Case "TextBox1", "TextBox2", "TextBox57", "TextBox58", "TextBox59" ', "ComboBox2", "ComboBox3"
Case Else
If ctrElement.Value = "" Then
MsgBox "Bitte alle Pflichtfelder ausfüllen!" ', 48
Controlsgelb
ctrElement.SetFocus
Exit For
End If
End Select
Next
sSearch = TextBox3 'Eintrag an die Variable übergeben
Set rngID = ThisWorkbook.Sheets("produkte").Columns("C:C").Find(What:=sSearch, LookAt:=xlWhole, LookIn:=xlValues) 'In Spalte A nach dem Wert in der Variable suchen und festhalten
End If
With ThisWorkbook.Sheets("produkte")
ArtikelDB.TextBox58.Text = Environ("Username") & " " & Date & " " & Time
For y = 1 To 29
.Cells(rngID.Row, y) = ArtikelDB.Controls("Textbox" & y).Value
Next y
For y = 30 To 33
.Cells(rngID.Row, y) = CCur(ArtikelDB.Controls("Textbox" & y))
Next y
For y = 34 To 51
.Cells(rngID.Row, y) = ArtikelDB.Controls("Textbox" & y).Value
Next y
For y = 52 To 55
.Cells(rngID.Row, y) = CCur(ArtikelDB.Controls("Textbox" & y))
Next y
For y = 56 To 58
.Cells(rngID.Row, y) = ArtikelDB.Controls("Textbox" & y).Value
Next y
End With
Dim Datensatz As Long
Application.ScreenUpdating = True
Datensatz = ThisWorkbook.Sheets("produkte").Cells(Rows.Count, 3).End(xlUp).Row
lstArtikel.Clear
For i = 2 To Datensatz
If ThisWorkbook.Sheets("produkte").Cells(i, 3).Value <> "" Then _
ArtikelDB.lstArtikel.AddItem (ThisWorkbook.Sheets("produkte").Cells(i, 3).Value) ' & " - " & (ThisWorkbook.Sheets("produkte").Cells(i, 4).Value)
Next
lstArtikel.Enabled = True
lstArtikel.SetFocus
cmdArtikelSuchen_Click
MsgBox "Änderungen zum Artikel" & " " & TextBox3.Value & " " & "wurden erfolgreich gespeichert"
OriginalColor
ControlsOnlyView
End Sub
Vielen Dank
VG
Alexandra
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Alexandra,
Du hast leider nicht mitgeteilt, an welcher Stelle genau eine Fehlermeldung kommt.
Darum ins Blaue:
Code: Dim ctrElement As Control
For Each ctrElement In Me.Controls
If TypeName(ctrElement) = "TextBox" Or TypeName(ctrElement) = "ComboBox" Then
Select Case ctrElement.Name
Case "TextBox1", "TextBox2", "TextBox57", "TextBox58", "TextBox59", "ComboBox2", "ComboBox3"
Case Else
If ctrElement.Value = "" Then
MsgBox "Bitte alle Pflichtfelder ausfüllen!" ', 48
'Controlsgelb
ctrElement.SetFocus
Exit For
End If
End Select
End If
Next ctrElement
Gruß Uwe
Registriert seit: 27.04.2014
Version(en): Privat: Office Home & Business 2019 / Arbeit: MS365
Hallo Uwe,
habe es hinbekommen!
Vielen lieben Dank :)
LG
Alexandra
Registriert seit: 27.04.2014
Version(en): Privat: Office Home & Business 2019 / Arbeit: MS365
Hallo zusammen,
habe nochmals den anschließenden Code eingeschaltet und irgendwie funktioniert dieser hier nicht:
Code: Sub Controlsgelb() 'Textboxen färben wenn leer beim Anlegen oder Ändern eines Datensatzes
Dim ctrElement As Control
For Each ctrElement In Me.Controls
If TypeName(ctrElement) = "TextBox" Or TypeName(ctrElement) = "Combobox" Then
If ctrElement.Value = "" Then
ctrElement.BackColor = &HC0FFFF
Else
ctrElement.BackColor = &HE0E0E0
End If
End If
Next ctrElement
End Sub
Es werden nur die TextBoxen gelb, aber die Comboboxen nicht!! Weiß jemand warum, was muss ich da ändern!?
Vielen Dank im Voraus
LG
Alexandra
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Alexandra,
ohne weitere Maßnahmen ist die Groß-/Kleinschreibung zu beachten.
Wenn Du ... = "ComboBox" Then
schreibst, funktioniert es schon.
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• cysu11
Registriert seit: 27.04.2014
Version(en): Privat: Office Home & Business 2019 / Arbeit: MS365
Hallo Uwe,
oh Mann, so einfach?!
Jetzt funktioniert es natürlich!! :)
Vielen lieben Dank
LG
Alexandra
Registriert seit: 27.04.2014
Version(en): Privat: Office Home & Business 2019 / Arbeit: MS365
Hallo zusammen,
noch eine Frage zu diesem Code:
Code: Dim ctrElement As Control
For Each ctrElement In Me.Controls
If TypeName(ctrElement) = "TextBox" Or TypeName(ctrElement) = "ComboBox" Then
If ctrElement.Value = "" Then
Controlsgelb
MsgBox "Bitte alle Pflichtfelder ausfüllen!"
ctrElement.SetFocus
Exit Sub
End If
End If
Next
Hier wird jede TextBox oder Combobox geprüft! Wie müsste es aussehen, wenn TextBox 60 und TextBox 68 nicht berücksichtig werden sollen!
Vielen dank
VG
Alexandra
Registriert seit: 14.04.2014
Version(en): 2003, 2007
Hallo Alexandra,
ok, ist ein wenig warm, deswegen kann man einiges übersehen, aber weiter oben hatte Uwe für
einen solchen Fall schon eine Lösung aufgezeigt.
Hier jetzt mit den gegebenen Vorgaben:
Code: Sub Controlsgelb() 'Textboxen färben wenn leer beim Anlegen oder Ändern eines Datensatzes
Dim ctrElement As Control
For Each ctrElement In Me.Controls
If TypeName(ctrElement) = "TextBox" Or TypeName(ctrElement) = "ComboBox" Then
Select Case ctrElement.Name
Case Is = "TextBox1", "TextBox2"
Case Else
If ctrElement.Value = "" Then
ctrElement.BackColor = &HC0FFFF
Else
ctrElement.BackColor = &HE0E0E0
End If
End Select
End If
Next ctrElement
End Sub
Hallo noch mal,
ich sehe gerade, dass Hajo mit Deinem Case Else wieder Probleme bekommen hat.
Die Lösung für das dortige Problem ist relativ einfach.
Karins Lösung ist doch sehr einfach und gut, hatte es anfangs falsch gedeutet. ist halt warm, ne..:19:
So gehst auch:
Du hast ein allgemeines Modul, in welchem Du eine Public Variable benennst, so z.B:
Code: Option Explicit
Public aktiveForm As Object
In jeder der Userformen schreibst Du im Activate Ereignis, folgendes:
Zitat:Private Sub UserForm_Activate()
Set aktiveForm = Me
.....
Und die Ereignisse in ThisWorkbook sehen dann so aus:
Code: Private Sub Workbook_WindowActivate(ByVal Wn As Window)
aktiveForm.Show
End Sub
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
aktiveForm.Hide
End Sub
Für alle interessierten, die Frage von Alexandra ist hier zu finden:
schaut mal hier
Gruß Atilla
Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:1 Nutzer sagt Danke an atilla für diesen Beitrag 28
• cysu11
|