Daten aus Listbox in Textbox,dort Anzeigen und ändern, anschließend zurückschreiben i
#31
Verwende eien 'intelligente Tabelle.
Verwende ein Tabstrip im Userform.

Warum ein Feld Monat ? Das datum enthällt doch schon die Monat ?

Mann braucht kein Inputkontrolle wenn man beim speichern Punkte durch kommata und kommata von Punkten ersetzt.

Verzichte auf Ausrufezeichen und Meldungen.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top
#32
z.B. schau mal


Angehängte Dateien
.xlsb   __Fachleistungsstunden_snb.xlsb (Größe: 44,98 KB / Downloads: 11)
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Top
#33
Hallo snb,

habe deine Datei anschauen lassen. Diese weicht sehr stark von der eigentlichen Eingabemaske ab.

Sinn und Zweck der Eingabemaske war es (damit auch gleich deine Frage warum ein Feld Monat und dann ein Feld Datum):

1.) Die Eingabemaske wird von den durchführenden der Fachleistungsstunden beim Besuch des Klienten ausgefüllt.  Da diese nicht immer die ein und die selbe Person sind, mussen Sie nach anklicken des Klienten eine
     komplette Übersicht haben wann was behandelt wurde und wie lange.

2.) Da diese Personen nicht unbedingt Computer oder Excel Spezialisten sind müssen so viel wie mögliche Fehleingaben ausgeschlossen werden, da aus den erfassten Daten dann die Meldung an die
     Leistungsträger erfolgt.

3.) Das Feld Monat zeigt die Monate laufend ab dem Bewilligungs Datum bis zum Bewilligungsende an. In Jedem Monat müssen die Fachleistungserbringer 2 Termine mit Behandlungen tätigen. Diese Termine sind
     willkürlich mit dem Clienten zu vereinbaren. Somit muss abgefangen werden das der Fachleistungserbringer im Bewilligungs Monat z,B, Oktober 2018 kein Leistungsdatum November 2019 einträgt. Da  die
     Bewilligungszeiträume von Client zu Client im Bereich von - bis unterschiedlich sind ist abhängig von der Antragsstellung. Mit meiner Maske Sieht der Anwender direkt um Welchen Monat es geht und ob da schon       
     irgend etwas durchgeführt wurde.. Die Maske verändert auch, wenn bei einem anderen Clienten der Bewilligungs Monat "von" anders ist das Monatsfeld und zeigt direkt ab Bewilligungsmonat fortlaufend die jeweiligen
     Monate an.

Also um es kurz zu sagen es wird eine Maske benötigt in welcher egal welcher Anwender alles wichtige im Überblick gezeigt wird und dem Anwender möglichst keine Gelegenheit gegeben wird falsche eingaben zu tätigen.

Dieser gesamt Überblick über den komplett bewilligten Zeitraum gibt Deine Maske bedauerlicher Weise nicht her.

In der Maske läuft bis jetzt alles bis auf die 2 offene Abfragen.

Das der komplette Code nicht schön oder zu umfangreich ist ist mir klar. Dass vieles im Hintergrund zu kompliziert abläuft ist mir auch klar. Dass man den gesamten Code mit variablen extrem verkürzen kann ist mir auch klar. Jedoch ist dies eine Arbeit  -nach und nach-  wenn es erst einmal, und das bedauerlicher weise von mir nicht beeinflussbar, komplett läuft.

Wie bereits von Anfang an beschrieben bin ich nicht nur blind sondern bin mich gerade erst am einarbeiten in der Arbeit mit einer Userform und Ihrer Programierung. Es wurde also alles aus Codeschnipsel zusammengebaut.

Für die Feinarbeit habe ich später noch viel Zeit. Nur Rückt das nächste Meldedatum an die jeweiligen Leistungsträger immer näher und ich möchte einfach nicht mehr mit jeder Menge manuell geschriebener Stundenzettel zusammen fassen und auf das Meldeformular übertragen.

Sei also nicht Böse, wenn ich bzw. 2 der zukünftigen Anwender deine Userform für nicht Zweckmäßig halten.

Ich möchte Dir auch für Deine Anregungen und zugespielten Ideen danken. Dies hat Dich bestimmt einige Zeit gekostet.


Also vielen Lieben Dank an Dich
Top
#34
Hallo Andre,

vielen lieben Dank, ich hoffe dass ich deinen letzten Beitrag mit Code verstanden habe und werden Ihn versuchen mit meiner Schreibassistenz am Sonntag umzusetzen.
Ich melde mich dann umgehend um denn Stand der Dinge mitzuteilen.

Bis spätestens Montag

Gruß

Jürgen

PS.: allem Anschein nach, hat ein blindes Huhn ein Zweites Korn gefunden  :18:
Top
#35
Hi Jürgen,

dann wäre das wohl ein Doppelkorn - möglichst gut gekühlt. :05:
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top
#36
Hallo Jürgen,

wenn was nicht geht, einfach nochmal fragen. Ich weiß nicht, was da mit Assistent alles möglich ist und was nicht Sad
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#37
Hallo Andre,

ich bin absolut Happy, es funzt.

Vielen Dank

Doch habe ich ein neues Problem bekommen, wenn eine Abfrage gestartet wird mit einer Schleife und er kommt dann an eine Textbox die überhaupt nicht da ist - dann knallt es.
Es ist wohl beim erstellen der Maske passiert, das TextBoxen angelegt wurden und Irgendwann gelöscht wurden.
Weis nicht ob ich das richtig erkläre deshalb mal der Code:

PHP-Code:
Dim k As Long
For 17 To 128
If Controls("TextBox" k) = "" Then
    Controls
("TextBox" k).SetFocus
    Exit Sub
Else
 
   CommandButton4.SetFocus
End 
If
Next 

Das funktioniert auch bis er mit dem "k" an eine Textbox kommt, die nicht mehr Existent ist. Als Beispiel er prüft die Textboxen 1,2,3,4,5, und dann kommt er an die Textbox6 aber die ist nicht mehr existen, geht er in die Fehlermeldung / Debugmodus und meldet Object konnte nicht gefunden werden.

Kann man das abfangen?

oder muss ich jetzt irgend welche Textboxen  mit der Textboxbezeichnung anlegen? versteckt anlegen

Gruß

Jürgen

PS.: Kann man sich das nicht Anzeigen lassen in einer Übersicht welche Textboxen überhaupt in der Userform da sind incl. den Frames? Manuell alles zu Durchforsten ist ja Wahnsinn.
Top
#38
Hallo Jürgen,

wenn Du die Objekte auf Deinem Userform listen willst könntest DU eine Schleife über alle Objekte des Userforms laufen lassen und diese z.B. auf einem Blatt ausgeben.

Ich hab hier aber erst mal einen Ansatz für das eigentliche Problem:

Code:
For k = 17 To 128
  On Error Resume Next
  If Me.Controls("TextBox" & k) Is Nothing Then
    'Textbox k existiert nicht!
    On Error GoTo 0
  Else
    'Textbox k existiert
    If Controls("TextBox" & k) = "" Then
        Controls("TextBox" & k).SetFocus
        Exit Sub
    Else
        CommandButton4.SetFocus
    End If
End If
Next
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#39
(16.03.2019, 12:09)schauan schrieb: Hallo Jürgen,

ich hab mal hier ein Muster vom Userform-Code für die Verwendung von 3 Klassenmodulen.
Dein clsTb1 habe ich 3x verwendet und jeweils clsTb1, 2 und 3 genannt. Entsprechend ist es 3x dimensioniert mit 3 zugeordneten Objekten und im Initialise wird es 3x verwendet.

Dazu habe ich die 4 Zeilen von v= bis zum Schleifenende kopiert und bei den objTb die Nummer dran gehängt. Bei v= stimmen natürlich die Zahlen der TextBoxen nicht, aber zum Test hab ich jeweils nur zwei bei mir angelegt.
Die erste Reihe brauchst Du nur von Deinem Original kopieren und bei den anderen weiß ich nicht und hab jetzt auch nicht gesucht, welche dazu gehören. Aber vielleicht hast Du die Definition noch in Deinem fehlerhaften Code und brauchst die auch nur einfach zu kopieren.  

Da Dein Fehlercode nicht enthalten ist, kann ich natürlich nicht sagen, was da verkehrt lief.    

Code:
Option Explicit

Dim objTB1() As New clsTb1
Dim objTB2() As New clsTb2
Dim objTB3() As New clsTb3

Private Sub UserForm_Initialize()
'Textboxen fuer nummerische Eingabe und Komma festlegen
  Dim v As Variant, l As Long
  v = Array(1, 2) 'Zustaendige Textboxen festlegen
  ReDim objTB1(UBound(v))
  For l = LBound(v) To UBound(v)
      Set objTB1(l).myTB = Me.Controls("TextBox" & v(l))
  Next l
  v = Array(3, 4) 'Zustaendige Textboxen festlegen
  ReDim objTB2(UBound(v))
  For l = LBound(v) To UBound(v)
      Set objTB2(l).myTB = Me.Controls("TextBox" & v(l))
  Next l
  v = Array(5, 6) 'Zustaendige Textboxen festlegen
  ReDim objTB3(UBound(v))
  For l = LBound(v) To UBound(v)
      Set objTB3(l).myTB = Me.Controls("TextBox" & v(l))
  Next l

'---------------------------------------------------------------------
'Platzhalter fuer Textboxen mit numerischer Eingabe und Punkt festlegen
End Sub
 
Ich muss nochmal auf Dich zukommen.

Habe Deinen Code wie Du es beschrieben hast alles Übernommen und nur geändert so wie Du es in Bezug auf "v" geändert. Läuft auch hervorragend. 
Bzw. ist gelaufen bis ich auf die wahnsinnige Idee kam - weil die Assistenzkräfte über die Msg Boxen meckerten - eine Textbox auf der Userform einzustellen, 
in welcher die selben Meldungen wie in den MsgBoxen angezeigt werden.
Das funzt soweit mit allen Prüfungen welche außerhalb der Klassenmodule statt finden also direkt in den Textboxen beim verlassen.

Ich bekomme es nicht nur auf die Reihe wie man anstelle des Textes in der MsgBox diesen Text aus dem Klassenmodul an die Textbox übergibt.

Habe es so gemacht wie im Userform Code aber im Klassenmodul weckert er dann immer weil er das Objekt nicht findet

mein Code: äh Sorry Dein Code  Blush


Code:
Public WithEvents myTB As MSForms.TextBox

Private Sub myTB_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
 Select Case KeyAscii
   Case 44, 48 To 57               'Festlegen der Zugelassenen Zeichen 0-9 und Komma
     ' tue nichts
   Case Else
     KeyAscii = 0
     'MsgBox "Es sind nur Zahlen und Punkt erlaubt!" & vbLf & "oder" & vbLf & "Lassen Sie das Feld leer", _
     vbInformation, "Hinweis"
     TextBox137.BackColor = &HFF&
     TextBox137 = "Es sind nur Zahlen und" & vbLf & "    Komma erlaubt!" & vbLf & "oder" & vbLf & "Lassen Sie das Feld leer"
 End Select
End Sub

Hier meckert er immer bei: Dateien bitte im Forum hochladen: https://www.clever-excel-forum.de/thread-326.html

 und hier das 

Die TextBox ist vorhanden, und aus anderen Textboxen bei Fehleingabe macht es auch die Anzeige in der Textbox

Stehe auf dem Schlauch

Gruß

Jürgen
Top
#40
Photo 
Nachtrag, da ich Absturzbilder ungewollt über einen anderen Server eingestellt habe.

Also hier nochmal Bild 1 

   

und 2 

   

Grüße Jürgen
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste