Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Inhaltzellen kopieren?

Inhaltzellen kopieren?
Ahmadian
Hallo zusammen,
ich bitte um Eure Hilfe!
Folgendes:
In Tabelle1 Zellen A1:A34 stehen die Arbeitszeiten wie folgt:
06:00 - 18:00 TO
06:00 - 18:00 T7
18:00 - 06:00 Au
nun brauche ich einen VBA-Code, der die Arbeitszeiten mit den oben genannten Zeichen (TO/T7/Au)sucht und in den anderen Tabellen kopiert.
Beispiel:
Wenn in Tabelle1 A1:A34 die Dienste mit den Zeichen TO vorhanden sind, sollen diese in die Tabelle2 an den gleichen stellen, wie in Tabelle1 A1:A34 kopiert werden .
Wenn in Tabelle1 A1:A34 die Dienste mit den Zeichen T7 vorhanden sind, sollen diese in die Tabelle3 an den gleichen stellen, wie in Tabelle1 A1:A34 kopiert werden .
usw.............
vielen Dank für eine kurze Rückmeldung!
Mit freundlichen Grüßen
Ahmadian
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: hier ein Beispiel ...
17.06.2011 00:56:07
Ahmadian
Hallo Lieber Matthias L,
Vielen Dank für Deine Hilfe. Der Code funktioniert prima!
Mit freundlichen Grüßen
Ahmadian
Anzeige
und noch eine Variante ...
17.06.2011 05:14:37
Matthias
Hallo Ahmadian
Sub kopieren3()
Dim RnG As Range, MyTab As Worksheet
For Each RnG In Tabelle1.Range("A1:AA34")
If RnG  "" Then
If Right(RnG, 2) = "TO" Then Set MyTab = Tabelle2
If Right(RnG, 2) = "T7" Then Set MyTab = Tabelle3
If Right(RnG, 2) = "Au" Then Set MyTab = Tabelle4
MyTab.Range(RnG.Address) = RnG
End If
Next
Set MyTab = Nothing
End Sub
Userbild
Anzeige
AW: hier ein Beispiel ...?
17.06.2011 01:40:05
Ahmadian
Hallo Matthias L,
wie kann ich bitte den Bereich erweitern? Ich möchte auch zusätzlich den Bereich B1:AA34 in Tabelle1 suchen und kopieren lassen?
Mit freundlichen Grüßen
Ahmadian
kein Problem ...
17.06.2011 04:38:33
Matthias
Hallo Ahmadian
Sub kopieren2()
Dim x&, j&, MyTab As Worksheet
For j = 1 To 27
For x = 1 To 34
With Tabelle1
If .Cells(x, j)  "" Then
If Right(.Cells(x, j), 2) = "TO" Then Set MyTab = Tabelle2
If Right(.Cells(x, j), 2) = "T7" Then Set MyTab = Tabelle3
If Right(.Cells(x, j), 2) = "Au" Then Set MyTab = Tabelle4
MyTab.Cells(x, j) = .Cells(x, j)
End If
End With
Next
Next
Set MyTab = Nothing
End Sub
Userbild
Anzeige
AW: hier ein Beispiel ...?
17.06.2011 04:41:00
Mustafa
Hallo Ahmadian,
dann so :
Sub kopiere()
Dim x&, y&, MyTab As Worksheet
For y = 1 To 27    ' Spalten 1- 27 , also A bis AA
For x = 1 To 34   ' Zeilen  1 - 34
With Tabelle1
If .Cells(x, y)  "" Then
If Right(.Cells(x, y), 2) = "TO" Then Set MyTab = Tabelle2
If Right(.Cells(x, y), 2) = "T7" Then Set MyTab = Tabelle3
If Right(.Cells(x, y), 2) = "Au" Then Set MyTab = Tabelle4
MyTab.Cells(x, y) = .Cells(x, y)
End If
End With
Next
Next
End Sub
Rückmeldung obs Hilft wäre nett.
Gruß aus der Domstadt Köln.
Anzeige
noch ein Vorschlag
17.06.2011 08:09:45
Erich
Hi Ahmadian,
probier mal:

Option Explicit
Sub kopiere2()
Dim zz As Long, ss As Long, wksZ As Worksheet
With Tabelle1
For ss = 1 To 27
For zz = 1 To 34
If .Cells(zz, ss)  "" Then
Select Case Right(.Cells(zz, ss), 2)
Case "TO": Set wksZ = Tabelle2
Case "T7": Set wksZ = Tabelle3
Case "Au": Set wksZ = Tabelle4
'                  Case Else: MsgBox "TO - T7 - AU nicht gefunden" ' evtl.
End Select
If Not wksZ Is Nothing Then wksZ.Cells(zz, ss) = .Cells(zz, ss)
Set wksZ = Nothing
End If
Next
Next
End With
End Sub
Bei den bisherigen Codes gibt es einen Fehler, wenn in einer der geprüften Zellen TO, T7 oder AU
nicht gefunden wird - dann ist myTab Nothing oder (noch schlimmer) die Tabelle vom letzten Treffer.
Noch eine Bemerkung: Das "With" steht besser vor den Schleifen als innerhalb.
Und noch eine Frage: Willst du mit den Codenamen oder den "sichtbaren" Blattnamen arbeiten?
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
und noch einer
17.06.2011 08:22:20
Erich
Hi Ahmadian ,
wie wäre es damit?

Option Explicit
Sub kopiere2()
Dim zz As Long, ss As Long, wksZ As Worksheet
With Tabelle1
For ss = 1 To 27
For zz = 1 To 34
Select Case Right(.Cells(zz, ss), 2)
Case ""    ' Zelle leer, nichts zu tun
Case "TO": Set wksZ = Tabelle2
Case "T7": Set wksZ = Tabelle3
Case "Au": Set wksZ = Tabelle4
Case Else: MsgBox "TO / T7 / AU nicht gefunden in " & _
.Cells(zz, ss).Address(0, 0)
End Select
If Not wksZ Is Nothing Then
wksZ.Cells(zz, ss) = .Cells(zz, ss)
Set wksZ = Nothing
End If
Next
Next
End With
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
Danke fürs Testen :o)
17.06.2011 11:04:50
Matthias
Hallo Erich
Das mit dem Fehler war mir noch garnicht aufgefallen, Danke.
Und mit dem With vor den Schleifen, hast Du vollkommen Recht :-)
Ich habs für mich jetzt mal so geändert:
Sub kopieren4()
Dim x&, j&, MyTab As Worksheet
With Tabelle1
For j = 1 To 27
For x = 1 To 34
If .Cells(x, j)  "" And (Right(.Cells(x, j), 2) = "TO" Or Right(.Cells(x, j), 2) = "T7"  _
Or Right(.Cells(x, j), 2) = "Au") Then
If Right(.Cells(x, j), 2) = "TO" Then Set MyTab = Tabelle2
If Right(.Cells(x, j), 2) = "T7" Then Set MyTab = Tabelle3
If Right(.Cells(x, j), 2) = "Au" Then Set MyTab = Tabelle4
MyTab.Cells(x, j) = .Cells(x, j)
End If
Next
Next
End With
Set MyTab = Nothing
End Sub

Sub kopieren5() Dim RnG As Range, MyTab As Worksheet For Each RnG In Tabelle1.Range("A1:AA34") If RnG "" And (Right(RnG, 2) = "TO" Or Right(RnG, 2) = "T7" Or Right(RnG, 2) = "Au") _ Then If Right(RnG, 2) = "TO" Then Set MyTab = Tabelle2 If Right(RnG, 2) = "T7" Then Set MyTab = Tabelle3 If Right(RnG, 2) = "Au" Then Set MyTab = Tabelle4 MyTab.Range(RnG.Address) = RnG End If Next Set MyTab = Nothing End Sub
scheint ja so auch zu klappen.
und Danke nochmal für die Infos!
Userbild
Anzeige
AW: und noch einer
17.06.2011 11:11:54
Ahmadian
Guten Morgen zusammen,
1000 Dank für Eure Hilfe und für Eure Mühe!
Ihr Seid Klasse!
Mit freundlichen Grüßen
Ahmadian :-)
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige