| |
| Xometry Europe erweitert das Angebot um Vakuumguss und Formpressen, eine Pressemitteilung
|
Autor
|
Thema: visual-basic formular in excel (7684 mal gelesen)
|
spline Mitglied
Beiträge: 119 Registriert: 20.06.2002 wildfire 4 HP NW9440 NVIDEA FX1500
|
erstellt am: 06. Jul. 2004 19:56 <-- editieren / zitieren --> Unities abgeben:
Hallo Fachleute Bin leider ein Laie in Excel (und Autodidakt) Hab allerdings schon einiges mit Formeln,bed.Formatierung usw gezaubert. Nun würde ich gerne ein Formular erstellen um mit den einzugebenden Werten zu rechnen un ein Ergebnis auszuspucken. (z,B, Winkelberechnung, Schnittgeschwindigkeiten,zinsrechnung). Kann man das mit Excel überhaupt? Wenn ja, wäre es toll wenn mir jemand an einem ganz einfachen Beispiel das Grundprinzip erklären könnte. Meinetwegen auch: A + B = x Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 07. Jul. 2004 19:02 <-- editieren / zitieren --> Unities abgeben: Nur für spline
Du baust dein Blatt auf mit Werten Formeln und setzt die Zellen in denen du Eingaben machen willst mittels Format/Schutz auf nicht gesperrt(Häckchen bei gesperrt entfernen). Anschliessend das Blatt über Extras/Schutz/Blatt schützen und du kannst dann nur in den Zellen Eingaben machen die veränderbare Werte enthalten sollen. Formeln , Ergebnisse etc. sind dadurch geschützt Denke diese Art reicht für vieles aus - es mus nicht immer gleich die Vb - Lösung sein ;-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
melzig Mitglied Maschinenbautechniker
Beiträge: 396 Registriert: 15.01.2003
|
erstellt am: 08. Jul. 2004 07:48 <-- editieren / zitieren --> Unities abgeben: Nur für spline
|
spline Mitglied
Beiträge: 119 Registriert: 20.06.2002 wildfire 4 HP NW9440 NVIDEA FX1500
|
erstellt am: 08. Jul. 2004 10:32 <-- editieren / zitieren --> Unities abgeben:
|
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 08. Jul. 2004 12:53 <-- editieren / zitieren --> Unities abgeben: Nur für spline
Hi, ohne Frank vorweggreifen zu wollen, in seinem Beispiel liegt die Zeile Userform1.Show im Klassenmodul Workbook_Open. In nem normalen Modul sähe des dann so aus: sub show_me() Userform1.Show end sub Eine UF fügst Du im VBE unter Einfügen/Userform ein, und deren Elemente Textfelder/Labels/Buttons aus der Werkzeugsammlung. Wenn ich dich richtig verstehe, willst Du mit den Textboxen rechnen, das hiesse dann auch noch diverse Gültigkeitsabfragen zu veranstalten - etwa like: if Not IsNumeric(Textbox1.Text) -, da Textboxen, wies der Name schon sagt reine Strings enthalten. Soviel ganz grob nur hierzu, m.E. gibts da noch bissel mehr zu beachten, ist aber abhängig davon was man genau vorhat lg Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spline Mitglied
Beiträge: 119 Registriert: 20.06.2002
|
erstellt am: 08. Jul. 2004 13:05 <-- editieren / zitieren --> Unities abgeben:
|
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 08. Jul. 2004 13:37 <-- editieren / zitieren --> Unities abgeben: Nur für spline
|
spline Mitglied
Beiträge: 119 Registriert: 20.06.2002
|
erstellt am: 08. Jul. 2004 13:39 <-- editieren / zitieren --> Unities abgeben:
|
Demokrat2000 Mitglied
Beiträge: 145 Registriert: 27.09.2004
|
erstellt am: 31. Jan. 2005 15:27 <-- editieren / zitieren --> Unities abgeben: Nur für spline
|
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 31. Jan. 2005 15:37 <-- editieren / zitieren --> Unities abgeben: Nur für spline
Hi Martin, wie ... 'einbetten' ??? a) normaler Aufruf: Userform1.Show b) nonmodal, dh. Du kannst in Excel weiterarbeiten: Userform1.Show 0 ' 0 steht für modal=false c) Screenshot machen - Bild einfügen ;;-)) e) erklär nochmal genauer, wie du es meintest Grüsse Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Demokrat2000 Mitglied
Beiträge: 145 Registriert: 27.09.2004
|
erstellt am: 31. Jan. 2005 15:51 <-- editieren / zitieren --> Unities abgeben: Nur für spline
Hallo Nancy, also ich möchte diese userform, wie auf dem Bild zu sehen ist, in Excel,wie ein normales Steuerelement einfügen können. Dort möchte ich dann nur noch anklicken können, links- oder rechtssteigend bzw. Starten von S.E.. Ich habe nur noch nicht gefunden, wo man das in Excel reinladen kann. MfG Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 31. Jan. 2005 16:04 <-- editieren / zitieren --> Unities abgeben: Nur für spline
|
Demokrat2000 Mitglied
Beiträge: 145 Registriert: 27.09.2004
|
erstellt am: 31. Jan. 2005 16:46 <-- editieren / zitieren --> Unities abgeben: Nur für spline
Mhh naja da sollen halt eventuell auch mehrere Steuerelemente hinterlegt werden. Ich hatte das halt nur als bsp. dargelegt. Ich wollte eine Art Benutzeroberfläche machcen, wo mehrere Steuerelemente hinterlegt werden. HTH Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 31. Jan. 2005 18:22 <-- editieren / zitieren --> Unities abgeben: Nur für spline
Martin, mal back to the roots, ich kanns nur nochmal so erklären: Angenommen, Du hast einen Button in deiner Tabelle:
Code:
Private Sub commandbutton1_click() userform1.show 'modal 'userform1.show 0 'nonmodal end sub
So wird die Userform geladen und der Benutzer kann deren Steuerelemte bedienen, die halt je nach dem, irgendwas machen, oder auch nicht;-) Üblicherweise gehört dann in die Userform1 noch ein Button 'Beenden/Cancel' mit dem der Benutzer nach die Userform wieder beendet. Code:
private sub cmdCancel_Click() unload me end sub
Mehr is nich drin! Ein 'Einbetten' im Sinne von Ole-Objekten ist mit Userforms nicht möglich, aber mit einzelnen Steuerelemten in Tabellenblättern Oder eben blattübergreifend - mit Commandbars. Gruss Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Demokrat2000 Mitglied
Beiträge: 145 Registriert: 27.09.2004
|
erstellt am: 01. Feb. 2005 09:52 <-- editieren / zitieren --> Unities abgeben: Nur für spline
Hey Nancy, es hat mal wieder alles geklappt. Ich habe es gestern durch ne Suche im internet gefunden,wie man sich da helfen kann. Trotzdem vielen Dank. Sag mal ich habe nen Programmcode in VBA (anbei ein Bsp.) ' checking row + column If Val(Target.Column / 2) <> CDbl(Target.Column / 2) And Target.Row = 1 Then ' clear cells Me.Range(Me.Cells(2, Target.Column), Me.Cells(90, Target.Column)).Clear Er meckert mir in meiner Userform immer über das Me. Cells rum. Wieso tritt den der Fehler auf? Ich habe in der Hilfe nichts drüber gelesen,das das Me in der userform nicht funktioniert? Gruß Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 01. Feb. 2005 10:20 <-- editieren / zitieren --> Unities abgeben: Nur für spline
Moin Martin, Code:
Me.Range(Me.Cells(2, Target.Column), Me.Cells(90, Target.Column)).Clear
die Zeile stammt ja sicher aus einem Private Sub Worksheet_blabla() Event? in dem Falle bezieht sich das 'Me' auf das Tabellenblatt in dem der Code sitzt. In einer Userform wird das so nie laufen, da ja der Code innerhalb der UF steht und somit Me die ausführende Userform selber ist. Was du da somit von der UF verlangst ist sowas:
Code:
Userform1.Range(Userform1.Cells(2, Target.Column), Userform1.Cells(90, Target.Column)).Clear
Klar, nä? das muss! ja crashen;-) Gruss Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Demokrat2000 Mitglied
Beiträge: 145 Registriert: 27.09.2004
|
erstellt am: 01. Feb. 2005 11:16 <-- editieren / zitieren --> Unities abgeben: Nur für spline
hallo Nancy, also so einfach klappt das ja scheinbar doch nicht. :.-/ Private Sub Aktualisierung_Click() Dim SEApp As SolidEdgeFramework.Application Dim SEDoc As Object 'SolidEdgePart.PartDocument Dim SEMod As SolidEdgePart.Model Dim sMsg As String Dim SESearch As SolidEdgeFramework.Application Dim SEDocSearch As Object 'SolidEdgePart.PartDocument Dim SESearchMod As SolidEdgePart.Model Dim searchMsg As String Dim Testbox As UserForm 'This Code write the features of the active Document Dim i As Long Dim Target As Range
Set Target = Worksheets("Eingabefeld").Range("A1") On Error GoTo Err_Aktualisierung_Click ' checking row + column If Val(Target.Column / 2) <> CDbl(Target.Column / 2) And Target.Row = 1 Then ' clear cells Testbox.Range(Testbox.Cells(2, Target.Column), Testbox.Cells(90, Target.Column)).Clear ' connecting to SE Set SEApp = GetObject(, "SolidEdge.Application") ' connecting to active document Set SEDoc = SEApp.ActiveDocument ' check, if part or sheetmetal If SEDoc.Type = igPartDocument Or SEDoc.Type = igSheetMetalDocument Then ' writing the fullname of the active document to A1 Testbox.Cells(1, 1) = SEDoc.FullName ' connecting the model Set SEMod = SEDoc.Models(1) ' writing features For i = 1 To SEMod.Features.Count Testbox.Cells(i + 1, Target.Column).Value = SEMod.Features(i).Name Next End If End If Exit_Aktualisierung_Click: 'clear objects Set SEMod = Nothing Set SEDoc = Nothing Set SEApp = Nothing Testbox.Cells(1, 2).Activate Exit Sub Err_Aktualisierung_Click: MsgBox "Fehler " & Err & ", " & Error$, vbCritical, "Aktualisierung_Click" Resume Exit_Aktualisierung_Click End Sub
Hier mein Code. Er steigt immer bei 'clear cells aus und geht zur Fehlerroutine. Aber es funzt das Programm, wenn ich es aus dem Excelsheet starte. Gruß Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 01. Feb. 2005 11:42 <-- editieren / zitieren --> Unities abgeben: Nur für spline
Schwäärer Fall ...;-)) Ehm, Martin lad' vielleicht mal dein xl-File hoch, ich weiss momentan nicht, steht der Code jetz hinter nem Button im Blatt, oder hinter nem Button in einer Userform ??? Nur soviel gleich vorweg: Mit: Set Target = Worksheets("Eingabefeld").Range("A1") nagelst Du A1 fest, ein: If Val(Target.Column / 2) <> CDbl(Target.Column / 2) And Target.Row = 1 Then ist somit überflüssig.
Code:
Dim Testbox As UserForm Testbox.Range(Testbox.Cells(2, Target.Column), Testbox.Cells(90, Target.Column)).Clear
Martin, das ist schlicht und ergreifend Schwachsinn ;-)) Eine Userform kennt keine Ranges und Zellen, das hatte ich versucht rüberzubringen ..., wenn - dann sowas: Code:
dim Testbox as worksheet set Testbox = worksheets("TabelleXYZ")
Jetz upp einfach mal das file ;-)) Gruss Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Demokrat2000 Mitglied
Beiträge: 145 Registriert: 27.09.2004
|
erstellt am: 01. Feb. 2005 11:48 <-- editieren / zitieren --> Unities abgeben: Nur für spline
Hey Nancy ich habe unseren Admin. gefragt wegen dem problem. Der hat mir den Tipp gegeben,das ich das Me. durch eine Objektvariable verändern sollte. Set Ziel = Worksheets("Eingabefeld").Range("A1:A90") Also das wars schon, trotzdem vielen Dank. Mhh schade,das man hier nicht mehr als 10 Unities geben kann, denn sonst hätte ich mich schon anders bei Dir bedankt :-) MfG Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Demokrat2000 Mitglied
Beiträge: 145 Registriert: 27.09.2004
|
erstellt am: 01. Feb. 2005 14:59 <-- editieren / zitieren --> Unities abgeben: Nur für spline
Hey Nancy, ich habe da die nächste Frage. Ich habe ne Inputbox und wollte diese formatieren. ich habe folgenden text, den ich eingeben möchte. Wie alt sind Sie? a)unter 10 b)über 20 c)unter Tod :-) aber ich bekomme bis jetzt nur ne Fehlermeldung hin.Ich wollte das eigentlich mit nem Unterstrich machen, wie im Code, aber da gibt es nur Gemecker. Habe im Objecktarchiv auch noch nicht das richtige gefunden. Danke Anke Martin
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
melzig Mitglied Maschinenbautechniker
Beiträge: 396 Registriert: 15.01.2003 Intel Xeon CPU E5-1650v2 @3,5 GHz; 32 GB RAM Quadro K4000 3 GB 2x 20" TFT LG Flatron L2000CN Space Pilot 3D Connexion Windows 7 Professional 64 Bit Inventor Professional 2015 -64-Bit-Edition- Inventorintegration für Autodesk Productstream Professional 2011
|
erstellt am: 01. Feb. 2005 15:34 <-- editieren / zitieren --> Unities abgeben: Nur für spline
|
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 01. Feb. 2005 15:36 <-- editieren / zitieren --> Unities abgeben: Nur für spline
Martin, mal folgende Bitten: Mach einen neuen Thread auf, dieser hier erscheint mir abgeschlossen, sonst bekommen spline, Thomas und Frank möglicherweise 'nen Haufen mails Versuche dann nochmal dein Problem etwas besser zu beschreiben, oder poste deinen Code ... [mir dünkt bald, du sprichst von einer Textbox, keiner Inputbox] Oder, letzte Instanz - Beispielmappe hochladen Alles andre ist Rate mal mit Rosenthal Gruss Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |