Hallo Leute,
vorweg: ich kriegs grösstenteils auch allein hin denke & hoffe ich, aber ich bin mir nicht sicher ob ich einen eleganten Weg verwende…
Es handelt sich hier also um keine dringende Hilfesuche sondern mehr eine Fleissaufgabe 
ich grüble gerade daran ob und wie sich folgendes Szenario realisieren lässt. Vielleicht ist es schon mehr VBA-Programmierung, aber ich versuche einfach mal hier mein Glück…
Ich habe ein Datenblatt, wo verschiedene Werte eingetragen müssen. Je nachdem wie man die Werte ändert kommen am Ende andere Diagramme raus. Da man aber sehr viele Daten eingeben muss spiele ich mit dem Gedanken einer Export und Import Funktion über Makros.
Sprich ich will mit einem Buttonklick alle Werte in ein anderes Sheet einfügen. Stelle ich mir auch nicht schwer vor…
Eine Abfrage, wie man den Export bezeichnen will und dann wird eine neue Zeile eingefügt, und dieser wird dann mit den Werten befüllt…
Schwieriger wirds denke ich beim Importieren der Daten, denn dann habe ich eine Reihe von verschiedenen Zeilen, in der meine Daten liegen. Sprich ich weiss nicht, wo meine Quelle ist. Da man aber ohnehin erst auswählen muss, welchen Datensatz man importiert denke ich dass ich mit SVerweis und „Bereich.Verschieben“ die Werte an eine feste Position übertrage…
Von da ab hab ich wieder kein Problem die Werte auszulesen und in den relevanten Bereich zu übertragen.
Jetzt zu dem Teil, weswegen ich bezweifle, dass es ohne Probleme klappt:
In meinem Eingabebereich sind Formeln, die überschrieben werden können, aber nicht müssen… Wenn ich diese Formeln kopiere, dann erhalte ich den Fehler =#Bezug!
Trage ich dagegen die Werte ein, dann bringt der import nicht so wirklich viel, weil man dann die Werte besser nicht mehr verändern sollte… Ich stecke also in einer kleinen Zwickmühle…
Jetzt die Frage: Was kann ich besser machen oder wie kann ich es besser angehen?
Muchas Gravias
Munich
Hallo Munich,
Ich habe ein Datenblatt, wo verschiedene Werte eingetragen
müssen. Je nachdem wie man die Werte ändert kommen am Ende
andere Diagramme raus. Da man aber sehr viele Daten eingeben
muss spiele ich mit dem Gedanken einer Export und Import
Funktion über Makros.
…
Jetzt zu dem Teil, weswegen ich bezweifle, dass es ohne
Probleme klappt:
In meinem Eingabebereich sind Formeln, die überschrieben
werden können, aber nicht müssen… Wenn ich diese Formeln
kopiere, dann erhalte ich den Fehler =#Bezug!
Trage ich dagegen die Werte ein, dann bringt der import nicht
so wirklich viel, weil man dann die Werte besser nicht mehr
verändern sollte… Ich stecke also in einer kleinen
Zwickmühle…
Das Problem würde ich folgendermaßen lösen:
Siehe ein separates Feld für die Eingabe vor. Ist das Feld leer/0, dann berechnet die Formel einen Wert auf Basis anderer Eingaben/Vorgaben, ist es ausgefüllt, dann übernimmt die Formel den Wert.
Jetzt die Frage: Was kann ich besser machen oder wie kann ich
es besser angehen?
Ich würde auf die „Import/Export“ funktion verzichten und alles innerhalb einer Arbeitsmappe abwickeln.
Innerhalb der Mappe gibt es folgende Blätter
-
Datentabelle
In dieser Tabelle speicherst du Daten deiner Varianten. Eingabe entweder per Standard-EXCEL-Datenbankmaske oder per USER-Form
-
Tabelle mit Kombi-Feld zur Auswahl der Variante
Per SVERWEIS werden auf Basis der ausgewählten Variante die Daten aus der 1. Tabelle ausgelesen, so das die Diagramm-Erstellung wie gewünscht erfolgen kann.
In dieser Tabelle sind auch alle Formeln enthalten, die dann das Aussehen des Diagramms bestimmen.
-
Das Diagramm-Blatt bzw. Blätter
Dieses muß dann per Makro entsprechend den Einstellungen in Blatt 2 aktualisiert werden.
Es ist natürlich auch möglich (so wie du es planst) Tabelle2 als Ausgangspunkt für die Daten zu verwenden. Dann müssen per Makro die Daten der Felder ausgelesen und nach Tabelle1 transferiert werden. Zum Einlesen von vorhandenen Daten verwendest du dann auch ein Makro, dass nach Vorauswahl des Datensatzes die Daten in die einzelnen Felder einträgt.
Gruß
Franz
ich denke ich verstehe was Du meinst…
Das Problem ist dass das ganze schon recht komplex ist und ich dann alle Formeln, die sich die Daten aus den Eingabezellen holen wieder umschreiben müsste und das will ich eigentlich nicht (Oder hab ich Dich doch nicht richtig verstanden…?)
Ich hab indes noch ein anderes Problem… Und zwar will ich in Spalte A nach einem bestimmten Wert suchen und dann die komplette Zeile in der der Wert gefunden wurde selektieren… Wenn der Wert aber nicht gefunden wird dann krieg ich eine Fehlermeldung…
Wie kann ich diese umgehen?
mein Code bisher:
Range("F3").Select
(...)
ID = ActiveCell.Value 'Festlegen des Suchstrings
Sheets("Import & Export").Select ' Selektieren des richtigen Tabs
Columns("A:A").Select ' Selektieren des Suchbereiches
Cells.Find(What:=ID, After:=ActiveCell, LookIn:=xlValues, LookAt:= \_
xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= \_
False, SearchFormat:=True).Activate 'Suche
ActiveCell.Select ' Selektieren der gefundenen Zeile
Range(Selection, Selection.End(xlToRight)).Select ' Selektieren der ganzen Spalte
Bin für alle Tipps dankbar (bin absoluter VBA newbie)
Hallo Munich,
Wenn Deine Arbeit zu weit fortgeschritten ist, dann lohnt sich ein Umbau sicherlich nicht.
Ich hab indes noch ein anderes Problem… Und zwar will ich in
Spalte A nach einem bestimmten Wert suchen und dann die
komplette Zeile in der der Wert gefunden wurde selektieren…
Wenn der Wert aber nicht gefunden wird dann krieg ich eine
Fehlermeldung…
Wie kann ich diese umgehen?
mein Code bisher:
Range(„F3“).Select
(…)
ID = ActiveCell.Value 'Festlegen des Suchstrings
Sheets(„Import & Export“).Select ’ Selektieren des
richtigen Tabs
Columns(„A:A“).Select ’ Selektieren des Suchbereiches
Cells.Find(What:=ID, After:=ActiveCell, LookIn:=xlValues,
LookAt:= _
xlWhole, SearchOrder:=xlByColumns,
SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=True).Activate 'Suche
ActiveCell.Select ’ Selektieren der gefundenen Zeile
Range(Selection, Selection.End(xlToRight)).Select ’
Selektieren der ganzen Spalte
Bin für alle Tipps dankbar (bin absoluter VBA newbie)
Mit folgender Konstruktion kannst Du die Fehlermeldung vermeiden (Code getestet unter EXCEL97):
Private Sub CommandButton1\_Click()
'
On Error GoTo Fehlermeldung 'Diese Zeile muss vor dem möglichen Fehler plaziert sein
AktuelleTabelle = ActiveSheet.Name 'Dies ist die Tabelle in der der Button ist
Id = Range("F3").Value
Sheets("Import & Export").Select
ActiveSheet.Columns("A:A").Select
Selection.Find(What:=Id, After:=ActiveCell, LookIn:=xlValues, LookAt:= \_
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False \_
).Select
ActiveSheet.Range(Selection, Selection.End(xlToRight)).Select ' Selektieren der ganzen Spalte
'Hier weiteren Code für das Makro einfügen
Exit Sub 'Makro abgearbeitet und wird verlassen
Fehlermeldung:
Sheets(AktuelleTabelle).Select
Test = MsgBox("Suchbegriff nicht in Liste", 0, "Falscher Suchbegriff")
End Sub
Alternative: Du trägst den Wert in F3 via Kombinationsfeld ein und verwendest die Spalte A in „Import & Export“ als „ListFillRange“.
Dann werden immer gültige Suchbegriffe eingegeben.
Gruß
Franz
1 „Gefällt mir“