Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1224to1228
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

VBA - Kopierfunktionalität

VBA - Kopierfunktionalität
Claudia
Hallo zusammen,
stehe wieder vor einem großen Problem. Aufgrund der Schwierigkeit habe ich eine Besipielmappe angehängt und das Problem dort beschrieben.
https://www.herber.de/bbs/user/76381.xls
Vielleicht hat ja jemand Lust, sich das mal anzuschauen.
Liebe Grüße
Claudia

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
hier ein erster Versuch ...
29.08.2011 21:13:31
Matthias
Hallo Claudia
probier das mal als groben Einstieg ...
https://www.herber.de/bbs/user/76383.xls
Ist das in etwa die richtige Richtung?
Gruß Matthias
AW: hier ein erster Versuch ...
29.08.2011 21:21:52
Claudia
Hallo Matthias,
das ging ja fix. Das geht sehr in meine Richtung. Das kopieren müsste allerdings immer unter die letzte gefüllte Zelle in Spalte A erfolgen. Meine Beschreibung war da nicht genau, weil ich das als grünen Bereich deklariert habe. Es soll aber immer in die erste freie Spalte.
Dann wäre noch die Frage, wie man es hinbekommt, mehrere Spalten reinzukopieren. Allerdings stelle ich mich schon auf den Standpunkt, dass ich das Makro auch öfters laufen lassen kann. Das wäre kein Problem.
Schön wäre es, wenn ich aber noch mitgeben könnte, ob Inhalt aus Spalte A und der betreffenden Spalte oder nur Inhalt der betreffenden Spalte.
Liebe Grüße und vielen Dank!
Claudia
Anzeige
Ach so....
29.08.2011 21:32:05
Claudia
die Spalten, die in Spalte A reinkopiert werden sollen, können unterschiedlich lang sein. Es sind also immer die gleiche Anzahl an Zellen / Zeilen.
Variante 2
29.08.2011 22:16:19
Matthias
Hallo Claudia
Versuchs mal so:
Option Explicit
Sub Claudia2()
Dim X&, y&, col&, loletzte&, Frage$
Frage$ = InputBox("Bitte Spaltenbuchstabe für Kombination wählen", "Kombination wählen", "G")
If StrPtr(Frage) = 0 Then Exit Sub 'Abbruch angeklickt
Select Case UCase(Frage) 'UCase -  Vergleich in Großschrift
Case Is = "B"
col = 2
Case Is = "C"
col = 3
Case Is = "D"
col = 4
Case Is = "E"
col = 5
Case Is = "F"
col = 6
Case Is = "G"
col = 7
Case Is = "H"
col = 8
Case Is = "I"
col = 9
Case Is = "J"
col = 10
Case Is = "K"
col = 11
Case Is = "L"
col = 12
Case Is = "M"
col = 13
Case Else
Exit Sub
End Select
For X = 2 To 32
loletzte = Cells(Rows.Count, 1).End(xlUp).Row + 1
If Cells(X, 1)  "" And Cells(X, col)  "" Then
Cells(loletzte, 1) = Cells(X, 1) & Cells(X, col)
End If
Next
End Sub
Zitat
... ob Inhalt aus Spalte A und der betreffenden Spalte oder nur Inhalt der betreffenden Spalte ...
Könnte man über eine Boolsche Variable lösen.


Zitat:
Das kopieren müsste allerdings immer unter die letzte gefüllte Zelle in Spalte A erfolgen.
Allerdings hast Du dann irgendwann ein Problem, denn Du hast nur eine begrenzte Anzahl Zeilen zur Verfügung
Gruß Matthias
Anzeige
ach so ...
29.08.2011 23:06:02
Matthias
Hallo
Zitat:
die Spalten, die in Spalte A reinkopiert werden sollen, können unterschiedlich lang sein. Es sind also immer die gleiche Anzahl an Zellen / Zeilen.
?
Gruß Matthias
neue Variante ...
29.08.2011 23:12:35
Matthias
Hallo
Option Explicit
Public Frage$
Sub Claudia4()
Dim X&, col&, loletzte&
Frage$ = InputBox("Bitte Spaltenbuchstabe für Kombination wählen", "Kombination wählen", "G")
If StrPtr(Frage) = 0 Then Exit Sub 'Abbruch angeklickt
Select Case UCase(Frage) 'UCase - wandelt "klein geschriebene" Spaltenbuchstaben um in Groß _
schrift
Case Is = "B"
col = 2
Case Is = "C"
col = 3
Case Is = "D"
col = 4
Case Is = "E"
col = 5
Case Is = "F"
col = 6
Case Is = "G"
col = 7
Case Is = "H"
col = 8
Case Is = "I"
col = 9
Case Is = "J"
col = 10
Case Is = "K"
col = 11
Case Is = "L"
col = 12
Case Is = "M"
col = 13
Case Else
Exit Sub
End Select
'Wählen ob inkl. Spalte(A)
'oder nur den Wert der ausgewählten Spalte
If MsgBox("Kopiere Spalte: " & UCase(Frage) & vbLf & "inkl. KundenNr.: aus Spalte ""A"" ?",  _
vbYesNo) = vbYes Then
For X = 2 To 32
loletzte = Cells(Rows.Count, 1).End(xlUp).Row + 1
If Cells(X, 1)  "" And Cells(X, col)  "" Then
Cells(loletzte, 1) = Cells(X, 1) & Cells(X, col) 'SpalteA + Auswahlspalte
End If
Next
Else
For X = 2 To 32
loletzte = Cells(Rows.Count, 1).End(xlUp).Row + 1
If Cells(X, 1)  "" And Cells(X, col)  "" Then
Cells(loletzte, 1) = Cells(X, col) 'nur Auswahlspalte
End If
Next
End If
End Sub
Gruß Matthias
Anzeige
AW: neue Variante ...
30.08.2011 09:54:46
Claudia
Hallo Matthias,
zu der Zeit habe ich schon geschlafen. Handling ist prima.
Allerdings werden nur ca. 30 Zeilen kopiert. Ich würde aber gerne alle gefüllten Zellen der ausgewählten Spalte kopieren.
Ich vermute dass liegt an der Schlefe 2 to 32 ?
Liebe Grüße
CLaudia
AW: neue Variante ...
30.08.2011 09:54:52
Claudia
Hallo Matthias,
zu der Zeit habe ich schon geschlafen. Handling ist prima.
Allerdings werden nur ca. 30 Zeilen kopiert. Ich würde aber gerne alle gefüllten Zellen der ausgewählten Spalte kopieren.
Ich vermute dass liegt an der Schlefe 2 to 32 ?
Liebe Grüße
CLaudia
Da vermutest du wohl richtig! Gruß owT
30.08.2011 10:11:33
Luc:-?
:-?
hier ohne Select Case
30.08.2011 10:37:41
Matthias
Hallo
Ich hoffe mir ist da kein Fehler unterlaufen.
Option Explicit
Public Frage$
Sub Claudia6()
Dim X&, col&, loletzte&, LastCol&
Frage$ = InputBox("Bitte Spaltenbuchstabe(n) für Kombination wählen", "Kombination wählen", "G" _
)
If StrPtr(Frage) = 0 Then Exit Sub 'Abbruch angeklickt
If IsNumeric(Frage) Then Exit Sub  'Eingabe als Text (Spaltenbuchstaben) erzwingen
On Error GoTo Fehler
col = Cells(1, Frage).Column
'Zeile(der letzte Zelle) der ausgewählten Spalte wählen
LastCol = Cells(Rows.Count, col).End(xlUp).Row
'MsgBox "Spalte " & col & " wurde gewählt"
If MsgBox("Kopiere Spalte: " & UCase(Frage) & vbLf & "inkl. KundenNr.: aus Spalte ""A"" ?",  _
vbYesNo) = vbYes Then
For X = 2 To LastCol
loletzte = Cells(Rows.Count, 1).End(xlUp).Row + 1
If Cells(X, 1)  "" And Cells(X, col)  "" Then
Cells(loletzte, 1) = Cells(X, 1) & Cells(X, col) 'SpalteA + Auswahlspalte
End If
Next
Else
For X = 2 To LastCol
loletzte = Cells(Rows.Count, 1).End(xlUp).Row + 1
If Cells(X, 1)  "" And Cells(X, col)  "" Then
Cells(loletzte, 1) = Cells(X, col) 'nur Auswahlspalte
End If
Next
End If
Exit Sub
Fehler:
MsgBox "Bitte nur gültige Spaltenbuchstaben eingeben !" & vbLf & "[ " & UCase(Frage) & " ]  _
ist als Spalte nicht vorhanden", vbInformation, " Fehler"
End Sub
Das Beispiel:
https://www.herber.de/bbs/user/76392.xls
Gruß Matthias
Anzeige
AW: hier ohne Select Case
30.08.2011 19:15:34
Claudia
Hallo Matthias,
funktioniert prima. Das ist eine echte Vereinfachung.
Vielen Dank für Deine Geduld und die Hilfe!
Liebe Grüße
Claudia
ich hab nochmal etwas geändert ...
30.08.2011 21:14:50
Matthias
Hallo
Ist vielleicht bei der Anzeige der MSGBox etwas besser.
Und ein Abbrechen-Button ist jetzt auch noch mit drin.
https://www.herber.de/bbs/user/76403.xls
Gruß Matthias
AW: ich hab nochmal etwas geändert ...
31.08.2011 19:51:26
Claudia
Hallo Matthias,
per Zufall habe ich Deinen neuen Eintrag gesehen. Kann man sich irgenwie auch benachrichten, wenn ein Eintrag geschrieben wurde? Das war jetzt wirklich purer Zufall.
Deine Änderung ist auf alle Fälle eine weitere schöne Verbesserung.
Vielen Dank für Deine Hilfe!
Liebe Grüße
Claudia
Anzeige
Ja, das geht -> Bei Antworten Email-Info:
01.09.2011 07:23:04
Matthias
Hallo Claudia
Du kannst wenn Du einen neuen Beitrag schreibst festlegen das Du eine E-Mail-Benachrichtigung erhalten möchtest.
Bei Antworten Email-Info: einfach ein Häkchen setzen.
Gruß Matthias

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige