Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1612to1616
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 Daten übertragen mit Daten überschreiben

VBA Daten übertragen mit Daten überschreiben
22.03.2018 12:53:48
Lorraine
Hallo Leute, ich bin grad neu ins VBA eingestiegen und stöbere durch Foren um meine Probleme zu lösen. Leider komme ich bei einem nicht weiter. Mein Problem:
Ich habe eine Tabelle mit mehreren Blättern, zu denen auch immer wieder neue Blätter hinzukommen (Ereignisse). Diese lasse ich per Button in eine Übersichtsliste übertragen (funktioniert). Jetzt kann es aber sein, dass bestimmte Daten in den Ereignissblättern geändert bzw hinzugefügt werden. Bei mir wird dafür jedesmal eine neue Zeile hinzugefügt, statt in der bestehenden Ereignisszeile die Daten zu überschreiben.
Hier mein Code:
Sub Übertragen()
Dim Ereignisnr As String, Kurzbez As String, bearbeitet As String, DatumA As Variant, Form As  _
String, DatumE As String
ActiveSheet.Select
Ereignisnr = Range("B3")
Kurzbez = Range("B5")
bearbeitet = Range("B7")
DatumA = Range("D3")
Form = Range("B11")
DatumE = Range("B10")
Worksheets("Ereignis-Übersicht").Select
Worksheets("Ereignis-Übersicht").Range("A9").Select
If Worksheets("Ereignis-Übersicht").Range("A9").Offset(1, 0)  "" Then
Worksheets("Ereignis-Übersicht").Range("A9").End(xlDown).Select
End If
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = Ereignisnr
ActiveCell.Offset(0, 2).Select
ActiveCell.Value = Kurzbez
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = bearbeitet
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = DatumA
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Form
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = DatumE
End Sub
Wie sag ich meinem Programm, dass wenn die Ereignisnr gleich mit der 1. Spalte ist, dass er die Daten in dieser Zeile einfügen/überschreiben soll und wenn diese nicht vorhanden ist, eine neue Zeile hinzufügt?

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Daten übertragen mit Daten überschreiben
22.03.2018 14:26:31
ChrisL
Hi
Hier ein Beispiel...
Sub t()
Dim WS1 As Worksheet, WS2 As Worksheet
Dim lngZeile As Long
Set WS1 = Worksheets("Tabelle1") ' anpassen
Set WS2 = Worksheets("Tabelle2") ' anpassen
If WorksheetFunction.CountIf(WS2.Columns(1), WS1.Range("B3")) = 0 Then
lngZeile = WS2.Cells(Rows.Count, 1).End(xlUp).Row + 1
Else
lngZeile = Application.Match(WS1.Range("B3"), WS2.Columns(1), 0)
End If
WS2.Cells(lngZeile, 1) = WS1.Range("B3")
WS2.Cells(lngZeile, 2) = WS1.Range("B5")
'usw.
End Sub

Falls es nicht funktioniert, bitte eine Musterdatei hochladen.
cu
Chris
Anzeige
AW: VBA Daten übertragen mit Daten überschreiben
23.03.2018 11:42:47
Lorraine
Hallo Chris,
vielen Dank erstmal, leider zeigt er mir bei If WorksheetFunction.CountIf immer ein Argumentenfehler an. Ich lade die Datei mal hoch.
https://www.herber.de/bbs/user/120634.xlsm
AW: VBA Daten übertragen mit Daten überschreiben
23.03.2018 12:35:34
ChrisL
Hi
Copy/Paste will auch gelernt sein ;)
Sub Übertragen()
Dim WS1 As Worksheet, WS2 As Worksheet
Dim IngZeile As Long
Set WS1 = ActiveSheet
Set WS2 = Worksheets("Ereignis-Übersicht")
If WorksheetFunction.CountIf(WS2.Columns(1), WS1.Range("B3")) = 0 Then
IngZeile = WS2.Cells(Rows.Count, 1).End(xlUp).Row + 1
Else
IngZeile = Application.Match(WS1.Range("B3"), WS2.Columns(1), 0)
End If
WS2.Cells(IngZeile, 1) = WS1.Range("B3")
WS2.Cells(IngZeile, 3) = WS1.Range("B5")
WS2.Cells(IngZeile, 4) = WS1.Range("B7")
WS2.Cells(IngZeile, 5) = WS1.Range("D3")
WS2.Cells(IngZeile, 6) = WS1.Range("B11")
WS2.Cells(IngZeile, 7) = WS1.Range("B10")
End Sub
cu
Chris
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige