folgendes Problem:
Ich habe ein Makro aufgezeichnet, das eine csv-Datei mit dem immer gleichen
Feldabfolge in eine Excel-Mappe importiert und hier verschiedene
Formatierungen und Berechnungen vornimmt (alte Inhalte aus der xls werden
vorher gelöscht)
Das Problem ist, dass sich die Zeilenanzahl in den csv-Dateien
unterscheidet. Es könnte sein, dass z.B. heute nur 2 Datensätze, morgen aber
20 importiert werden sollen. Ich will nun in verschiedenen Spalten (z.B.
Spalte G) Berechnungen durchführen, die immer variabel genau so viele Zeilen
berechnen, die in der Ursprungsdatei vorkommen (also aus obigem Beispiel:
G2:G3 oder G2:G21). Die nachfolgenden Zeilen dürfen nicht berührt werden, da
die xls u.a. als Grundlage für einen Word-Serienbrief dient und sonst Word
mehr Briefe druckt als eigentlich Datensätze vorhanden sind.
Ich hoffe, ich habe das Problem verständlich geschildert. Weiß hierfür
jemand eine Lösung?
Vielen Dank im voraus,
Steffen Rabenstein
Das sollte und kann eigentlich nicht sein, denn der Platz am Ziel muß doch
gerade für Datensätze unterschiedlicher Anzahl herhalten. Das nachfolgende
gehört auf ein separates Blatt.
Dann kannst Du auch einfach mit =ANZAHL(A:A)-1 die Anzahl der Sätze
ermitteln und dies in VBA auswerten.
--
Gruss Alexander (WinXP Home - Office 2000 SP3) --5----5----6----5----7-2
MS Outlook-Nutzer fahren gut mit http://jump.to/outlook-quotefix |
OutlookExpress: http://home.in.tum.de/~jain/software/oe-quotefix ______|
Ich habe es versucht, mit einer WENN-Abfrage nach dem Muster:
WENN(G="";"";G2*0,16) zu lösen, dann muss ich aber dem Makro sagen, bis zu
welcher Zeile es diese Abfrage machen soll. Wenn ich z.B. G2:G100 vorgebe
(mehr Datensätze sind’s nie), so bleiben zwar im Excel die Zeilen leer, der
Word-Serienbrief erzeugt aber trotzdem jedes Mal 99 Serienbriefe, unabhängig
wie viele Datensätze in der xls tatsächlich vorkommen.
Das mit ANZAHL scheint ein guter Ansatz, doch wie kann ich dem Makro sagen,
dass es nur so viele Zeilen berechnet, wie ANZAHL ausgibt? Bin kein großer
VBA-Profi...
...
ActiveSheet.UsedRange.Select
ZeilenNummer = Selection.Rows.Count
...
--
When sending mail, use address arvil<at>tarkon.ee
Arvi Laanemets
"Steffen Rabenstein" <SteffenR...@discussions.microsoft.com> wrote in
message news:49987CD5-F5D1-4A5A...@microsoft.com...
"Steffen Rabenstein" <SteffenR...@discussions.microsoft.com> wrote in
message news:E837C460-7619-492B...@microsoft.com...
Definiere es als eine Name (named range), z.B.
ZeilenAnzahl=ANZAHL(A:A)-1
In VBA kanst du solche Namen dann als [Name] eingreifen, etwas so wie:
...
ZeilenNummer=[ZeilenAnzahl]
Arvi Laanemets
wenn ich dich richtig verstehe willst du in Zeile 2 anfangen,
Formeln in Spalte 'G' zu schreiben, wenn in Spalte A Daten
stehen.
Versuch es doch mal mit einer Do ... Loop Schleife:
Zeile = 2
With Tabelle1
Do While .Cells(Zeile, 1) <> ""
.Cells(Zeile, 7) = .Cells(Zeile, 7) * 0.16
Zeile = Zeile + 1
Loop
End With
Auch wenn es nur als Denkanstoß nutzt, hoffe ich geholfen
zu haben :)
MfG
Marco
Steffen Rabenstein schrieb:
> Ich habe es versucht, mit einer WENN-Abfrage nach dem Muster:
> WENN(G="";"";G2*0,16) zu lösen, dann muss ich aber dem Makro sagen, bis zu
> welcher Zeile es diese Abfrage machen soll. Wenn ich z.B. G2:G100 vorgebe
> (mehr Datensätze sind’s nie), so bleiben zwar im Excel die Zeilen leer, der
> Word-Serienbrief erzeugt aber trotzdem jedes Mal 99 Serienbriefe, unabhängig
> wie viele Datensätze in der xls tatsächlich vorkommen.
>
> Das mit ANZAHL scheint ein guter Ansatz, doch wie kann ich dem Makro sagen,
> dass es nur so viele Zeilen berechnet, wie ANZAHL ausgibt? Bin kein großer
> VBA-Profi...
probiers mal so:
Public Sub MwSt()
With Range("H2:H" & Range("A65536").End(xlUp).Row)
.Select
.FormulaR1C1 = "=RC[-1]*0.16"
.Value = .Value
End With
End Sub
--
Mit freundlichen Grüssen
Melanie Breden
- Microsoft MVP für Excel -
http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
> Steffen Rabenstein schrieb:
die Select Zeile dient nur zur Überprüfung, welcher Bereich
angesprochen wird, sie kann gelöscht werden:
Public Sub MwSt()
With Range("H2:H" & Range("A65536").End(xlUp).Row)