Autor
|
Thema: Zelle kopieren vba (3290 / mal gelesen)
|
OibelTroibel Mitglied Konstrukteur
Beiträge: 536 Registriert: 18.04.2014 ACAD/Inventor 2018-21
|
erstellt am: 24. Okt. 2016 10:27 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen Ich habe eine Tabelle die ständig wächst. In dieser Tabelle werden Lizenzdaten generiert und verwaltet. UserID und Passwort wird mittels Formel berechnet. Nun möchte ich die berechneten werte in Spalte X horizontal in Spalte Y kopieren, sodass ich in Spalte Y nur die effektiven Werte ohne Formel habe. Könnt ihr mir da helfen? Beste Grüsse Raphael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 24. Okt. 2016 11:00 <-- editieren / zitieren --> Unities abgeben: Nur für OibelTroibel
Moin, wie weit kommst Du denn alleine? Kennst Du schon den Makrorekorder? >> Makrorekorder - Wie benutze ich ihn << sowie >> Achtung Makrorekorder oder Wer selektiert denn da << Das Kopieren von Zellen inklusive Format, bzw. mit/ohne Formeln gehört mit zu den wenigen Dingen, wofür man das Select bzw. das Paste.Special benötigt. Der wirft dann sowas aus: Code: Sub Makro1() ' ' Makro1 Makro '' Range("X1").Select Selection.Copy Range("Y1").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False End Sub
Kann man noch verkürzen (siehe link2) und muß sich zusätzlich Gedanken für die Schleifengestaltung machen (es wird Range("X1") statt Cells(1,24) verwendet). Wenn's ganz schnöde läuft in Deiner Tabelle, sollte jedoch auch schon die Zeile Code: Cells(1, 25) = Cells(1, 24).Value
ausreichen. Noch ne schmucke Schleife drum herum und feddisch. Code: Sub KopieOibelTroibel() Dim a% For a = 1 To Columns(1).Find("*", [A1], , , xlByRows, xlPrevious).Row Cells(a, 25) = Cells(a, 24).Value Next a End Sub
HTH PS: Muß es denn VBA sein? Ansonsten: Spalte X markieren > STRG+C >> Spalte Y markieren >> Einfügen > Inhalte einfügen > Werte
------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
OibelTroibel Mitglied Konstrukteur
Beiträge: 536 Registriert: 18.04.2014
|
erstellt am: 24. Okt. 2016 11:10 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank für deine schnelle Antwort. Ehrlich gesagt komme ich mit vba alleine nicht weit. Was ich bereits herausgefunden, dass meine Anforderung mit Excelformeln nicht realisierbar ist. Ich habe ähnliche vba scripts gefunden, jedoch bin ich damit auch nicht weitergekommen, da ich diese nicht anpassen konnte. Ich versuche jetzt dein Code zu verstehen und in meine Tabelle zu integrieren. Besten Dank auf für die Links zum Makrorekorder, die lese ich gerne durch. Beste Grüsse Raphael Edit: Es muss nicht vba sein, aber manuell kopieren möchte ich am liebsten nicht:-) [Diese Nachricht wurde von OibelTroibel am 24. Okt. 2016 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
OibelTroibel Mitglied Konstrukteur
Beiträge: 536 Registriert: 18.04.2014 ACAD/Inventor 2018-21
|
erstellt am: 24. Okt. 2016 12:43 <-- editieren / zitieren --> Unities abgeben:
Habe nun etwas mit deinem Code herumgespielt und er funktioniert wie gewollt. Was ich aber nicht verstehe, warum zählt er nur bis 9 und hört in der 10 Zeile auf zu kopieren? Wie müsste ich den Code ergänzen, damit bereits vorhandene Einträge in Spalte Y nicht kopiert werden? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 24. Okt. 2016 12:55 <-- editieren / zitieren --> Unities abgeben: Nur für OibelTroibel
Zitat: Was ich aber nicht verstehe, warum zählt er nur bis 9 und hört in der 10 Zeile auf zu kopieren?
Hast Du diesen code 1:1 übernommen? Code: Sub KopieOibelTroibel() Dim a% For a = 1 To Columns(1).Find("*", [A1], , , xlByRows, xlPrevious).Row Cells(a, 25) = Cells(a, 24).Value Next a End Sub
Dort wird die letzte beschriebene Zeile in Spalte A ermittelt, die dann als Ende der Schleife gilt. (Siehe dazu z.B. >> [VBA] Letzte Spalte / Letzte Zeile <<)Wenn Du also in Spalte X Werte bis Zeile 27 hast, in Spalte A aber nur bis Zeile 9, dann passiert das, was Du beschreibst. Du könntest also das Schleifenende selber festelegen Code: (For a = 1 to 100)
oder Dich auf die Spalte beziehen, die für Dich relevant ist Code: (For a = 1 To Columns(24).Find("*", [X1], , , xlByRows, xlPrevious).Row)
Zitat: Wie müsste ich den Code ergänzen, damit bereits vorhandene Einträge in Spalte Y nicht kopiert werden?
Indem Du nicht bei Zeile 1 startest, sondern ensprechend später. Ich hoffe, diese Transferleistung schaffst Du jetzt, nachdem ich die Ermittlung des Schleifenendes erläutert habe Oder natürlich prüfst, ob in Cells(a, 25) schon was drin steht, und nur dann weitermachst, wenn nicht. Falls doch, Zeile überspringen. ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
OibelTroibel Mitglied Konstrukteur
Beiträge: 536 Registriert: 18.04.2014
|
erstellt am: 24. Okt. 2016 15:55 <-- editieren / zitieren --> Unities abgeben:
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|