Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1488to1492
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Quellcode

Quellcode
21.04.2016 09:39:47
Xound
Guten Tag Forums Mitglieder,
zur Zeit beginne ich mit VBA einige Befehle aus und bin nichts so erfolgreich damit. Nichts desto trotz versuche ich eine Lösung für eine Aufgabe zu finden. Ich hoffe ihr könnt mir die Notwendigen Hilfestellungen hierfür geben.
Ich möchte folgende Aufgabe lösen:
Ich habe eine Tabelle mit 2 Spalten. 1- Nummerierung (1,2,3,...)
2 - Auswahl von Namen (Diese Namen sind im Namensmanager mit einen definierten Bereich zugewiesen)
Die Nummerierung soll zugleich eine Positionierung darstellen. Das heisst ich möchte Bsp: Wenn Nr.1 Paul ausgewählt ist, dass der Datenbereich von Paul an Position 1 kopiert wird. Die Position 1 ist dabei auch mit definerten Bereichen im Namensmanager definiert.
Wie würdet ihr den Quellcode ansetzen?
Meine Idee liegt darin:
Zelleninhalt als Text auslesen
Zelleninhalt als Text kopieren
Range(" Einfügen Text=Name(Bsp.paul)").Copy
Range("Postion1").Select
ActiveSheet.Paste
Vielleicht habt ihr eine Vorschlag für einen Code hierfür.
Vielen Dank im Voraus.
Euer Xound

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Quellcode
21.04.2016 11:13:56
ChrisL
Hi
Der Sinn der Aktion erschliesst sich für mich nicht, aber im Anhang ein Beispiel:
https://www.herber.de/bbs/user/105129.xlsm
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
Range("Position" & Cells(Target.Row, 1)) = Target
End If
End Sub

cu
Chris

AW: Quellcode
21.04.2016 13:52:52
Xound
Guten Tag Chris,
das sieht gut aus.
Jedoch fehlt mir da noch etwas: Die Namen sollten einzeln im Namensmanager aufgelistet werden.
So dass z.B. durch den Code Range("Name taucht auf z.B. Fritzili").Copy ich den definierten Bereich mit der Tabelle kopiere und an position "Nr" einfüge.
Meine Idee ist das eventuell so zu ergänzen:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
Range("Cells(Target.Row,1)").Copy
& paste to Range("Position" & Cells(Target.Row, 1)) = Target
End If
End Sub
Aber der Code funktioniert nicht.
Hätten Sie eine Idee?

Anzeige
AW: Quellcode
21.04.2016 14:34:00
ChrisL
Hi
Ist etwas schwierig, weil ich trotz deiner Beschreibung keine Ahnung habe, was ich hier eigentlich programmiere... vielleicht:
Cells(Target.Row,1).Copy Range("Position" & Cells(Target.Row, 1))
Da die von dir gewählte Vorgehensweise ziemlich einzigartig ist wäre es sinnvoll, diese einmal grundlegend zu hinterfragen. Lade doch mal ein konkretes Beispiel hoch und erkläre was du eigentlich bezwecken willst (losgelöst von deiner Umsetzungsidee).
cu
Chris

AW: Quellcode
21.04.2016 15:25:47
Xound
Servus Chris,
im Anhang ist die Musterdatei.
Ich fasse mal kurz zusammen an dieser Datei was mit diesen Code bezwegt werden soll.
Ziel ist eine dynamisches Kopieren und Einfügen der Bereiche aus den Katalog nach Vorgabe aus der Auswahltabelle.
Das heisst wenn ich Peter an Pos.1(Bereich Peter als Name hinterlegt) auswählen dann soll die Tabelle aus dem Reiter Katalog in den Reiter Tabelle an Pos.1 (Bereich als Name hinterlegt)kopiert& eingefügt werden.
Das soll so der Reihe nach durch Auswahl des Namens passieren.
Wenn nichts ausgewählt ist dann soll auch nichts an die Pos. kopiert werden.
So das nur die Bereiche an den Positionen kopiert und eingefügt werden die ausgewählt werden.
by the way: später werden da sehr verschiedene Eingabe und Augabemasken einegabaut z.B. Energiemenge(Strom & Wärme)oder Wassermenge; Aber nicht jeder benutzt z.B. Strom oder Wärme; die Tabellen werden sehr individuell werden, desehalb möchte ich später mit Farbigen Summierungen arbeiten um trotzdem alles so einfach wie möglich und effizient zusammenzu rechnen
Die Datei befindet sich wie geschrieben im Anhang. Vllt hast du eine einfachere Idee dafür. Weitere Erklärungen befinden sich in der Datei.
Vielen Dank schon jetzt für die Mühe :D
https://www.herber.de/bbs/user/105135.xlsx

Anzeige
AW: Quellcode
21.04.2016 16:15:44
ChrisL
Hi
Hier der Code...
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 6 And Target.Row > 8 Then
Worksheets("KatalogTabellen").Range(Target).Copy _
Worksheets("Tabellen").Range("Position" & Cells(Target.Row, 5))
End If
End Sub

Ich glaube aber nicht, dass dies wunschgemäss funktionieren wird, da die Länge der Blöcke ja variabel ist. Insofern kannst du nicht fix eine "Einfüge-Position" bestimmen.
Wie ich verstehe geht es darum "Blöcke" (z.B. C6:P23, C25:P45 usw.) gemäss Listenauswahl zu sortieren, wobei jeder Block unterschiedlich lang (auch breit?) sein kann. Die Stärke von Excel sind Tabellen und resp. Tabellenkalkulationen. Insofern stellt sich die Frage, ob du das Ganze nicht in eine strukturierte Tabellen-Logik rein bringen kannst.
Zurück zur Ausgangslage. Am sinnvollsten wäre m.E., wenn du eine durch VBA erkennbare Block-Trennung findest z.B. immer wenn die Leerzeile kommt beginnt ein neuer Block, der Name steht immer an fixer Position je Block. Oder in einer ausgeblendeten Spalte machst du z.B. ein "X" wenn ein Block beginnt oder endet, oder ein Tabellenrahmen (wobei Formatierungen bereits wieder schwerer zu Handeln sind wie Daten) usw.
Was du Ausgabemaske nennst ist vermutlich eine Auswertung. Aufgrund dessen, dass die Daten gemäss deiner Aussage unstrukturiert sind, wirst du mit der Auswertung weitere Schwierigkeiten bekommen. Vielleicht solltest du dir diesbezüglich bereits jetzt schon einmal einen Plan ausarbeiten ;)
Fazit, ich kann dir nur wärmstens empfehlen die Daten neu zu strukturieren...
cu
Chris

Anzeige
AW: Quellcode
22.04.2016 08:47:21
Xound
Guten Morgen Chris,
ich hab mir das gestern bischen durch den Kopf gehen lassen.
Die Strukturierung muss noch etwas ausgearbeitet werden. Ich versuche die Blöcke gleichgroß zu erstellen und mit einer Formatierung zu arbeiten( was ein Problem wird^^).
Mit welchen Befehl könnte ich die Eingefügten Blöcke wieder entfernen? z.B. bei einer Wahl, die man rückgängig machen wollte.
Mal ne Frage by the way wie lange beschäftigst du dich schon damit? Frage das weil ich zur Zeit am Anfang stehe und mich Frage wie lange ich zum Erlernen solcher Codes benötige.
Vielen Dank und Schönes Wochenende!

Anzeige
AW: Quellcode
22.04.2016 10:01:49
ChrisL
Hi
Schön dass ich dich überzeugen konnte, die Datei einheitlicher zu strukturieren. Ich bin sicher, dies wird dir für die Weiterentwicklung helfen.
Beide deiner Fragen kann man nicht pauschal beantworten.
Du könntest z.B. mittels =VERGLEICH() in VBA Application.Match() den Namen (resp. die Zeile mit dem Namen) suchen und so die Position bestimmen, um anschliessend den Block zu löschen. Vielleicht konkretisierst du dein Beispieldatei etwas weiter und stellst dann noch einmal eine neue Frage rein.
Mit Namen ist es übrigens so eine Sache, weil zwei Personen können den gleichen Namen haben. Noch besser wäre es mit einer eindeutigen Identifikation (z.B. Personalnummer) zu arbeiten.
Beschäftigen tue ich mich hobbymässig schon seit vielen Jahren mit Excel. Allerdings in unterschiedlicher Intensität und zudem hatte ich schon vorher ein wenig Vorkenntnisse, da ich Basic auf dem Commodore64 programmiert habe. Die Lerndauer hängt davon ab wie viel Zeit du investieren willst und kannst, aber ein paar Codezeilen solltest du relativ bald hin bekommen.
cu
Chris

Anzeige
AW: Quellcode
25.04.2016 12:07:14
Xound
Guten Morgen Chris,
würde heute den Code etwas anpassen wollen, jedoch tut sich da nichts. Hab die Ursache nicht gefunden.
Kannste eventuell den Code in die Excel Datei einpacken und einmal austesten?
Vielen Dank.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige