| |
 | Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
|
Autor
|
Thema: Liste erweitern mit VB (1485 mal gelesen)
|
zini Mitglied Design Engineer
 
 Beiträge: 304 Registriert: 09.05.2003
|
erstellt am: 02. Nov. 2006 09:27 <-- editieren / zitieren --> Unities abgeben:         
Liebes Forum! Habe eine Frage bezüglich Excel u. Visual Basic. Möchte eine Liste erweitern mit einem Visual Basic Fenster.(wie laut pic) In der Excel Liste gibt es eine Fortlaufende Nr.(ganz links),sie soll bei jedem Listeneintrag um eins erhöt werden. Ablauf: - der User soll das Fenster vollständig ausfüllen,und danach auf "Einfügen" klicken. -Visual Basic soll nachsehen,welche Fortlaufende NR.die höchste ist,und wenn sie die Zeile gefunden hat,soll sie in der nächsten Zeile die Nr. um eins erhöhen. Der nächste Schritt wäre dann,die Daten die der User in das Eingabefeld eingetragen hat,in diese neue Zeile einzutragen. Wie Ihr sehen könnt,hab ich zwar den grafischen Part mit dem Eingabefenster geschaft,aber bei der Umsetztung der Befehle hapert es noch. Kann mir jemand bei der Umsetzung helfen?? Bitte-Danke!! lg Andi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Moderator Teamleiter
  
 Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600
|
erstellt am: 02. Nov. 2006 09:48 <-- editieren / zitieren --> Unities abgeben:          Nur für zini
Hallo Andi, eine sehr einfach möglichkeit ist es nach der leeren Zelle unterhalb des letzten Eintrags zu suchen. In deinem Beispiel währe das die Zeile 153. Code:
Dim oExcel As Excel.Application Dim oRange As Excel.Range Dim oGefunden As Excel.Range Dim iSuchen As Integer 'Excelobjekt holen oExcel = CType(GetObject(, "Excel.Application"), _ Excel.Application) 'Suchen wir nach der ersten leeren Zelle in Spalte A Do iSuchen = iSuchen + 1 oRange = CType(oExcel.Cells(iSuchen, 1), Excel.Range) If CStr(oRange.Text) = "" Then oGefunden = oRange Exit Do End If 'zur Sicherheit If iSuchen > 1000 Then Exit Do End If Loop
Ich hoffe dir hilft dieses Beispiel weiter. ------------------ Mfg Daniel Es gibt nur drei Möglichkeiten: Sieg, Unentschieden oder Niederlage ---------------------------------------------- SolidWorks API-Programmierung | Makros | Tools | Addins | Schulung
SolidWorks API Programmierung; Schuler Design Automation GmbH | kontakt@schuler-da.de [Diese Nachricht wurde von tbd am 02. Nov. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zini Mitglied Design Engineer
 
 Beiträge: 304 Registriert: 09.05.2003
|
erstellt am: 02. Nov. 2006 10:02 <-- editieren / zitieren --> Unities abgeben:         
Sorry,wenn ich so daneben stehe...aber ich hab mit Visual Basic überhaupt nix am Hut. Hab jetzt diese Fehlermeldung bekommen....hmm??? Kannst du mir mit dem excel-file das ich reingestellt habe helfen?? lg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Moderator Teamleiter
  
 Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600
|
erstellt am: 02. Nov. 2006 10:25 <-- editieren / zitieren --> Unities abgeben:          Nur für zini
Hallo Andi, sorry hatte vergessen zur sagen das dies .Net code ist! Wo erstellst du diese Anwendung? In VBA von Excel oder extern in VB6? Deine Fehlermeldun sieht stark nach VBA aus. Hier der Code: Code:
Dim oRange As Excel.Range Dim oGefunden As Excel.Range Dim iSuchen As Integer 'Suchen wir nach der ersten leeren Zelle in Spalte A Do 'Wir beginnen mit der Suche in Zeile vier iSuchen = iSuchen + 4 Set oRange = Excel.Cells(iSuchen, 1) If CStr(oRange.Text) = "" Then Set oGefunden = oRange Exit Do End If 'zur Sicherheit If iSuchen > 1000 Then Exit Do End If Loop
Dieen Code in dein CommandButton2_Click ereignis einfügen. Mit dem Objekt oGefunden musst du dann halt weiter Arbeiten. Aber du müsstest an der richtigten Stelle stehen.
------------------ Mfg Daniel Es gibt nur drei Möglichkeiten: Sieg, Unentschieden oder Niederlage ---------------------------------------------- SolidWorks API-Programmierung | Makros | Tools | Addins | Schulung
SolidWorks API Programmierung; Schuler Design Automation GmbH | kontakt@schuler-da.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zini Mitglied Design Engineer
 
 Beiträge: 304 Registriert: 09.05.2003
|
erstellt am: 02. Nov. 2006 10:28 <-- editieren / zitieren --> Unities abgeben:         
|
zini Mitglied Design Engineer
 
 Beiträge: 304 Registriert: 09.05.2003 HP ZBook Fury 15.6 inch G8 Mobile Workstation PC NVIDIA RTX A2000 Creo 7.0.3.0
|
erstellt am: 02. Nov. 2006 10:42 <-- editieren / zitieren --> Unities abgeben:         
Bin lässtig,ich weiß! Aber funktioniert noch ned,hab einen commandbutton eingefügt und den code,denn du mir geschrieben hast eingefügt. Tut sich nix. Wenn ich auf play drücke,kommt ein Fenster.....siehe Bild. ????bin Ratlos. lg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Moderator Teamleiter
  
 Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600
|
erstellt am: 02. Nov. 2006 11:01 <-- editieren / zitieren --> Unities abgeben:          Nur für zini
|
zini Mitglied Design Engineer
 
 Beiträge: 304 Registriert: 09.05.2003
|
erstellt am: 02. Nov. 2006 13:54 <-- editieren / zitieren --> Unities abgeben:         
Frage, warum fügt er den Text nicht in das Feld "A1" ein??? Kannst du mir sagen,woran das liegt? lg [Diese Nachricht wurde von zini am 02. Nov. 2006 editiert.] [Diese Nachricht wurde von zini am 02. Nov. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Moderator Teamleiter
  
 Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600
|
erstellt am: 02. Nov. 2006 14:15 <-- editieren / zitieren --> Unities abgeben:          Nur für zini
Hallo, du musst die Zeilen einfach tauschen, dann klappt es! [a1] = Me.txtZellwert.Value Jetzt musst du dir nur noch die richtigen Zellen besorgen und diese befüllen. Ist so zwar mit [xx] nicht die schönste Art und Weise, aber es funktioniert. Ich würde dir dennoch raten mit den Objekten zu arbeiten. Das wäre bei meinem Beispiel oGefunden.Text = Me.txtZellwert.Text Viel Spaß noch beim Basteln! ------------------ Mfg Daniel Es gibt nur drei Möglichkeiten: Sieg, Unentschieden oder Niederlage ---------------------------------------------- SolidWorks API-Programmierung | Makros | Tools | Addins | Schulung
SolidWorks API Programmierung; Schuler Design Automation GmbH | kontakt@schuler-da.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zini Mitglied Design Engineer
 
 Beiträge: 304 Registriert: 09.05.2003
|
erstellt am: 02. Nov. 2006 14:25 <-- editieren / zitieren --> Unities abgeben:         
|
tbd Moderator Teamleiter
  
 Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600
|
erstellt am: 02. Nov. 2006 14:30 <-- editieren / zitieren --> Unities abgeben:          Nur für zini
Du belegts ein Objekt mit der deklaration Excel.Range mit deiner Cell (siehe Beispiel weiter oben). Dann kannst du mit diesem Objekt arbeiten. Objekt.Text bedeutet das du dieser Zelle einem Neuen Inhalt verpasst. Das arbeiten mit Objekten ist eine gängige und sinnvoll Programmierart in Visual Basic, damit man einen besseren Überblick und mehr Möglichkeiten hat. ------------------ Mfg Daniel Es gibt nur drei Möglichkeiten: Sieg, Unentschieden oder Niederlage ---------------------------------------------- SolidWorks API-Programmierung | Makros | Tools | Addins | Schulung
SolidWorks API Programmierung; Schuler Design Automation GmbH | kontakt@schuler-da.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |