Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Tabellenbereiche per VBA Verschachteln
#1
hallo,

ich habe hier einen VBCode

PHP-Code:
Sub Verschachteln()
 
   Dim ws1 As Worksheetws2 As Worksheetws As Worksheetr1 As Ranger2 As Range
    Set ws1 
ThisWorkbook.Worksheets("Tabelle1")
 
   Set ws2 ThisWorkbook.Worksheets("Tabelle2")
 
   Set ws ThisWorkbook.Worksheets("Tabelle3")
 
   Set r1 ws1.Range("A1:D100")
 
   Set r2 ws2.Range("E1:H100")
 
   
    For i 
1 To r1.Rows.Count
        fz 
ws.Cells(Rows.Count1).End(xlUp).Row 1
        r1
.Rows(i).Copy ws.Cells(fz1)
 
       r2.Rows(i).Copy ws.Cells(fz 11)
 
   Next
End Sub 

Ich habe aber nicht 3 verschiedene Tabellenblätter als nicht 1,2,3
sondern nur ein Tabellenblatt1

PHP-Code:
Set ws1 ThisWorkbook.Worksheets("Tabelle1")
 
  Set ws2 ThisWorkbook.Worksheets("Tabelle2"
Ist klar Tabelle1 für ws1
und Tabelle1 für ws2

Nun mein Problem:
PHP-Code:
Set ws ThisWorkbook.Worksheets("Tabelle3"
Dies soll auch Tabellenblatt1 sein und zwar die Spalte GE

Wie ändere ich das?
Wie schreibt man/Frau das?

danke für jede Hilfe

LG
Angelina
Antworten Top
#2
Hallo Angelina,


Zitat:Ich habe aber nicht 3 verschiedene Tabellenblätter als nicht 1,2,3

sondern nur ein Tabellenblatt1

Dann brauchst du auch nur ein Tabellenblatt deklarieren bzw. intitalisieren oder kannst es gleich ganz weg lassen da ohnehin nur in den einem Blatt gearbeitet wird.


Code:
Sub Verschachteln()
   Dim ws As Worksheet 'deklarieren
   Dim r1 As Range
   Set ws = ThisWorkbook.Worksheets("Tabelle1") 'initalisieren
   Set r1 = ws.Columns("GE:GE") 'Dies soll auch Tabellenblatt1 sein und zwar die Spalte GE
End Sub

War das jetzt die Frage oder soll damit auch noch etwas gemacht werden?
:) aber an Nachfragen bist Du sicherlich schon gewöhnt.
lg Chris
Feedback nicht vergessen.
[Bild: v.gif]
3a2920576572206973742064656e20646120736f206e65756769657269672e
Antworten Top
#3
(24.02.2015, 12:05)chris-ka schrieb: Hallo Angelina,



Zitat:Ich habe aber nicht 3 verschiedene Tabellenblätter als nicht 1,2,3

sondern nur ein Tabellenblatt1

Dann brauchst du auch nur ein Tabellenblatt deklarieren bzw. intitalisieren oder kannst es gleich ganz weg lassen da ohnehin nur in den einem Blatt gearbeitet wird.



Code:
Sub Verschachteln()
   Dim ws As Worksheet 'deklarieren
   Dim r1 As Range
   Set ws = ThisWorkbook.Worksheets("Tabelle1") 'initalisieren
   Set r1 = ws.Columns("GE:GE") 'Dies soll auch Tabellenblatt1 sein und zwar die Spalte GE
End Sub

War das jetzt die Frage oder soll damit auch noch etwas gemacht werden?
:) aber an Nachfragen bist Du sicherlich schon gewöhnt.

hallo chris-ka,

ja ja ... beschämendes Verhalten ... aber vergessen wir es :15:

hm... dein Vorschlag verstehe ich jetzt nicht ganz
Warum?


woher ist in deinem Vorschlag der Bereich bekannt?

Code:
Set r1 = ws1.Range("A1:D100")
    Set r2 = ws2.Range("E1:H100")
Tabellenblatt1 hat 3 Spalten
sagen wir mal
Spalte A
Spalte B
und die Spalte GE

A und B wird nach GE verschachtelt - zeilenweise

oder denke ich wieder falsch?

LG
Angelina
Antworten Top
#4
Hallo Angelina,

versuch es mal so
Code:
Sub Verschachteln2()
   Dim ws1 As Worksheet, r1 As Range, r2 As Range
   Set ws1 = ThisWorkbook.Worksheets("Tabelle1")
   
   Set r1 = ws1.Range("A1:D100")
   Set r2 = ws1.Range("E1:H100")
   
   For i = 1 To r1.Rows.Count
       fz = ws1.Cells(Rows.Count, 187).End(xlUp).Row + 1
       r1.Rows(i).Copy ws1.Cells(fz, 187)
       r2.Rows(i).Copy ws1.Cells(fz + 1, 187)
   Next
End Sub
Gruß
Max
[-] Folgende(r) 1 Nutzer sagt Danke an Max für diesen Beitrag:
  • Angelina
Antworten Top
#5
Hi,


Code:
Sub Verschachteln()
   Dim ws As Worksheet, i As Long, fz as long
   Set ws = ThisWorkbook.Worksheets("Tabelle1")
   With ws
       For i = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row 'letzte Zeile in Spalte A auf dem Blatt Tabelle1
           fz = .Cells(Rows.Count, "GE").End(xlUp).Row + 1 'erste freie Zelle in Spalte GE
           .Cells(i, 1).Copy .Cells(fz, "Ge") 'kopiere die Zellen aus A in Spalte GE
           .Cells(i, 2).Copy .Cells(fz + 1, "GE") 'kopiere die Zellen aus B in Spalte GE
       Next
   End With
End Sub


wobei jetzt nicht zeilenweise sondern Zellen in Spalte GE zusammengeführt werden.
lg Chris
Feedback nicht vergessen.
[Bild: v.gif]
3a2920576572206973742064656e20646120736f206e65756769657269672e
Antworten Top
#6
Hi Chris,

so wie ich das verstehe wurde in dem Ursprungs-Makro doch zeilenweise aus unterschiedlichen Bereichen und Blättern
kopiert und dann jede gerade kopierte Zeile unter die zuvor kopierte Zeile eingefügt.
Soll das jetzt anders sein?

Gruß
Max
Antworten Top
#7
(24.02.2015, 13:07)Max schrieb: Hi Chris,

so wie ich das verstehe wurde in dem Ursprungs-Makro doch zeilenweise aus unterschiedlichen Bereichen und Blättern
kopiert und dann jede gerade kopierte Zeile unter die zuvor kopierte Zeile eingefügt.
Soll das jetzt anders sein?

Gruß
Max

Hallo Max,

keine Ahnung!
ich habe lt. den Angaben von Angelina den Code jetzt umgebaut. (siehe Zitat)
Aber ich gebe Dir Recht der Ursprungscode und die Beschreibung was erreicht werden sollte weichen von einander ab....
mal schauen was Angelina dazu sagt.

Zitat:sagen wir mal

Spalte A
Spalte B
und die Spalte GE

A und B wird nach GE verschachtelt - zeilenweise

lg
lg Chris
Feedback nicht vergessen.
[Bild: v.gif]
3a2920576572206973742064656e20646120736f206e65756769657269672e
Antworten Top
#8
(24.02.2015, 13:07)Max schrieb: Hi Chris,

so wie ich das verstehe wurde in dem Ursprungs-Makro doch zeilenweise aus unterschiedlichen Bereichen und Blättern
kopiert und dann jede gerade kopierte Zeile unter die zuvor kopierte Zeile eingefügt.
Soll das jetzt anders sein?

Gruß
Max

hallo,

zwei Spalten sollen zeilenweise verschachtelt werden.

Das wäre dann die ZielspalteGE
Erste Zelle aus der SpalteA
Erste Zelle aus der SpalteB
Zweite Zelle aus der SpalteA
Zweite Zelle aus der SpalteB
usw.

habe es nun so:
das geht auch jedoch beginnt das schreiben in der Spalte GE nicht in der ersten Zelle
sondern in der zweiten - es soll aber direkt in der ersten Zeile der Spalte GE anfangen.

Huh

PHP-Code:
Dim ws1 As Worksheetws2 As Worksheetws As Worksheetr1 As Ranger2 As Range
Dim i 
As Long
Dim fz 
As Long



    Set ws1 
ThisWorkbook.Worksheets("F"' Spalte GG
    Set ws2 = ThisWorkbook.Worksheets("F") ' 
Spalte GF
    Set ws 
ThisWorkbook.Worksheets("F"'Spalte GE
    Set r1 = ws1.Range("GG1:GG100") '
A
    Set r2 
ws2.Range("GF1:GF100"'B
    
    For i = 1 To r1.Rows.Count
        fz = ws.Cells(Rows.Count, 187).End(xlUp).Row + 1
        r1.Rows(i).Copy ws.Cells(fz, 187)
        r2.Rows(i).Copy ws.Cells(fz + 1, 187)
      
        
    Next 

Angelina
Antworten Top
#9
Damit Du dierekt in die erste Zeile Spalte GE schreibst, musst Du nur die Codezeile
Code:
fz = ws.Cells(Rows.Count, 187).End(xlUp).Row + 1
gegen diese ersetzen
Code:
fz = ws.Cells(Rows.Count, 187).End(xlUp).Row
Gruß
Max
Antworten Top
#10
Hallo Angelina,


Code:
Sub Verschachteln()
  Dim ws As Worksheet, i As Long, fz As Long
  Set ws = ThisWorkbook.Worksheets("F")
  fz = 1
  With ws
      For i = 1 To 100 'wenn es 100 sein sollen...
          .Cells(i, "gg").Copy .Cells(fz, "Ge")
          .Cells(i, "gf").Copy .Cells(fz + 1, "GE")
           fz = Cells(Rows.Count, "GE").End(xlUp).Row + 1
      Next
  End With
End Sub

p.s es würde wesentlich schneller gehen wenn man mit einem Array arbeiten würde, wurdest Du das auch in Betracht ziehen?
lg Chris
Feedback nicht vergessen.
[Bild: v.gif]
3a2920576572206973742064656e20646120736f206e65756769657269672e
[-] Folgende(r) 1 Nutzer sagt Danke an chris-ka für diesen Beitrag:
  • Angelina
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste