Wer kann mir helfen -bislang alles fehl geschlagen.... in VB


#1
ich habe eine Userform gebaut (Im Anhang anbei) bei der sollen mittels Comboboxen verschiedenen Auswahlen getroffen werden, bei der Anbieter Combobox sollen bei Auswahl eines Names das Bild (sind in der gleichen Mappe unter Bilder) des Anbieters im Image2 geladen werden und über die Textboxen die Adresse (ist unten auf der ersten Seite die Tabelle) eingetragen werden, es sind 4 einzelne Boxen (zusammengeführt), da ich das in einer Textbox mit Umbrüchen nicht hinbekommen habe.

dann soll in dem farbigen textboxen der aktuelle Ablesestand eingtragen werden und mit Speicher an die tabelle übertragen werden. In den Frames soll dann dann die letzte Eintagung eingelesen werden, und von der neuen Eintragung abgezogen werden, so das der altuelle Wert im Frame steht. Das Sowohl für Gas und auch für Strom.

ich habe so eineige Vorschläge mir angesehen, aber leider immer noch nicht das richtige bekommen. Ich bin da in VB wohl eingerostet.....

WER KANN MIR DABEI HELFEN ?????

Gruß Andreas
 

Anhänge

Yaslaw

n/a
Moderator
#4
Und was ist die genaue Frage?
In welcher Funktion ist wo das Problem.
Du schreibst was du willst und hast bereits irgendwelchen undokumentierten und unformatierten Code. Dieser beinhaltet auch so vielsagende Events wie "ComboBox1_Change" und Controls namens "label43" etc.
Ich sehe nicht, was der Code macht. Unmöglich.

Ich kann dein Code nicht ausführen. Kompilierungsfehler (ein End Sub zuviel). Und ann habe ich die Bilder und den Pfad nicht. Ev. noch mehr.
 
#5
die Bilder sind in der gleichen Arbeitsmappe unter Bilder abgespeichert.
das Datum wird nur auf Klick angezeigt nicht automatisch bei Aufruf der User form
Ich habe die Datei so hochgeladen, wie sie war. Wahrscheinlich sind da dutzende Fehler drin.
insgesamt soll die Datei die Daten über die Frame in eine Tabelle Eintragen die anderen Felder sollen aus Bestandsdaten (Tabelle) ausgelesen werden. dann soll im Frame folgendes eingelesen werden, der Vormonat Wert und der Wert des aktuellen Monats, dann soll der Verbrauch errechnet werden und abschließend sollen die Werte in eine Tabelle eingetragen abgespeichert werden.

Am Jahresende soll die Liste dann ausgedruckt werden und das Formular soll wieder einsatzbereit für das nächste Jahr sein, evtl. in form als sogenanntes update des Formulars.
 
#7
habe die Sache jetzt ein wenig umgestellt.

1. in Label soll bei Aufruf das aktuelle Datum stehen
2. in 2 unterschiedlichen Listboxen sollen Daten aus 1 Tabelle verschiedene Bereiche eingelesen werden per Commandbutton.
3. um den Eintrag "Vormonat" im Frame zu realisiersen soll in Listbox der entsprechende Eintrag per doppelclick in das Textfeld übertragen werden.
4. Mit dem Button berechnen soll der Verbrauch zwischen Vormonat und aktuellem Monat errechnet werden (je Frame 1x) und die Daten alle aus dem Frame sollen dann in der entsprechenden Tabelle abgespeichert werden, mit dem aktuellem Datum.
5. Das soll einmal für Strom und einmal für Gas funktionieren.
6. Am Ende soll das ´Komplette Jahr mit allen Eintragungen und Daten zum Zähler und Anbieter Vertragsnummer in einem Wordformular übertragen und gedruckt werden. (Falls möglich)
7. und ist es möglich bei Aufruf der Datei das User form direkt startet und die Excel Tabelle im Hintergrund weitestgehend unsichtbar bleibt?

ich entschuldige mich vorab für den Mist den ich fasch eingetragen habe, leider bekomme ich das nicht hin, da in den Foren und Internet jeder andere Lösungsvorschläge hat, die am Ende doch irgendwie nicht funzen....

Wäre schön wenn Du mir da helfen kannst, man lernt halt nie aus und da das schon relativ kompliziert ist kann ich für neue Projekte daraus nur lernen.

Gruß Andreas
 

Anhänge

Yaslaw

n/a
Moderator
#8
"1. in Label soll bei Aufruf das aktuelle Datum stehen"
Ich sehe weder auf dem GUI noch im restlichen Excel irgendwo den Begriff Label. Also, irgendwo soll ein Datum rein.

"2. in 2 unterschiedlichen Listboxen sollen..."
in 2 der Listboxen sollen Daten aus einer Quelle. Das hast du ja bereits

etc.

Die weiteren Punkte schaue ich mir mal gar nicht an, denn mir scheints, dass du da eine Lösung programmiert haben willst. Überall in deinem Text steht "sollte". Das klingt für mich nach einer Auftragsausschreibung und nicht nach eben mal ein bisschen Hilfe.

Grob geschätzt um das umzusetzen was ich denke, was du da haben willst (und das ist eine sehr vage Schätzung, da deine Beschreibung irgendwie nicht zu der angehängten Exceldatei passt), sind wir bei 3 bis 5 Arbeitstage. Stundenansatz bei einem Profi ab 150.- CHF aufwärts.
Ich schreibe das nicht als Werbung oder um dich abzuschrecken, sondern damit du verstehst, warum ich dir nicht einfach mal eben einen Code schreibe, der vielleicht deine Anfragen abdeckt und dann hier noch 20 mal hin und her diskutiert werden muss.
 
#9
Ich wollte das nicht programmiert haben nur Tips und codeschnipsel wie ich das gewünschte umsetzen kann. Wenn Du das hättest programmieren sollten, wo wäre den der Spass an der Sache und das ist ja auch für privat (mein Vater) und nicht für die Allgemeinheit gedacht.

Es ist nur weil ich jetzt schon so viel gelesen habe und auch ausprobiert aber es irgendwie nicht so funktioniert wie es sollte, deshalb meine Fragen. Da Du ja wie ich sehe viel mehr Ahnung von dem hast als ich.

Das Datum sollte in das umrandet Feld oben neben der Überschrift kann auch sein das es ein Textfeld ist.....auf Blick geht es nur nicht automatisch ....

Und was wichtig ist wie speichere ich die ganzen Eingaben sauber in die dazugehörigen Tabellen.

Gruss Andreas (Grüsse aus Norddeutschland)
 
#11
dann hilf mir bitte wie muss ich den Speicherbutton programmieren damit er in bestimmten Zeilen werte einträgt, aber über eine Schleife vorab checckt welches die richtige freie Zelle für die daten ist. Speichern tut es inzwischen aber die Abfrage bekomme ich nicht hin.
 
#12
Ist schwer mit deinen Angaben. Irgendie, nach einem unbekannten System soll er eine freie Zelle finden. Irgendwo in der Tabelle.
Irgendwas funkioert mit speichern. Die Exceldatei kannst du speichern? Oder was meinst du damit?

Nein, ich kann dir mit diesen Angaben nicht helfen.
Wird mal konkret. Mach mal einen Beschreibung die man Umsetzen kann.
Irgend in der Art: Beim drücken auf den Knopf ABC muss in der Spalte G die erste freie Zelle gefunden werden. Dort wird dann der Wert aus dem Formularfeld XY eingetragen.
 
#13
Ach so ok .....
Also beim Drücken eines Button so der mehrere Spalten auf Freizellen überprüfen und dann dort die Eingaben in den Textfelder in die Exceltabelle eintragen.

Oder ist es möglich das nach Drücken des Button folgendes passiert:
Das Datum wir abgefragt und dann wird in der entsprechenden Zeile (Monat) der Wert aus den Textboxen eingetragen.
 
#14
Welcher Button und welche Spalten?
Welche Eingaben?
Du willst ein Code? Wie soll man deine Anbgaben in ein Code fassen.

Alles ungetestet. Es ist nicht Möglich einen passenden Testfall nach deinen Beschreibungen aufzubauen.
Viel Spass damit
Visual Basic:
Function HierIrgendEinButten_click()   
    Dim cols As Range
    Dim rowNr As Long

    Set cols =  ActiveWorksheet.Columns(HierIrgenEineSpaltendefinition)
    'Etwa so oder ähnlich die erste freine Zeile finden. Die Logik ist für eine SPalte. Kommt halt drauf an, ob deine Spalten nebeneinander sind oder nicht
    rowNr = cols.Cells.SpecialCells(xlCellTypeLastCell).row
    ActiveWorksheet.cells(rowNr, cols.Column).value = IrgendeinFeldAusEinemFormular
  
End Function
Nachtrag:
Nicht falsch verstehen - ich würde gerne helfen. An Erfahrung mangelt es mir auch nicht. Aber ich kann einfach aus deinen Erläuterungen nix herauslesen, das ich sinnvoll zu Code wandeln kann. Wir schreiben da irgendwie an einander vorbei.
 
Zuletzt bearbeitet:
#15
Private Sub cmbkundendaten_Click()
Dim ff As Integer
Dim txt As String
txt = txtkundedaten.Text
ff = FreeFile
Open "C:\Users\Andreas.wiese\Documents\Test.txt" For Output As #ff
Print #ff, txt
Close #ff
End Sub

das funktioniert auf Click, wie stelle ich das an das immer ein neues text dokument mit neuen namen erstellt wird, weil so überschreibt der das dokument test.txt immer.

ich hoffe das ich diesmal genauer klassifiziert habe was ich möchte.
 
#16
Was? Ein Import ist auch noch dabei?

Naja, du must halt dein Dateinamen variabel machen. zb mit einem Zeitstempel oder einer ID oder was auch immer du da halt brauchst. Der Dateipfad ist auch nix anderes als ein String.
Visual Basic:
Dim strFilePath As String
strFilePath = "C:\Users\Andreas.wiese\Documents\Test_" & format(now, "yyyymmdd") & ".txt"
Open strFilePath For Output As #ff
 
#17
Private Sub cmbkundendaten_click()
Dim pfad As String
pfad = "C:\Users\Andreas.wiese\Documents\Kunden"
Dim i As Long
With Application.FileSearch
.LookIn = pfad
If .Execute > 0 Then i = .FoundFiles.Count
i = i + 1
ActiveWorkbook.SaveAs Filename:=pfad & "\" & "Kunden" & Format(i, "00000") & "-" & Format(Date, "DD-MM-YYYY") & ".txt"
End With
End Sub

irgendwie will das nicht funktionieren, welchen Fehler mache ich da?

bei deinem vorherigen Beispiel sagt er mir das:

-> bei Zeile 3 = Fehler 52
 
#18
1) Bitte Code in Code-Tags setzen . Hilft uns ungemein beim lesen von Code
2019-02-27_144100.jpg

2) Was ist Fehler 52? Gibts da auch ein Text dazu oder darf man den Auswürfeln?

3)Welches ist die Zeile 3? Ist es die Pfad= Zeile?
 
#19
Problem egal ob als txt oder xls ich kann im ordner Kunden die Dateien nicht öffnen und wenn nur als Buchstabensalat, was kann ich da machen und das in klarschrift zu lesen.

zeile 3 = CODE]Open strFilePath For Output As #ff[/CODE] = Laufzeitfehler