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

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
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.
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 :-)

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige