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

Visuelle Anzeigefenster in Userform für IST Werte

Visuelle Anzeigefenster in Userform für IST Werte
15.10.2016 00:01:12
Andreas
Guten Abend,
eine mittelschwere- für mich allein wahrscheinlich eine unlösbare VBA Aufgabe.
Habe bereits mit dem Projekt angefangen, jedoch hier komme ich so nicht weiter.
Nun muß ich das Vorhaben so gut wie möglich beschreiben.
Möchte gern drei größere farbliche Anzeigen in eine Userform1 einarbeiten, die den Ist Wert von Zellen nach bestimmten Werten vergleicht, um somit eine Visualisierung als Auswertung der aktiven Zeile im Tabellenblatt " Bearbeiten " zu haben.
Die drei Zellen sollen sofort die Farbe wechseln, sobald eine Änderung in den Abfragezellen die durch die Userform1 durchgeführt wird.
Im Regelfall sind die Zellen G-N bereits gefüllt. Auch dann soll schon die Anzeige in der Userform zu sehen sein, sobald ich mich in der aktiven Zeile befinde. Wird nun über die CMD 15/16/18 doch eine Änderung in den Abgefragten Zellen durchgeführt, soll dies auch sofort in der Userfom die Änderung übernommen werden.
Habe mal eine Beispielmappe mit hochgeladen. Userform1 ist über Doppelklick Spalte C im Blatt "Bearbeiten" startbar.
https://www.herber.de/bbs/user/108798.xlsm
Dort steht auch noch mal die genaue Abfrage der Zellen.
Kann jemand helfen? Vielleicht ein Makro für erst mal eine Farbe, damit ich es erweitern kann? Wie bekomme ich die drei Anzeigefenster in die Userform?
Geht das überhaupt?
Danke für die Mühe.
MfG Andi
Werde dazu Sicherlich noch eine Hilfstabelle Anlegen müssen.
Kurz gesagt:
Drei größere farbliche Anzeigen in meiner Userform1
1. Auswertung der aktiven Zeile im Tabellenblatt" Bearbeiten"
2. Sollen den IST Wert ( also die zur Zeit dort befindlichen Werte überprüfen, und anzeigen)
3. Wird über Die Userform die Bedingung geändert, soll dies auch sofort zur Änderung in der Anzeige kommen
4. Für die Anzeige sollen nur folgende Zellen ausgewertet werden G-N ohne J;K
Habe eine Beispielmappe mit hochgeladen.

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Visuelle Anzeigefenster in Userform für IST Werte
15.10.2016 11:09:14
fcs
Hallo Andi,
es ist immer blöd, wenn in einem Userform bzw. einer Datei ein Teil der Makros nicht vorhanden ist, die ggf. zum Testen erforderlich sind.
Wie bekomme ich die drei Anzeigefenster in die Userform?
Was meinst du mit Anzeigefester?
Du fügst "einfach" im Userform 3 Label-Steuerelemente ein und gibst ihnen die Namen
lblAnzeige1, lbkAnzeige2 und lblAnzeige3
Mit dem Auswerte-Makro unten wird dann die Farbe der 3 Labels gesteuert.
Eine zusätzliche Farbe ist noch erforderlich, wenn keiner der 5 von dir vorgegebenen Zustände zutrifft, weil die Eingaben unvolständig/abweichend sind. Ich hab hier gelb genommen.
Das Auswerte-Makro musst du am Ende jedes Makros starten, das die relevanten Werte in den Spalten G:I und L:N ändert, oder das die Daten aus der aktuellen Zeile ins Formular lädt.
z.B.:
Private Sub UserForm_Initialize()
UserForm1.TextBox1.Value = ActiveCell.Address
UserForm1.TextBox19.Value = ActiveCell.Offset(0, -1).Address
UserForm1.TextBox15.Value = ActiveCell.Offset(0, 1).Address
UserForm1.TextBox2.Value = ActiveCell.Offset(0, 3).Address
UserForm1.TextBox3.Value = ActiveCell.Offset(0, 4).Address
UserForm1.TextBox5.Value = ActiveCell.Offset(0, 5).Address
UserForm1.TextBox9.Value = ActiveCell.Offset(0, 5).Address
UserForm1.TextBox7.Value = ActiveCell.Offset(0, 6).Address
UserForm1.TextBox12.Value = ActiveCell.Offset(0, 11).Address
UserForm1.TextBox14.Value = ActiveCell.Offset(0, 10).Address
Call prcAuswertungZeile
End Sub
LG
Franz
Auswertemakro - im Userform-Code einfügen

Private Sub prcAuswertungZeile()
Dim Zeile As Long
Dim varR_SL, varR_ISO, varI_EA, varI_BL, varBem, varPruef
Dim wks As Worksheet
Dim intZustand As Integer
Dim lngRot&, lngSchwarz&, lngOliv&, lngWeiss&, lngGelb&
lngRot = RGB(255, 0, 0)
lngSchwarz = RGB(0, 0, 0)
lngOliv = RGB(112, 173, 71)
lngWeiss = RGB(255, 255, 255)
lngGelb = RGB(255, 255, 0)
Set wks = ActiveSheet
Zeile = ActiveCell.Row
'Werte aus aktiver Zeile einlesen
With wks
varR_SL = .Cells(Zeile, 7).Text
varR_ISO = .Cells(Zeile, 8).Text
varI_EA = .Cells(Zeile, 9).Text
varI_BL = .Cells(Zeile, 12).Text
varBem = .Cells(Zeile, 13).Text
varPruef = .Cells(Zeile, 14).Text
End With
intZustand = 0
If varR_SL = "" And varR_ISO = "" And varI_EA = "" And varI_BL = "" _
And varBem = "" And arPruef = "" Then
intZustand = 5
ElseIf varR_SL = "" And varR_ISO = "" And varI_EA = "" And varI_BL = "" _
And varBem = "Defekt" And LCase(varPruef) = "nein" Then
intZustand = 4
ElseIf varR_SL = "" And varR_ISO = "" And varI_EA = "" And varI_BL = "" _
And varBem = "Sichtprüfung" And LCase(varPruef) = "ja" Then
intZustand = 3
ElseIf varR_SL = "" And varR_ISO = "> 1,0" And varI_EA = " 1,0" And varI_EA = "" And varI_BL = "" _
And varBem = "" And LCase(varPruef) = "ja" Then
intZustand = 1
End If
Select Case intZustand
Case 0
Me.lblAnzeige1.BackColor = lngGelb: Me.lblAnzeige2.BackColor = lngGelb: _
Me.lblAnzeige3.BackColor = lngGelb
Case 1
Me.lblAnzeige1.BackColor = lngRot: Me.lblAnzeige2.BackColor = lngOliv: _
Me.lblAnzeige3.BackColor = lngRot
Case 2
Me.lblAnzeige1.BackColor = lngOliv: Me.lblAnzeige2.BackColor = lngRot: _
Me.lblAnzeige3.BackColor = lngRot
Case 3
Me.lblAnzeige1.BackColor = lngRot: Me.lblAnzeige2.BackColor = lngRot: _
Me.lblAnzeige3.BackColor = lngOliv
Case 4
Me.lblAnzeige1.BackColor = lngSchwarz: Me.lblAnzeige2.BackColor = lngSchwarz: _
Me.lblAnzeige3.BackColor = lngSchwarz
Case 5
Me.lblAnzeige1.BackColor = lngWeiss: Me.lblAnzeige2.BackColor = lngWeiss: _
Me.lblAnzeige3.BackColor = lngWeiss
End Select
End Sub

Anzeige
AW: Visuelle Anzeigefenster in Userform
15.10.2016 18:37:20
Andreas
Danke Franz,
herzlichen Dank für Deine Mühe- die du dir gemacht hast- Respekt- sieht sehr gut aus.
Habe im Userform 3 Label-Steuerelemente eingefügt, ihnen die Namen
lblAnzeige1, lblAnzeige2 und lblAnzeige3 gegeben, den Code "Call prcAuswertungZeile" unter Private Sub UserForm_Initialize()und
Private Sub prcAuswertungZeile()in ein neues Modul kopiert. Leider habe ich noch keine farbigen Label`s,
Muß ich da noch etwas in den Eigenschaften der Label´s ändern, oder fehlt noch ein anderer Code?
Ich probiere aber fleißig weiter. Ich hoffe ich habe die richtigen Labels genommen?
Danke noch mal.
Grüße Andi
Anzeige
AW: Visuelle Anzeigefenster in Userform
15.10.2016 22:41:27
fcs
Hallo Andi,
das Makro "Private Sub prcAuswertungZeile()"
musst du im Code-Modul des Userforms einfügen
Wenn du es in einem allgemeinen Modul einfügen willst, dann musst du das "Private" weglassen und in allen Zeilen "Me." durch "Userform1." ersetzen bzw. ein entsprechendes With-Konstrukt verwenden.
Gruß
Franz
'Auswerte-Makro in einem allgemeinen Modul
Sub prcAuswertungZeile()
Dim Zeile As Long
Dim varR_SL, varR_ISO, varI_EA, varI_BL, varBem, varPruef
Dim wks As Worksheet
Dim intZustand As Integer
Dim lngRot&, lngSchwarz&, lngOliv&, lngWeiss&, lngGelb&
lngRot = RGB(255, 0, 0)
lngSchwarz = RGB(0, 0, 0)
lngOliv = RGB(112, 173, 71)
lngWeiss = RGB(255, 255, 255)
lngGelb = RGB(255, 255, 0)
Set wks = ActiveSheet
Zeile = ActiveCell.Row
With wks
varR_SL = .Cells(Zeile, 7).Text
varR_ISO = .Cells(Zeile, 8).Text
varI_EA = .Cells(Zeile, 9).Text
varI_BL = .Cells(Zeile, 12).Text
varBem = .Cells(Zeile, 13).Text
varPruef = .Cells(Zeile, 14).Text
End With
intZustand = 0
If varR_SL = "" And varR_ISO = "" And varI_EA = "" And varI_BL = "" _
And varBem = "" And arPruef = "" Then
intZustand = 5
ElseIf varR_SL = "" And varR_ISO = "" And varI_EA = "" And varI_BL = "" _
And varBem = "Defekt" And LCase(varPruef) = "nein" Then
intZustand = 4
ElseIf varR_SL = "" And varR_ISO = "" And varI_EA = "" And varI_BL = "" _
And varBem = "Sichtprüfung" And LCase(varPruef) = "ja" Then
intZustand = 3
ElseIf varR_SL = "" And varR_ISO = "> 1,0" And varI_EA = " 1,0" And varI_EA = "" And varI_BL = "" _
And varBem = "" And LCase(varPruef) = "ja" Then
intZustand = 1
End If
With UserForm1
Select Case intZustand
Case 0
.lblAnzeige1.BackColor = lngGelb: .lblAnzeige2.BackColor = lngGelb: _
.lblAnzeige3.BackColor = lngGelb
Case 1
UserForm1.lblAnzeige1.BackColor = lngRot: .lblAnzeige2.BackColor = lngOliv: _
.lblAnzeige3.BackColor = lngRot
Case 2
UserForm1.lblAnzeige1.BackColor = lngOliv: .lblAnzeige2.BackColor = lngRot: _
.lblAnzeige3.BackColor = lngRot
Case 3
UserForm1.lblAnzeige1.BackColor = lngRot: .lblAnzeige2.BackColor = lngRot: _
.lblAnzeige3.BackColor = lngOliv
Case 4
UserForm1.lblAnzeige1.BackColor = lngSchwarz: .lblAnzeige2.BackColor = lngSchwarz:  _
_
.lblAnzeige3.BackColor = lngSchwarz
Case 5
UserForm1.lblAnzeige1.BackColor = lngWeiss: .lblAnzeige2.BackColor = lngWeiss: _
.lblAnzeige3.BackColor = lngWeiss
End Select
End With
End Sub

Anzeige
AW: Visuelle Anzeigefenster in Userform
16.10.2016 16:50:15
Andi
Hallo Franz,
danke, das du noch mal drüber geschaut hast. Nun geht es. Ja es lag am 'Private-und Me.' wäre ich nie darauf gekommen.
Eine Frage hätte ich doch noch...
Kann das Makro auch selbständig alle 10 sec. von allein starten?
Oder wäre es zweckmäßiger, das Makro neu starten zu lassen, wenn in den Zellen G:M eine Änderung vorgenommen wurde- um so zu sagen eine sofort Änderungsanzeige zu erhalten.?-
Das wäre natürlich die vollkommene Lösung. So wird die Farbe der drei Labels sofort geändert- noch während ich in der Bearbeitungszeile bin.
Die Zellen G:N werden auf jeden Fall mit den 15; 16; 18 CMD's sofort Eingetragen.
Aber auch die 'Weiter CMD'Nr.19 sollte dann das Makro mit starten.
Private Sub CommandButton19_Click()
Dim z As Long
Dim r As Long
Range(TextBox19.Value) = TextBox17.Value
Range(TextBox15.Value) = TextBox16.Value
' ich kommentiere das mal aus...
'z = Cells(ActiveCell.Row, "A")               'aktuelle Lfd. Nr
'r = ZeilenNr(z + 1)                          'zutreffende Zeilen# der nächsten Lfd. Nr
'Cells(r, ActiveCell.Column).Select           'auf nächste Zeile positionieren
' ... weil das so gedacht war:
Cells(ActiveCell.Row, 1).Interior.Color = vbGreen ' erst das Grün
If (ActiveCell.Row Mod 1)  0 Then
ActiveCell.Offset(1).Select
Else
ActiveCell.Offset(1).Select
End If
End Sub

Private Sub CommandButton15_Click()
Cells(ActiveCell.Row, 7).Resize(1, 13).ClearContents ' löschen von Zellen
Range(TextBox5.Value) = TextBox6.Value
Range(TextBox3.Value) = TextBox4.Value
Range(TextBox2.Value) = ComboBox8.Text
Range(TextBox12.Value) = ComboBox10.Value
End Sub
Private Sub CommandButton16_Click()
Cells(ActiveCell.Row, 5).Resize(1, 13).ClearContents ' löschen von Zellen
Range(TextBox9.Value) = TextBox10.Value
Range(TextBox7.Value) = TextBox8.Value
Range(TextBox2.Value) = ComboBox8.Text
Range(TextBox12.Value) = ComboBox10.Value
End Sub
Private Sub CommandButton17_Click()
Range(TextBox14.Value) = TextBox13.Value
End Sub
Private Sub CommandButton18_Click()
Cells(ActiveCell.Row, 7).Resize(1, 13).ClearContents ' löschen von Zellen
Range(TextBox12.Value) = ComboBox10.Value
Range(TextBox2.Value) = ComboBox8.Text
Range(TextBox14.Value) = TextBox13.Value
End Sub

- ist eine Abfrage der Zellen G:M auf Veränderung möglich, damit sofort das Makro neu startet?
Danke erst mal.
LG Andi
Anzeige
AW: Visuelle Anzeigefenster in Userform
16.10.2016 18:18:24
fcs
Kann das Makro auch selbständig alle 10 sec. von allein starten?

Man kann Makros automatisch starten mit der OnTime-Methode
Dann muss man aber bei der Programmierung sehr genau darauf achten, dass die Objekte korrekt angesprochen werden und beim Schliessen der Datei muss die Aktualisierung abgeschaltet werden. Sonst kmmt es zu Fehler im Makroablauf.
Oder wäre es zweckmäßiger, das Makro neu starten zu lassen, wenn in den Zellen G:M eine Änderung vorgenommen wurde- um so zu sagen eine sofort Änderungsanzeige zu erhalten.?-
JA
Dazu musst du "nur" vor der Zeile
End Sub

jedes Makros, das die Werte verändert, die Anweisung
   Call prcAuswertungZeile

einfügen. Das hatte ich dir aber schon in einer der Antworten geschrieben.
Die Zellen G:N werden auf jeden Fall mit den 15; 16; 18 CMD's sofort Eingetragen.
Aber auch die 'Weiter CMD'Nr.19 sollte dann das Makro mit starten.

siehe oben.
- ist eine Abfrage der Zellen G:M auf Veränderung möglich, damit sofort das Makro neu startet?
Im Prinzip Ja. Mit dem Worksheet_Change-Ereignismakro kann man Änderungen(Dateneingaben) in Zellen eines Tabellenblattes überwachen.
Aber in Bezug auf das Userform solltest du die Aktualisierung der Label-Farben gezielt über die Makros im Userform ausführen wie oben beschrieben - ist ja wohl nicht so schwer.
LG
Franz
Anzeige
AW: Visuelle Anzeigefenster in Userform
16.10.2016 20:18:23
Andi
Danke Franz,
das sind klare verständliche Anweisungen. Denke ich bekomme es nun hin.
Schönen Abend noch.
LG Andi

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige