Forums Neueste Beiträge
 

Dynamische Datenübernahme in vorgegebenes Formular

02/07/2010 - 21:51 von Volker Neurath | Report spam
Hallo zusammen,

bessere Überschrift fiel mir nicht ein.

Folgende Situation:
Ich habe ein Excel-Workbook, das zukünftig an unsere Aussendienstler (VB)
verteilt wird, um mit
dessen Hilfe Angebotsanfragen einzureichen.

In dem Workbook werden alle erforderlichen Daten gesammelt und teilweise so
aufbereitet[1], das die Daten
in das WW-System hochgeladen werden können.

Das Workbook enthàlt u.a. ein Worksheet "Produktliste" in das der VB die vom
Kunden angefragten
Produkte (Artikelnummer, Produktbezeichnung, menge, Preise) eintràgt.
Diese Daten sollen nun auch in ein - allerdings vorgegebenes - Formular (==
weiteres Worksheet) übertragen werden,
dass dazu dient, besonders niedrige preise von unserer Europazentrale
genehmigen zu lassen.
Problem:
1. Die Abfolge der einzelnen § in diesem Formular ist fix vorgegeben und
darf nicht veràndert werden
2. der § in den die Artikel einzutragen sind, befindet sich in Formularmitte
3. Hauptartikel, Zubehör und Ersatzteile dürfen nicht gemischt werden,
sondern müssen sortiert vorliegen.

Beispiel:
Projektor A10B102030
Objektiv A12B112131
Projektor A10B203040
Objektiv A12B213141
Lampe A13B213141

Im Formular *muss* das dann so erscheinen:
Projektor A10B102030
Projektor A10B203040
Objektiv A12B112131
Objektiv A12B213141
Lampe A13B213141

aufbau der beiden Workbooks ist wie folg:

1. Produktliste

A4 Product Description
B4 Product code
C4 Minimum Qty
D4 Maximum Qty

I4 Direct price
J4 Indirect Price
K4 Final Price

2. Antrags-formular (mit Zuordnung)

B25 Produktcode (Hauptartikel)
C25 Description
F25 Direct Price
H25 Indirect Price
J25 Final Price

hier sind 5 Zeilen vorgegeben (beliebig erweiterbar, das einzige, was wir
veràndern dürfen)
ab B30 dann

B30 Produktcode (Zubehör/Ersatzteil)
C30 Description
F30 Direct Price
H30 Indirect Price
J30 Final Price

Frage:
wie bekomme ich das automatische ausfüllen hin?

Meine Idee ist, dass beim wechsel auf das Formular-worksheet zunàchst alle
Artikel im Worksheet "Produktliste" nach Produktcode
sortiert (dann ist nàmlich die Reihenfolge genau richtig) und dann die
gewünschten Daten in das Formular-Worksheet kopiert werden.
Aber: wie? (Das Ereignis Worksheet_Activate habe ich gefunden - aber das ist
hier nicht gemeint. Vielmehr meine ich: wie bekomme ich hin, dass dieser
automatismus mit 100 Projektoren und Zubehör genauso souveràn umgeht, wie
nur mit einem Projektor?)
In EXCEL bin ich, wie bereits bekannt, bezüglich VBA ein (weitgehend)
"unbeschriebenes Blatt", ich habe VBA-technisch bisher nur mit Access zu tun
gehabt.

Volker
[1] die Artikelliste wird in ein worksheet mit speziellem mAufbau kopiert,
so dass diese in das Warenwirtschaftssystem hochgeladen werden kann.
Dann braucht der Erfasser des Angebotes "nur" noch die Kopfdaten manuell
erfassen.
Im übrigen bin ich der Meinung, dass TCPA/TCG verhindert werden muss

Wenn es vom Himmel Zitronen regnet, dann lerne, wie man Limonade macht
 

Lesen sie die antworten

#1 Andreas Killer
03/07/2010 - 13:24 | Warnen spam
Am 02.07.2010 21:51, schrieb Volker Neurath:

Meine Idee ist, dass beim wechsel auf das Formular-worksheet zunàchst alle
Artikel im Worksheet "Produktliste" nach Produktcode
sortiert (dann ist nàmlich die Reihenfolge genau richtig) und dann die
gewünschten Daten in das Formular-Worksheet kopiert werden.


Okay, sortieren ist kein Problem.

Aber: wie? (Das Ereignis Worksheet_Activate habe ich gefunden - aber das ist
hier nicht gemeint. Vielmehr meine ich: wie bekomme ich hin, dass dieser
automatismus mit 100 Projektoren und Zubehör genauso souveràn umgeht, wie
nur mit einem Projektor?)


Also das A und O ist immer wieder das ermitteln der letzten Zeile
eines Datensatzes, von Hand macht man das so: Gehe zur letzten Zelle
in der Spalte, drück die ENDE-Taste, drück die <Pfeil-hoch>-Taste.

In VBA sieht das für Spalte D so aus:

dim R as Range
set R = Range("D" & Rows.Count).End(xlUp)

Wo die Liste beginnt weißt Du selber, ich nehme einfach mal C5. Damit
können wir schon genau den Datenbereich festlegen und zwar:

set R = Range(Range("C5"), R)

Mit diesem kannst Du nun anstellen was Du möchtest, nach der
Artikelnummer sortieren :

R.Sort R.Offset(0, 1), xlAscending, Header:=xlYes
'ohne Überschriften: Header:=xlNo

Oder mitten in ein anderes Blatt kopieren:

R.Copy Sheets(2).Range("G20")

Die Zielzelle könnte man ebenso ermitteln:

dim Ziel as Range
set Ziel = Sheets(2).Range("G" & Rows.Count).End(xlUp).Offset(1, 0)
R.Copy Ziel

Löschen:

R.ClearContents

Was brauchst Du sonst noch?

Andreas.

Ähnliche fragen