Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Makro Programmierung Excel - VB (https://www.delphipraxis.net/116707-makro-programmierung-excel-vbulletin.html)

atgis 4. Jul 2008 19:12


Makro Programmierung Excel - VB
 
Hi,

Ich hab ein ganz simples Problemchen...und da ich schon zulange mich nicht mehr mit dem proggen befasst habe, fehlt mir der Ansatz.

Also mein Problem:

Ich habe hier eine Excel Tabelle, in der sollen per Formular einpaar sachen bequem eingetragen werden.
Nun soll aber jedesmal, der neue Eintrag in der nächsten Zeile darunter stehen...

http://s7.directupload.net/images/080704/agtouyd9.jpg

Code:
Private Sub CommandButton1_Click()
If TextBox1.Value + TextBox2.Value + TextBox2.Value = "" Then
 GoTo nix
End If

' i = i +1

Sheets("Tabelle1").Cells(i, 1).Value = Date
Sheets("tabelle1").Cells(i, 2).Value = TextBox1
Sheets("tabelle1").Cells(i, 3).Value = TextBox2
Sheets("tabelle1").Cells(i, 4).Value = Time$
Sheets("tabelle1").Cells(i, 5).Value = TextBox3



nix:
End Sub
Dafür habe ich hier schon das i - als zähler, aber mir fehlt jetzt der Ansatz wie ich eine Schleife realisiere, dass ein neuer Eintrag immer eine Zeile nach unten rutscht -.-

Der.Kaktus 4. Jul 2008 19:21

Re: Makro Programmierung Excel - VB
 
Zitat:

Zitat von atgis
Hi,

Ich hab ein ganz simples Problemchen...und da ich schon zulange mich nicht mehr mit dem proggen befasst habe, fehlt mir der Ansatz.

Also mein Problem:

Ich habe hier eine Excel Tabelle, in der sollen per Formular einpaar sachen bequem eingetragen werden.
Nun soll aber jedesmal, der neue Eintrag in der nächsten Zeile darunter stehen...

http://s7.directupload.net/images/080704/agtouyd9.jpg

Code:
Private Sub CommandButton1_Click()
If TextBox1.Value + TextBox2.Value + TextBox2.Value = "" Then
 GoTo nix
End If

' i = i +1

Sheets("Tabelle1").Cells(i, 1).Value = Date
Sheets("tabelle1").Cells(i, 2).Value = TextBox1
Sheets("tabelle1").Cells(i, 3).Value = TextBox2
Sheets("tabelle1").Cells(i, 4).Value = Time$
Sheets("tabelle1").Cells(i, 5).Value = TextBox3



nix:
End Sub
Dafür habe ich hier schon das i - als zähler, aber mir fehlt jetzt der Ansatz wie ich eine Schleife realisiere, dass ein neuer Eintrag immer eine Zeile nach unten rutscht -.-

Hallo, da gibt es genug Tools..schau mal z.B. XLSREADWRITE_II oder OLE mit Hand..findest Du sicher hier im Forum viele Anregungen.

Chemiker 4. Jul 2008 19:29

Re: Makro Programmierung Excel - VB
 
Hallo atgis,

das hat aber nichts mit Object – Pascal zu tun.

VB:

z.B.

1. For … Next - Schleife

For i = 1 To 10
..

Next i

2. While … Wend – Schleife

While I < 10


Wend

3. Do While … Loop

Do While i < 10
….

Loop

4. Do Until … Loop

Do Until i < 10


Loop


Bis bald Chemiker

Alter Mann 4. Jul 2008 21:00

Re: Makro Programmierung Excel - VB
 
Hallo,

ein Problem, Programmieren, Excel benutzen oder was?

Das Verschieben der Eingabemaske in Excel wird/kann ganz einfach festgelegt werden:
Menü->Extras->Optionen, Register 'Bearbeiten', Checkbox 'Markierung nach den Drucken der Eingabetaste verschieben' ->
Richtung: (Unten, Rechts, Oben, Links);

?Oder habe ich(was ja mal vorkommen kann) etwas Falsch verstanden, dann bitte Entschuldigung.

Lannes 4. Jul 2008 21:47

Re: Makro Programmierung Excel - VB
 
Hallo,

auf der Seite (EXCEL-Lösungsbeispiele) findest Du in der Datei dialog.zip einen Lösungsansatz für dein Problem.

Chemiker 4. Jul 2008 22:27

Re: Makro Programmierung Excel - VB
 
Hallo atgis,

ich habe jetzt erst verstanden was Du meinst.
Es muss zuerst die letzte Zeile bestimmt werden und dann die neuen Werte an die neue Stelle geschrieben werden.

Code:
Function letzteZeile() As long
   Dim i As integer, letzteMin As long, letzteMax AS long
   For I = 1 To 256
      letzteMin = Cells(65536, i), End(xlUp).Row
      if letzeMax < letzteMin then
         letzteMax = LetzteMin
      endif
   next i
   letzteZeile = letzteMax
end function
Code:
private sub Commandbutton1_click()
     Cells (letzteZeile+1, 1).Value = Date
     Cells (letzteZeile+1, 2).Value = TextBox1
     … usw.
end sub
Geschrieben und nicht ausprobiert.


Bis bald Chemiker

atgis 5. Jul 2008 09:51

Re: Makro Programmierung Excel - VB
 
Zitat:

Zitat von Chemiker
Hallo atgis,

ich habe jetzt erst verstanden was Du meinst.
Es muss zuerst die letzte Zeile bestimmt werden und dann die neuen Werte an die neue Stelle geschrieben werden.

Code:
Function letzteZeile() As long
   Dim i As integer, letzteMin As long, letzteMax AS long
   For I = 1 To 256
      letzteMin = Cells(65536, i), End(xlUp).Row
      if letzeMax < letzteMin then
         letzteMax = LetzteMin
      endif
   next i
   letzteZeile = letzteMax
end function

Funktioniert nicht...



Ich möchte einfach, dass nach jedem Klick auf dem "setzen" Button i um 1 erhöht wird und somit der neue Eintrag eine Zeile weiter unten eingetragen wird...

Code:
Sheets("Tabelle1").Cells(i, 1).Value = Date
Sheets("tabelle1").Cells(i, 2).Value = TextBox1
Sheets("tabelle1").Cells(i, 3).Value = TextBox2
Sheets("tabelle1").Cells(i, 4).Value = Time$
Sheets("tabelle1").Cells(i, 5).Value = TextBox3
http://s5.directupload.net/images/080705/bbc9dlbg.jpg
http://s4.directupload.net/images/080705/v2vh7xsg.jpg
http://s4.directupload.net/images/080705/ix4uoz3q.jpg

atgis 5. Jul 2008 10:13

Re: Makro Programmierung Excel - VB
 
Was funktionieren würde wäre:
Code:
Range("A2").Value = Range("A2").Value + 1

Sheets("Tabelle1").Cells(Range("A2").Value, 1).Value = Date
Sheets("tabelle1").Cells(Range("A2").Value, 2).Value = TextBox1
Sheets("tabelle1").Cells(Range("A2").Value, 3).Value = TextBox2
Sheets("tabelle1").Cells(Range("A2").Value, 4).Value = Time$
Sheets("tabelle1").Cells(Range("A2").Value, 5).Value = TextBox3
Doch fangen die Einträge erst bei der Zeile A39670 an :stupid:

Chemiker 5. Jul 2008 11:02

Re: Makro Programmierung Excel - VB
 
Hallo atgis,

leider einige Tipp-Fehler, so müsste es funktionieren:

Code:
Function letzteZeile() As Long
   Dim i As Integer, letzteMin As Long, letzteMax As Long
   For i = 1 To 256
      letzteMin = Cells(65536, i).End(xlUp).Row
      If letzteMax < letzteMin Then
         letzteMax = letzteMin
      End If
   Next i
   letzteZeile = letzteMax
End Function
Code:
Sub befuellen()
  Cells(letzteZeile + 1, 1) = "Test"
  Cells(letzteZeile, 2) = "Test2"
End Sub
Versuchs nochmal.

Bis bald Chemiker

atgis 5. Jul 2008 12:42

Re: Makro Programmierung Excel - VB
 
Ja Funktioniert...aber dauert sehr lange... es füllt die 5 Zeilen innerhalb von 2 sek. aus... :shock: Das liegt aber wohl an den 65536...

Danke!

Nur schade das es nicht noch simpler ging...


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:30 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz