Hilfe mit VBA Code
02.08.2017 21:20:31
Heiko
vor nicht langer Zeit, habe ich erst mit VBA begonnen und stehe nun beim Code schreiben jetzt täglich vor großen Herausforderungen... Ich möchte mich unbedingt verbessern...
Dafür brauche ich eure Hilfe und sehr dankbar für jeglichen Rat und Hilfe :-)
So jetzt eine kurze Beschreibung der Aufgabenstellung:
wb Master Data enthält ab Spalte J2 bis zu dem untersten Eintrag (J1000+) "ListingDates" vom (Datums-)Format: 01/05/2010
von denen mich nur die Einträge vom aktuellen Monat und Jahr interessieren
wird zutreffendes Datum wie heute 02/08/2017 in bspw. Zelle J200 gefunden, so muss aber in Spalte C in gleicher Zeile (C200)
geprüft werden ob ein übereinstimmendes Ergebnis mit den Markmalen "Ware A" oder "Ware B" (String Variable) vorliegt.
Ist dies der Fall werden mehrere Einträge in Variablen eingespeichert (Name, Nummer, etc.)
wb Master In wb Master wird dann für je "Treffer", die Werte (Name, Nummer, etc.) in einer neuen Zeile 2,3,4, usw. eingefügt
Abschließend müssen in der gesamten Spalte D, in der jeder Zelle wo das Wort "Gewinn"
erscheint/ auftaucht durch das Wort "Umsatz" ersetzt werden (komplette Zelle umgeschrieben werden)
Zu meinen Fragen/Problemen:
der Code läuft nicht, größtes Problem ist der Datumabgleich >> If ListingDate = " Beliebiger Tag & /" & AktMonat & "/ & AktJahr" Then
zudem fehlt die 2 Abfragebedingung nach Spalte C in wb Master Data + Ersetzung der Werte in Spalte D in wb Master
zudem interessiert mich sehr wie ich den Code und evtl die Schleife eleganter gestalten kann,
bspw. dass ich die jeweilige Spalte nicht mit "Name = ActiveCell.Offset(0, -6).Value" sondern durch einen eingespeicherten Namen (erste Zeile/Header)
im Namensmanager ansprechen kann.
So hier der Code:
Option Explicit
Sub MasterUpdate1()
Dim Master, MasterData As Workbook
Dim dat1, dat2, AktJahr, AktMonat As String
Dim ListingDate As Date
Dim i, k As Integer
i = 1
k = 2
Dim Name, Nummer As String
dat1 = Format(DateSerial(Year(Now), Month(Now()), 1), "YYYY-MM")
dat2 = Format(DateSerial(Year(Now), Month(Now()), 1), "YYYY")
AktJahr = Format(CDate(DateSerial(Year(Now()), 1, 1)), "YYYY")
AktMonat = Format(CDate(DateSerial(1, Month(Now()), 1)), "MM")
Set Master = Workbooks.Open(Filename:="C:\Desktop\Datei\" & dat2 & "\Master.xlsx")
Set MasterData = Workbooks.Open(Filename:="C:\Dekstop\MasterData\" & dat1 & " _ Master Data. _
xlsx")
MasterData.Worksheets("Handel").Activate
Range("J2").Select
Do Until ActiveCell.Value = ""
ListingDate = ActiveCell.Value
If ListingDate = " Beliebiger Tag & /" & AktMonat & "/ & AktJahr" Then
Name = ActiveCell.Offset(0, -6).Value
Nummer = ActiveCell.Offset(0, -4).Value
Master.Worksheets("Instrument").Activate
i = i + 1
Rows(i).Insert Shift:=xlShiftDown
Cells(i, 1).Value = Name
Cells(i, 2).Value = Nummer
End If
MasterData.Worksheets("Handel").Activate
k = k + 1
Range("J" & k).Select
Loop
'Master.SaveAs
End Sub