Übertragen von Infos
#1
Hallo, ich versuche Daten auf einem anderen Tabellenblatt aufzuarbeiten...
und finde mal wieder meinen Fehler nicht, vielleicht hat ja jemand einen Tipp für mich.

Sub KopierenDaten()
    Dim z As Integer, s As Integer, i As Integer
    Dim T() As Variant

    ThisWorkbook.Worksheets("Ursprung").Activate
    z = 2
    i = 3
    s = 5
   
    T = Array(Cells(z, 1), Cells(z, 2), Cells(z, 3), Cells(z, 4), _
    Cells(z, 5), Cells(z, 6), Cells(z, 7), Cells(z, 8), Cells(z, 9), _
    Cells(z, 10), Cells(z, 11), Cells(z, 12), Cells(z, 13), Cells(z, 14), _
    Cells(z, 15), Cells(z, 16), Cells(z, 17), Cells(z, 18))
   
    ThisWorkbook.Worksheets("Bearbeitet").Activate
    MsgBox "Bin ich da?"
    Cells(i, 1).Value = T(9)
    Cells(i, 1).Borders.LineStyle = xlContinuous
    Cells(i, 1).HorizontalAlignment = xlCenter
    MsgBox "Noch da?"
               
End Sub
Antworten Top
#2
(08.03.2026, 08:25)Micha2005 schrieb: und finde mal wieder meinen Fehler nicht, vielleicht hat ja jemand einen Tipp für mich.
Kein Wunder, wer hat Dir denn das so beigebracht?

Also, wenn Du ein Blatt mit einem Autofilter filterst und dann nur bestimmte Spalten wählst in ein anderes Blatt kopierst, dann übergeht Excel bei einem simplen Copy&Paste alles was nicht gewählt oder ausgefiltert ist. Wie macht man das mit VBA ohne einen Autofilter?

Sagen wir mal wir wollen die Spalten A:B und Spalte D und Spalten G:J alle anderen interessieren uns nicht. Dann wollen wir in diesen Spalten die Zeile 1, Zeilen 3:4 und Zeilen 8:12 alle anderen nicht. Und diese Daten in das andere Blatt ab A7 kopieren.

Code:
Sub Test()
  Dim Source As Range, Dest As Range
 
  With Worksheets("Ursprung")
    Set Source = Intersect(.Range("A:B,D:D,G:J"), .Range("1:1,3:4,8:12"))
  End With
  Set Dest = Worksheets("Bearbeitet").Range("A7")
 
  Source.Copy Dest
End Sub

Wie viele Spalten und Zeilen und ob die nun zusammenhängen oder nicht UND sogar ob die sich überschneiden ist wurscht.

Alles klar?

Andreas.
Antworten Top
#3
Hi, erstmal danke...

ich hab die Quelle absichtlich erstmal einzeln gespeichert, will Sie im Ziel neu anordnen und Notfalls Formatieren.

Für mich dient das eher als Übung, ich versuche mir das mit dem VBA selber mit einem Buch beizubringen und war gerade bei Array, davor hab ich jeden Wert einzeln kopiert.
hier ein Ausschnitt...

Sub AlterVersuch()
    Cells(i, 18).Copy _
        Destination:=ThisWorkbook.Worksheets("Bearbeitet").Cells(j, 6)
    Cells(i, 10).Copy _
        Destination:=ThisWorkbook.Worksheets("Bearbeitet").Cells(j, 1)
    Cells(i, 11).Copy _

Das Ziel ist wenn ich es wirklich schaffe Die Datenbank Zeile für Zeile auf einen Wert zu prüfen und eine Auswahl zum Ziel zu bringen.

Aber dazu muss mir das Buch noch vieeeeel beibringen.

Zurück zu meinen Problem, ich dachte wenn ich das Tabellenblatt aktiviere dann kann ich die Daten in T(x) nach belieben einfügen, er schreibt es aber in die Quelle.

Danke schonmal... bin noch am lernen.
Antworten Top
#4
(08.03.2026, 09:43)Micha2005 schrieb: Aber dazu muss mir das Buch noch vieeeeel beibringen.

Micha,

gibt Dein Buch zum Altpapier, wenn es solche Codebeispiele enthält dann ist nicht das Papier wert auf dem es gedruckt wurde.

Wenn Du Daten in/aus einer Datenbank übertragen willst, dann ist es Pflicht nach den Überschriften (Feldnamen) der Datenbank zu gehen! Nimm mal irgendein Beispiel von dem das Buch denkt das es funktioniert und dann vertauscht Du 2 Spalten und lässt den Code nochmal laufen => ich wette da kommt Datenmüll raus!

Ein Code der mit einer Datenbank arbeitet MUSS IMMER zu 100% funktionieren, egal wie oder wo die Spalten sind.

Andreas.
Antworten Top
#5
Hallo Micha,
 
es ist erst mal nicht verkehrt, mal sowas mit Arrays zu versuchen um zu Lernen. Ich vermute mal, dass du das Array als Ganzes (in einem Rutsch) zurückschreiben willst.
 
Falls dies dein Ziel ist schau dir .Resize(AnzahlZeilen, Anzahl Spalten) = Array an. Wenn nicht beschreibe dann einfach mal wo die Werte des Arrays hin sollen oder zeige eine entsprechende Beispieldatei.
 
 
Gruß Uwe
Antworten Top
#6
Hallo Micha,

Zitat:Aber dazu muss mir das Buch noch vieeeeel beibringen.

kann es sein, dass der Autor des Buches die Initialen B H hat?
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#7
Hab ich mir auch gerade gedacht, Klaus-Dieter! Wink

Folgendes
Code:
    Dim T() As Variant

    ThisWorkbook.Worksheets("Ursprung").Activate
    z = 2
  
    T = Array(Cells(z, 1), Cells(z, 2), Cells(z, 3), Cells(z, 4), _
    Cells(z, 5), Cells(z, 6), Cells(z, 7), Cells(z, 8), Cells(z, 9), _
    Cells(z, 10), Cells(z, 11), Cells(z, 12), Cells(z, 13), Cells(z, 14), _
    Cells(z, 15), Cells(z, 16), Cells(z, 17), Cells(z, 18))

würde ich ja so schreiben
Code:
Dim T As Range
Set T = Worksheets("Ursprung").Range("A2:R2")

Und dies
Code:
    i=3
    ThisWorkbook.Worksheets("Bearbeitet").Activate
    MsgBox "Bin ich da?"
    Cells(i, 1).Value = T(9)

wäre dann
Code:
Worksheets("Bearbeitet").Cells(3, 1).Value = T.Cells(9)

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#8
Hallo Ralf,

genau so. Dir einen schönen Restsonntag.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#9
Danke für die vielen Antworten...
Antworten Top


Gehe zu:


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