Zum Inhalt springen

PromiseYou

Mitglieder
  • Gesamte Inhalte

    46
  • Benutzer seit

  • Letzter Besuch

  1. ne sorry ... aber das ist mir alles was zu schwammig :/ in dem was ich bekomme hab steht drin, das form soll auftauchen wenn in B9 nix drin ist .. dafür habe ich eine lauffähige version geschickt (also den grundcode) und ich möchte wetten, dass ich dein problem gelöst bekomme, aber mit diesen angaben ist es nicht möglich und wie in einem beitrag schon vorher gesagt, ich glaube schon dass du programmieren kannst, jedoch hast du scheinbar noch nicht viel mit VB bzw VBA gearbeitet. sämtliche anpassungen an ein einem formular können nur zur laufzeit des formulars durchgeführt werden man kann jedoch ein formular zur laufzeit als object erstellen, und dieses dann zur laufzeit erst gestalten (also auch label, schalter und boxen hinzufügen), hierzu empfehle ich dir jedoch entsprechende dokumentionen und hier war nicht viel zu schreiben ... im open hab ich lediglich ' für REM gesetzt, und das geremte habe ich in das initialize verschoben und leicht angepasst ... also wenig wirklich neu zu schreiben lediglich "Tabelle1" habe ich statt des orignaltabellenblatts genommen.
  2. also nochmal im workbook_open wird das Formular in den Speicher geladen und die ablaufsteuerung an dieses übergeben PUNKT hier wird nix gefüllt entschieden oder sonst was ... sondern nur der aufruf ! nun sind wir beim Formular das beginnt mit dem initialize (da sind wir uns ja auch einig) also lege ich dann doch hier fest, ob das formular gezeigt wird - wenn es gezeigt wird, welche schalter müssen sichtbar sein - welche textboxen müssen wie vorgefüllt werden - .... - .... und die voraussetzungen wie das formular reagieren soll schaffe ich ebenfalls hier. so kann ich nun hier sagen: schau in zelle b9, steht da was, dann übertrage die tabelle hier ins form steht da nix, dann belege alles mit default aber wenn ich das hier grad alles so lese, denke ich eher, du hast nen allgemeines problem mit dem verständnis bei der programmierung und VBA. in VBA (VB) nimmt man teils andere wege, als man es in zB in C++ lösen würde
  3. Wie ich mir schon gedacht habe ... alles halb so wild es läuft wie folgt: Private Sub Workbook_Open() '##################################### '##################################### '### If the cell B9 is not filled, ### '### the UserForm1 will be shown. ### '##################################### '##################################### UserForm1.Show 'If Sheets("Tabell1").Cells(9, 2) = "" Then ' UserForm1.Show ' Else ' End 'End If End Sub und in Private Sub UserForm_initialize() If Sheets("Tabelle1").Cells(9, 2) = "" Then UserForm1.Show Else Unload UserForm1 End If '########################## '########################## '### Filling the fields ### '########################## '########################## nach diesen Änderungen ging es bei mir sofort, und es ist genau wie ich beschrieben habe. im Woorkbook_open NUR das show ohne Bedingungen erst dann im Form weiter abfragen ... mit dem unload kannst dann auch wieder das Form beenden (cmdEnd)
  4. das ist vollkommen klar, dass du im workbook_open noch nicht auf das form zugreifen kannst ... denn es ist ja noch nicht da .. erst nach dem .show wird das Form in den Speicher geladen. Ab hier geht der Focus dann auf das INITIALIZE ... hier werden nun alle Textfelder, Listboxen etc. vorbelegt nach End SUB wartet Windows (Excel) auf eine Interaktion des Users (Forms) Sollte das Füllen des Forms zeitmäßig sehr Lange dauern rate ich dazu, nach der Variabelendef in der INITIALZE das Form auf invisible zu setzen ... alles füllen, und dann wieder auf visible zurück .. dann geht das füllen bestimmter Steuerelemente auch zügiger, als wenn sie auf dem Form (oder das Form selber) sichtbar ist. also in der WorkBook_open() NUR Form1.show sonst nix ALLES andere was im Form gemacht werden soll über das INITIALIZE() ansonsten kann ich auch nur sagen, dann hätte ich gern mal die Datei
  5. was willst du denn in dem Form ansteuern ? Das würde ich in der "UserForm_Initialize()" des Forms machen. Also Einstellellungen für Bezeichner oder sonstiges was man sich aus einer INI oder aus der REG holt. Auch Verbindungen zu Datenbanken oder so öffne ich erst in dieser SUB. Bei mir steht immer nur das Form.show im WorkBook_Open() Dann schalte ich beim Initialize das visible von Excel auf false. Man kann ja auch im "Private Sub UserForm_Initialize()" form1.visible = false als erstes setzen dann wird das Form erst garnicht sichtbar
  6. Also da gibt es schon was, wie man beim start einer Arbeitsmappe ein Form öffnet. Private Sub Workbook_Open() UserForm1.Show [modal/unmodal] End Sub Hier wird beim Öffnen das Form1 aufgerufen, und die Ablaufsteuerung wird an die SUB main() übertragen sofern vorhanden, ansonsten wartet Windows auf Dialogstuerung aus dem Formular.
  7. hmmmm... versuch doch mal das show im zusammenhang mit modal bzw. unmodal kann mir zwar nicht erklären warum es ohne nicht gehen sollte, aber vllt. hilft es ja dennoch ..
  8. Hier ist wohl die Überschrift was falsch :/ So wie ich das lese, hast du hier weniger ein Problem mit dem Objekt, als vielmehr mit den Stringfunktionen. Ich hab dir mal den "Hilfetext" hier hin kopiert, der ist eigentlich selbsterklärend somit sind chr() und chr$() (mehr oder weniger) identisch, und das mit der Hexadezimalregelung findet (fast) überall anwendung.
  9. Hallo zusammen Ich verzweifele Gerade, und hoffe, dass mir hier jemand eine Hilfe geben kann. Beschreibung der Situation: Aus einer Datenbank werden Daten ausgelesen, und auf diverse Tabellenblätter einer neuen Mappe aufgeteilt. Die neuen Blätter werden aus einer Vorlage erstellt, wo bereits eine Seitenformatierung stattgefunden hat. Diese Seiten werden auch anstandsfrei in die neue Arbeitsmappe aufgenommen, und auch gespeichert. Öffnet man nun diese Datei, und geht Arbeitsblatt für Arbeitsblatt durch, sind in den Seiteneinstellungen auch die Werte drin, die in der Vorlage vorgegeben waren (als Beispiel halt DIN A4 Landscape mit Fit auf eine Seitenbreite und Ränder auf 1,5 cm reduziert) Problem: Wenn ich nun mehrere Tabellenblätter dieser Mappe aktiviere, und dann über "Drucken" - "Auswahl" diese Blätter ausdrucken möchte, wird nur das erste Blatt formatiert, die nachfolgenden Blätter werden dann entsprechend der "WindowsVoreinstellung" (DinA4 normal, ohne Fit und Ränder mit 2 - 2,5 cm) Auch der Eintrag in der Private Sub Workbook_BeforePrint(Cancel As Boolean) If Not ActiveSheet.PageSetup.PrintTitleRows = "$1:$8" Then ActiveSheet.PageSetup.PrintTitleRows = "$1:$8" If Not ActiveSheet.PageSetup.PrintTitleColumns = "" Then ActiveSheet.PageSetup.PrintTitleColumns = "" If Not ActiveSheet.PageSetup.PrintArea = "" Then ActiveSheet.PageSetup.PrintArea = "" If Not ActiveSheet.PageSetup.LeftHeader = "" Then ActiveSheet.PageSetup.LeftHeader = "" If Not ActiveSheet.PageSetup.CenterHeader = "" Then ActiveSheet.PageSetup.CenterHeader = "" If Not ActiveSheet.PageSetup.RightHeader = "" Then ActiveSheet.PageSetup.RightHeader = "" If Not ActiveSheet.PageSetup.LeftFooter = "" Then ActiveSheet.PageSetup.LeftFooter = "" If Not ActiveSheet.PageSetup.CenterFooter = "" Then ActiveSheet.PageSetup.CenterFooter = "" If Not ActiveSheet.PageSetup.RightFooter = "" Then ActiveSheet.PageSetup.RightFooter = "" If Not ActiveSheet.PageSetup.LeftMargin = Application.InchesToPoints(0.590551181102362) Then ActiveSheet.PageSetup.LeftMargin = Application.InchesToPoints(0.590551181102362) If Not ActiveSheet.PageSetup.RightMargin = Application.InchesToPoints(0.590551181102362) Then ActiveSheet.PageSetup.RightMargin = Application.InchesToPoints(0.590551181102362) If Not ActiveSheet.PageSetup.TopMargin = Application.InchesToPoints(0.590551181102362) Then ActiveSheet.PageSetup.TopMargin = Application.InchesToPoints(0.590551181102362) If Not ActiveSheet.PageSetup.BottomMargin = Application.InchesToPoints(0.590551181102362) Then ActiveSheet.PageSetup.BottomMargin = Application.InchesToPoints(0.590551181102362) If Not ActiveSheet.PageSetup.HeaderMargin = Application.InchesToPoints(0.511811023622047) Then ActiveSheet.PageSetup.HeaderMargin = Application.InchesToPoints(0.511811023622047) If Not ActiveSheet.PageSetup.FooterMargin = Application.InchesToPoints(0.511811023622047) Then ActiveSheet.PageSetup.FooterMargin = Application.InchesToPoints(0.511811023622047) If Not ActiveSheet.PageSetup.PrintHeadings = False Then ActiveSheet.PageSetup.PrintHeadings = False If Not ActiveSheet.PageSetup.PrintGridlines = False Then ActiveSheet.PageSetup.PrintGridlines = False If Not ActiveSheet.PageSetup.PrintComments = xlPrintNoComments Then ActiveSheet.PageSetup.PrintComments = xlPrintNoComments If Not ActiveSheet.PageSetup.PrintQuality(1) = 600 Then ActiveSheet.PageSetup.PrintQuality(1) = 600 If Not ActiveSheet.PageSetup.PrintQuality(2) = 600 Then ActiveSheet.PageSetup.PrintQuality(2) = 600 If Not ActiveSheet.PageSetup.CenterHorizontally = False Then ActiveSheet.PageSetup.CenterHorizontally = False If Not ActiveSheet.PageSetup.CenterVertically = False Then ActiveSheet.PageSetup.CenterVertically = False If Not ActiveSheet.PageSetup.Orientation = xlLandscape Then ActiveSheet.PageSetup.Orientation = xlLandscape If Not ActiveSheet.PageSetup.Draft = False Then ActiveSheet.PageSetup.Draft = False If Not ActiveSheet.PageSetup.PaperSize = xlPaperA4 Then ActiveSheet.PageSetup.PaperSize = xlPaperA4 If Not ActiveSheet.PageSetup.FirstPageNumber = xlAutomatic Then ActiveSheet.PageSetup.FirstPageNumber = xlAutomatic If Not ActiveSheet.PageSetup.Order = xlDownThenOver Then ActiveSheet.PageSetup.Order = xlDownThenOver If Not ActiveSheet.PageSetup.BlackAndWhite = False Then ActiveSheet.PageSetup.BlackAndWhite = False If Not ActiveSheet.PageSetup.Zoom = False Then ActiveSheet.PageSetup.Zoom = False If Not ActiveSheet.PageSetup.FitToPagesWide = 1 Then ActiveSheet.PageSetup.FitToPagesWide = 1 If Not ActiveSheet.PageSetup.FitToPagesTall = False Then ActiveSheet.PageSetup.FitToPagesTall = False End Sub bringt nicht den gewünschten Erfolg. Wie kann ich erreichen, dass wirklich JEDE Seite formatiert wird ? Mein erster Versuch war, jedes einzelene Blatt mit diesen Parametern zu "befüllen", was jedoch zu lange dauert (ist ja auch überall zu lesen). Trotz der enormen "Mehrzeit" ist der Erfolg ausgeblieben, so dass ich dann umgestellt habe auf eine vorformatierte Vorlage und dann nur noch die Angaben überprüfe. Die evt. Mechanismen müssen abwärtskompatibel sein bis EXCEL 2000 :floet:
  10. Hallo Zusammen Ich hab da was, wo ich nicht weiß, ob es hier auch was zu "automatisieren" geht. Suchen in verschiedensten Foren hat mir leider keinen Erfolg gebracht Es geht um den Ausdruck von Ettiketten unter Word, mit der Serienbrieffunktion. Ich hab also ein Dokument, wo mir die Ettiketten alle aufgezeigt werden, und das Dokument ist mit unserer Datenbank verknüpft. Ich bekomme auch alle Daten wie ich sie haben möchte, jedoch die Registratur möchte es etwas anders haben Im Datensatz besteht die "Bezeichnung" aus 2 Teilen "xxx yyyyyyyyy - Name Vorname". Bisher habe ich immer beides auf das Ettikett gedruckt, nun kommt aber Registratur und sagt, ich möchte nur Name und Vorname dort stehen haben. Wie kann ich nun es einrichten, dass mir Word beim "füllen" sofort den ersten Teil der Bezeichnung verschluckt (wie beim Split mit delimiter = "-" und dann das 2. Item)? Die zweite Frage ist, wie kann ich Word sagen, dass er nicht links oben anfangen soll (bei einem angefangenem Bogen mit Adressettiketten), sondern bei einem anderem Ettikett. Ich habe noch keinen Code, da ich bisher nur die Word-Eigenen Funktionen angewendet habe (Serienbrieffunktion). Möchte wenn möglich auch auf Code verzichten, vermute aber, dass es ohne nicht geht ... Fals es nicht ohne geht, dann müßte ich wissen, wie ich das Formular (Ettikettenvorlage) am Besten einrichte (Bezeichner der Felder oder ähnliches), damit ich aus dem Code auch auf das richtige Ettikett springe Hat da wer was, oder kann helfen?
  11. Hab ne Lösung gefunden. Habe jeweils die drei Steuerelemente (txt, lbl und img) als Gruppe zusammengefasst und dann via Tag einzeln durchnummerriert. Nun fange ich den Tag ab und positioniere entsprechend den Cursor im Recordset.
  12. Wenn's was länger dauert, nimm dir nen snickers.jpg

  13. Hallo zusammen diesmal hab ich nen Prob, wo ich nicht weiß, ob es dafür wirklich ne Lösung gibt. Mein Problem: Ich habe ein Frame mit verschiedenen Elementen (Label, Picture, Textbox und CommandButton). Dieses Auflistung möchte ich nun durchlaufen und jedem dieser Elemente etwas aus der Datenbank zuweisen (außer den Buttons) Es gibt also immer ein zusammengehöriges Set bestehend aus ImageBox, Label und TextBox Wenn ich nun die Controls durchlaufe ist leider die Reihenfolge leider nicht "sortiert" (siehe unten). Wie kann ich nun erreichen, dass die Controls in einer benutzerdefinierten Reihenfolge abgefragt (durchlaufen) werden? Ich habe mir die Reihenfolge mal im Direktfenster ausgegeben. Danach habe ich gedacht, ich könnte es mit dem Tabulator ändern, habe jedem Element einen neuen TabIndex gegeben, leider jedoch ohne Änderung der Ausgabe. Gibt es einen Weg, die Reihenfolge so zu ändern, dass wenn ich die Controls durchlaufe, ich bei lblFoto1 anfange, über imgFoto1 zum txtFoto1Bem komme. Wann die Button kommen ist mir schnurz, die werden eh rausgefiltert beim füllen. Der Erfolg soll sein, dass ich nicht bei jedem Control.Element den Courser in der Datenbank neu positionieren muß, sondern erst nach dem eintrag der 3 relevanten Daten. Im zweitem Fenster ist der Code aus meinem Projekt For Each Element In userform1.frameFotos.Controls() : ? element.name : next lblFoto1 imgFoto1 cmdFotoVor cmdFotoZurück cmdNeuFoto imgFoto2 imgFoto3 imgFoto4 imgFoto5 imgFoto6 lblFoto5 lblFoto3 lblFoto4 lblFoto6 lblFoto2 txtFoto1Bem txtFoto2Bem txtFoto3Bem txtFoto4Bem txtFoto5Bem txtFoto6Bem Private Sub BilderZuweisen() Dim i As Integer Dim Label As String Dim Element As Object frameFotos.Visible = False For Each Element In frameFotos.Controls If Left$(Element.Name, 3) = "img" Then If Not rstFotos.EOF And Not rstFotos.BOF Then Element.Picture = LoadPicture(CurrentProject.Path & "\Bilder\" & rstFotos!LinkAdr) rstFotos.MoveNext Else Element.Picture = LoadPicture("") End If ElseIf Left$(Element.Name, 3) = "lbl" Then If Not rstFotos.EOF And Not rstFotos.BOF Then Element.Caption = rstFotos!Bemerkung rstFotos.MoveNext End If End If Next ' Datensatzsteuerung einstellen If rstFotos.AbsolutePosition > 5 And rstFotos.AbsolutePosition < rstFotos.RecordCount Or rstFotos.BOF Then cmdFotoVor.Enabled = True Else cmdFotoVor.Enabled = False End If If rstFotos.AbsolutePosition > 6 Or rstFotos.EOF Then cmdFotoZurück.Enabled = True Else cmdFotoZurück.Enabled = False End If frameFotos.Visible = True End Sub edith sagt: Access Version 2000 (Vers 9 ) mit ExcelForms (also nicht die "StandartForms" aus Access)
  14. hallo Saifai, hat was gedauert bis ich mich wieder Zeit hatte mich weiter dran zu setzen. Ich mache es so ähnlich wie Du es geschrieben hast. (halt angepasst an meine Bedingungen), aber das Kreiseln zwischen den Controls innerhalb von Frames geht dann doch ganz gut. Viel zu schreiben und zu überwachen, aber es geht.
  15. dann werden im bios alle parameter auf ein maß gebracht, wo es laufen muß. die performance kann erstmal sehr darunter leiden, da auch der speicher (ram) entsprechend langsam angesprochen wird. sollte dann der fehler immernoch auftauchen, dann solltest du den rechner wirklich zum "doc" bringen, denn dann liegt da was im sterben, oder ist gar schon gestorben. eine weitere fehlerquelle ist auch ein verstopfter Lüfter/Kühler (auch / gerade zwischen kühlrippen). denke da auch die sommertemperaturen wo weniger wärme abgeführt werden kann. jedoch vorsicht bei der reinigung der lüfter (sehr schnell lagerschaden). ich empfehle einen regulierbaren staubsauger, den auf geringste leistung, dann mit einem langhaarigem flachpinsel vorsichtig ausbürsten richtung saugrohr. nicht mit dem saugrohr über den lüfter dass er sich dreht, die drehzahl überlastet schnell mal die lager und dass das alles ohne stecker in der steckdose zu erfolgen hat, denke ich, muß ich hier nicht erwähnen das sind dann noch mal nen paar ansatzpunkte für deinen fehler

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...