| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | Von Digital Twins bis Hochleistungs-Computing: PNY präsentiert seine Zukunftstechnologien für die Industrie von morgen, eine Pressemitteilung
|
Autor
|
Thema: Variablen (1127 mal gelesen)
|
Dressler Mitglied technischer Angestellter
 
 Beiträge: 301 Registriert: 19.11.2003 Acad 2002
|
erstellt am: 08. Jan. 2004 13:40 <-- editieren / zitieren --> Unities abgeben:         
Hallo erstmal. Ich hab eigentlich bisher keine Ahnung von VBA. Zur Zeit bastele ich mir gerade ein UserForm, was später mal Layouts mit Zeichnungskopf (komplett ausgefüllt), sowie eine Datenbank mit allen Zeichnungen füllen soll. Dabei bin ich im Moment mit folgendem Problem beschäftigt. Ich möchte beim Auslesen der Verzeichnisse die Möglichkeit haben mit zwei verschiedenen ComboBox en das Verhalten der jeweils anderen Beeinflussen. Außerdem soll in einer 3. ComboBox der Verzeichnisinhalt des Verzeichnisses /"Zeichnungen/" angezeigt werden, wenn Zeichnungen vorhanden sind. Leider weiß ßich auch nicht wie ich es erreiche, daß meine ComboBox nur so viele Einträge hat, wie ich auch Dateien habe. Der Code sieht so wie folgt aus: ------------------------------------- Private Sub UserForm_Initialize() Dim Datei1, Pfad1, Name1, aktVerzeichnisse, verZaehl, i As Single Pfad1 = "x:\Projekte\" ' Pfad setzen. Name1 = Dir(Pfad1, vbDirectory) ' Ersten Eintrag abrufen. Do While Name1 <> "" ' Schleife beginnen. ' Aktuelles und übergeordnetes Verzeichnis ignorieren. If Name1 <> "." And Name1 <> ".." Then ' Mit bit-weisem Vergleich sicherstellen, daß Name1 ein ' Verzeichnis ist. If (GetAttr(Pfad1 & Name1) And vbDirectory) = vbDirectory Then verZaehl = verZaehl + 1 ' Zählt die Dateien/Verzeichnisse Debug.Print Name1 ' Eintrag nur anzeigen, wenn es sich Debug.Print verZaehl End If ' um ein Verzeichnis handelt. End If Name1 = Dir ' Nächsten Eintrag abrufen. Dim MyArray(1000) Dim j As Single 'The 1-st list box contains 3 data columns ListBox1.ColumnCount = 3 'Load integer values into first column of MyArray For i = 0 To 5 MyArray(j) = j Next i 'Load columns 2 and three of MyArray MyArray(verZaehl) = Name1 'Load data into ListBox1 and ListBox2 ComboBox1.List() = MyArray Loop End Sub
Private Sub ComboBox1_Change() TextBox1.Text = ComboBox1.Text End Sub ---------------------------- und die Verzeichnisstruktur so in etwa: Projekte\1000 Testprojekt1\Zeichnungen \1001 Testprojekt2\Zeichnungen \1002 Testprojekt3\Zeichnungen ... ----- Vielleicht kann mir jemand ja etwas weiter helfen.
------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dressler Mitglied technischer Angestellter
 
 Beiträge: 301 Registriert: 19.11.2003 Acad 2002
|
erstellt am: 08. Jan. 2004 13:42 <-- editieren / zitieren --> Unities abgeben:         
|
Dressler Mitglied technischer Angestellter
 
 Beiträge: 301 Registriert: 19.11.2003 Acad 2002
|
erstellt am: 08. Jan. 2004 17:04 <-- editieren / zitieren --> Unities abgeben:         
Hier noch einmal eine Vereinfachung der Frage: Wie kann ich bei einer Variablen was wegtrennen? Also ich möchte aus : 1000 ProjektX 1. die Variable 1000 2. die Variable ProjektX haben. Kann mir jemand damit bitte weiter helfen. Danke ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ralf Rehm Mitglied Dipl.-Ing. Stahlbau

 Beiträge: 57 Registriert: 16.12.2003
|
erstellt am: 09. Jan. 2004 08:50 <-- editieren / zitieren --> Unities abgeben:          Nur für Dressler
Hallo, nutze einfach die VB-Funktionen Left und Right: Beispiel: Dim EinText, ZF1 EinText = "Hallo Welt" ' Zeichenfolge definieren. ZF1 = Left(EinText, 1) ' Liefert "H". ZF1 = Left(EinText, 7) ' Liefert "Hallo W". ZF1 = Left(EinText, 20) ' Liefert "Hallo Welt". Um die Anzahl der zu lesenden Zeichen zu bestimmen, verwendest Du die lnStr-Funktion. Mit der bestimmst Du das erste Auftreten des Leerzeichens und kannst so den Variableninhalt auftrennen. Beispiel lnStr: Dim SuchText, SuchZeichen, Pos1 Suchtext ="XXpXXpXXPXXP" ' Zu durchsuchende ' Zeichenfolge. SuchZeichen = "P" ' Nach "P" suchen. ' Reiner Textvergleich ab Position 4. Das Ergebnis ist 6. Pos1 = Instr(4, Suchtext, SuchZeichen, 1) ' Binärer Vergleich ab Position 1. Das Ergebnis ist 9. Pos1 = Instr(1, Suchtext, SuchZeichen, 0) ' Standardmäßig wird der Vergleich binär durchgeführt ' (wenn das letzte Argument nicht angegeben wird). Pos1 = Instr(Suchtext, SuchZeichen) ' Liefert 9. Pos1 = Instr(1, Suchtext, "W") ' Liefert 0.
Zitat: Original erstellt von Dressler: Hier noch einmal eine Vereinfachung der Frage: Wie kann ich bei einer Variablen was wegtrennen? Also ich möchte aus : [b]1000 ProjektX 1. die Variable 1000 2. die Variable ProjektX haben. Kann mir jemand damit bitte weiter helfen. Danke [/B]
Hoffe, es hilft! Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dressler Mitglied technischer Angestellter
 
 Beiträge: 301 Registriert: 19.11.2003 Acad 2002
|
erstellt am: 09. Jan. 2004 08:57 <-- editieren / zitieren --> Unities abgeben:         
Danke, daß hilft schonmal um einiges weiter. Kann ich die Variablen die ich auf diese Weise getrennt habe dann eigentlich auch danach den einen Teil in Zahlen und den anderen Teil in "Buchstaben" trennen? ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
harryk Mitglied Projektleiter
 
 Beiträge: 124 Registriert: 19.08.2003
|
erstellt am: 09. Jan. 2004 09:20 <-- editieren / zitieren --> Unities abgeben:          Nur für Dressler
ungefähr so: Sub SepAtChar() Dim Wert As String Dim LeftValue As String Dim RightValue As String Dim SeparatorPos As Integer Wert = "100 00 Project" Wert = Trim(Wert) 'Leerzeichen abschneiden SeparatorPos = InStr(1, Wert, " ", vbTextCompare) LeftValue = left(Wert, SeparatorPos - 1) RightValue = Right(Wert, Len(Wert) - SeparatorPos) Debug.Print LeftValue Debug.Print RightValue End Sub Hope it helps, Gruss, Harry Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proxy Ehrenmitglied Stateless-DHCP v6-Paketfragmentierer
    
 Beiträge: 1629 Registriert: 13.11.2003 Tastaturen, Mäuse, Pladden, Monitore, ..., einige AutoCADs 200x & SWX 2kX
|
erstellt am: 09. Jan. 2004 09:55 <-- editieren / zitieren --> Unities abgeben:          Nur für Dressler
Funktion um einen String auf das Aufkommen einer Zahl zu prüfen. Die einzelenen Stingstellen mit einer Schleife in eine Funktion übergeben und dann prüfen: Dim x As Char For Each x In sString Next ... ---------------------- ... If x <> "" And IsNumeric(s) Then ... ------------------ (entmake (entget (entlast))) | Die Pro-Version auf Anfrage erhältlich. "Lisp?!?! Why the Hell did you pick the most arcane, obscure, and hopelessly-rooted-in-the-computer-science-department language in the world for an AutoCAD programming language?" Read the whole story: The Autodesk File Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| Anzeige: | Infos zum Werbeplatz >> | CADPower CAD APP für Allgemeine Werkzeuge CADPower is a pure-productivity tool for the .dwg CAD user.
It provides you with over 400+ Lisp routines and tools that you always wanted but found missing. It is designed to super-charge and boost productivity for just any AutoCAD/BricsCAD/ZWCAD/ARES Commander user.
|
|
RoSiNiNo Mitglied Konstrukteur
   
 Beiträge: 1126 Registriert: 09.10.2002 Acad 2011-deutsch, Express Tools 3ds Max 2010 Win 7-Professional HP Workstation Z400, 6GB GeForce GTX 470
|
erstellt am: 12. Jan. 2004 09:21 <-- editieren / zitieren --> Unities abgeben:          Nur für Dressler
Zitat: Original erstellt von Dressler: Wie kann ich bei einer Variablen was wegtrennen?Also ich möchte aus : [b]1000 ProjektX ...[/B]
Ich würde die Funktion SPLIT verwenden ------------------ Roland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |