Autor
|
Thema: Excel Makro Zellen kopieren und durch Usereingabe einfügen (1935 mal gelesen)
|
notwist Mitglied Konstrukteur
Beiträge: 6 Registriert: 21.11.2013
|
erstellt am: 21. Nov. 2013 12:59 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich bin nicht sehr bewandt in VBA-Programmierung. Ein ähnliches Thema habe ich auch im Forum hier nicht gefunden, daher der neue Thread. Momentan versuche ich mit Bordmitteln (also Rekorder und minimalen Fähigkeiten des ändern von Codes) ein Makro hinzukriegen. Ich möchte gerne die ausgewählte Zelle kopieren und deren Wert durch Auswahl einer Zelle (die immer verschieden ist) den Wert dort einfügen. Meine Frage ist jetzt: Ist es mit Bordmitteln überhaupt möglich? Bzw. habt ihr dann einen Gedankenanstoss für dieses Problem? Danke schonmal fürs Lesen. T. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
carsten-3m Mitglied Dipl.-Ing. Mbau (Produktmanagement, Patent- und Normwesen)
Beiträge: 950 Registriert: 08.05.2007 Excel 2010
|
erstellt am: 21. Nov. 2013 13:12 <-- editieren / zitieren --> Unities abgeben: Nur für notwist
Zitat: Original erstellt von notwist: Ist es mit Bordmitteln überhaupt möglich?
Ja, und zwar mit den Windows Standardfunktionen Kopieren und Einfügen. Gut, Du möchtest etwas mehr, dafür ist aber Deine Problembeschreibung noch zu lückenbehaftet. Bitte genauer beschreiben worum's geht. ------------------ Gruß, Carsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
notwist Mitglied Konstrukteur
Beiträge: 6 Registriert: 21.11.2013
|
erstellt am: 21. Nov. 2013 13:35 <-- editieren / zitieren --> Unities abgeben:
Hallo Carsten, okay, war wohl wirklich etwas zu unausführlich. Ich habe eine Checkliste mit verschiedensten Einträgen. In einer Zelle bündele ich diese Informationen zusammen, weil ich sie dann in eine ToDo-Liste kopieren möchte. In dieser ToDo-Liste möchte ich auswählen, wohin dieser Zelleninhalt kopiert werden soll. Der ist immer ein anderer. Also markiere ich diese Zelle, in der die Info gesammelt wird, in meiner Checkliste, drücke einen Button mit dem Makro, wähle die Zielzelle aus und dort soll der Wert der eingefügt werden. Ich habe auch ganz dilletantisch schon mal einen Code gesucht, der aber nicht wirklich funktioniert, bzw. beim Ausführen des Makros in der Zelle, in der (=A1&A2...) gesammelt wird, kommt "Laufzeitfehler '13' Typen unverträglich" _______________________ Sub ChecklisteUebertragen() Dim Ziel Set Ziel = Application.InputBox("Ziel auswählen", , ActiveCell, , , , , 8) Ziel.Value = ActiveCell.Value Worksheets(Ziel.Worksheet.Name).Activate 'ggf löschen Ziel.Select 'ggf löschen End Sub _____________________ Was genau am Code nicht funktioniert, weiß ich nicht. Vielleicht gibt es ja über den Makrorekorder eine Möglichkeit? Da würde ich es schaffen, allerdings die Usereingabe, die krieg ich nicht hin. T. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
carsten-3m Mitglied Dipl.-Ing. Mbau (Produktmanagement, Patent- und Normwesen)
Beiträge: 950 Registriert: 08.05.2007 Excel 2010
|
erstellt am: 21. Nov. 2013 13:48 <-- editieren / zitieren --> Unities abgeben: Nur für notwist
Grundsätzlich ließe sich ein solcher Mechanismus wohl programmieren, aber... es ginge immer noch mehr als simpel mit STRG+C und STRG+V. Es muss augenscheinlich etwas mehr dahinter stecken als Du uns hier verätst. Erzähl doch mal bitte, warum Du "unbedingt" ein Makro benötigst für Funktionen, die Windows (und Excel natürlich auch) als Standard bereits mitbringen. Ich kanns mir derzeit einfach noch nicht erklären. Vielleicht muss eine komplexere Werttranformation (von der hier nichts steht) erfolgen oder was weiß ich. Einfach Kopieren und Einfügen kanns doch wohl nicht sein, oder? ------------------ Gruß, Carsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
notwist Mitglied Konstrukteur
Beiträge: 6 Registriert: 21.11.2013
|
erstellt am: 21. Nov. 2013 13:57 <-- editieren / zitieren --> Unities abgeben:
|
carsten-3m Mitglied Dipl.-Ing. Mbau (Produktmanagement, Patent- und Normwesen)
Beiträge: 950 Registriert: 08.05.2007 Excel 2010
|
erstellt am: 21. Nov. 2013 15:02 <-- editieren / zitieren --> Unities abgeben: Nur für notwist
Aha, jetzt kann ich zumindest Deinen Gedankengang nachvollziehen. Denkbarer einfacher Lösungsansatz: - Nutzer kopiert herkömmlich (Auswahl Quellezelle und STRG+C oder gängige Alternative) - Nutzer wählt Zielzelle - Nutzer klickt Button zum Einfügen Spezial "nur Werte" Denkbarer aufwändiger Lösungsansatz: - Nutzer wählt Quellzelle - Nutzer klickt Button - Programm kopiert Daten der Quellzelle - Programm wartet auf Auswahl der Zielzelle - Nutzer wählt Zielzelle - Programm erkennt das (Ereignisüberwachung) - Programm fügt Werte in Zielzelle ein (Einfügen Spezial "nur Werte") Die einfache Lösung könnte mit Makroaufzeichnung und sehr geringer Nacharbeit erzeugt werden. Die aufwändige (von der ich meine, dass sie programmierbar ist, ohne es im Detail zu wissen) würde insbesondere Wissen zu korrekter Ereignisauswertung erfordern. ------------------ Gruß, Carsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
notwist Mitglied Konstrukteur
Beiträge: 6 Registriert: 21.11.2013
|
erstellt am: 21. Nov. 2013 15:56 <-- editieren / zitieren --> Unities abgeben:
Gut. Also ich hatte ja auch mal versucht, den einfachen Lösungsansatz im Rekorder zu realisieren. Folgende Schritte sind ja kein Problem. - Nutzer wählt Quellzelle - Nutzer klickt Button - Programm kopiert Daten der Quellzelle Der Schritt hier, den krieg ich wohl nicht so einfach rein, oder? - Programm wartet auf Auswahl der Zielzelle - Nutzer wählt Zielzelle - Programm erkennt das (Ereignisüberwachung) - Programm fügt Werte in Zielzelle ein (Einfügen Spezial "nur Werte") Also gibt es hierzu Tutorials oder Input in Form von hilfreichen Hinweisen? Ich wüsste nicht mal, wie ich anfangen soll... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
..... Mitglied
Beiträge: 433 Registriert: 01.07.2011
|
erstellt am: 21. Nov. 2013 16:09 <-- editieren / zitieren --> Unities abgeben: Nur für notwist
Du suchst sowas? Code: Sub BenutzerWahl() Dim ZielZelle As Range Set ZielZelle = Application.InputBox(prompt:="Bereich eingeben oder mit Maus wählen", Type:=8) MsgBox ZielZelle.Address End Sub
>> Also gibt es hierzu Tutorials oder Input in Form von hilfreichen Hinweisen? Ich wüsste nicht mal, wie ich anfangen soll...Bei google Im Ernst, es gibt haufenweise Tutorials zum Thema VBA-Einstieg, bleibt nur noch der Tipp: Üben, üben, üben. Viel Erfolg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
notwist Mitglied Konstrukteur
Beiträge: 6 Registriert: 21.11.2013
|
erstellt am: 21. Nov. 2013 16:20 <-- editieren / zitieren --> Unities abgeben:
|
..... Mitglied
Beiträge: 433 Registriert: 01.07.2011
|
erstellt am: 21. Nov. 2013 16:38 <-- editieren / zitieren --> Unities abgeben: Nur für notwist
Zum Beispiel so: Code: Option ExplicitSub BenutzerWahl() Dim QuellZelle As Range Dim ZielZelle As Range Set QuellZelle = Application.InputBox(prompt:="Quelle eingeben oder mit Maus wählen", Type:=8) Set ZielZelle = Application.InputBox(prompt:="Ziel eingeben oder mit Maus wählen", Type:=8) QuellZelle.Worksheet.Activate QuellZelle.Copy ZielZelle.Worksheet.Activate ZielZelle.Select Selection.PasteSpecial Application.CutCopyMode = False End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 22. Nov. 2013 09:20 <-- editieren / zitieren --> Unities abgeben: Nur für notwist
Hallo zusammen, ggf. lässt sich mit Blattschutz-Einstellungen etwas Ähnliches erreichen. Beim "normalen" Copy+Paste werden i. d. R. Formatierungen übernommen. (Persönliche Meinung an: Quelle - Strg+C - Ziel - Strg+V ist so ziemlich das Schnellste, was es gibt. Makros verwirren die Nutzer, Sicherheitseinstellungen müssen gewählt werden, der Anwender muss gefühlte 37x klicken für das gleiche Ergebnis. Ich würde bei Bordmitteln bleiben, C+P bzw. Kontextmenü der rechten Maustaste sollte doch auch der DAU kennen .) ------------------ DIN1055.de | Lastannahmen für Anwender Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
notwist Mitglied Konstrukteur
Beiträge: 6 Registriert: 21.11.2013
|
erstellt am: 22. Nov. 2013 12:29 <-- editieren / zitieren --> Unities abgeben:
|
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 22. Nov. 2013 12:47 <-- editieren / zitieren --> Unities abgeben: Nur für notwist
ich bin auch auf dem Standpunkt -User aufschlauen ;-) Ansonsten halte ich das Excelsheet so einfach wie möglich und verzichte auf Spielereien, wie aufwändige Fomate, Bedingte Formatierungen etc. leider dann man das Paste nicht abfangen, das wäre sicherlich das einfachste Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |