ich müsste im Blatt Tabelle1 in E13 ein Datum eingeben können. Es gibt bereits einen Code der das Datum richtig verarbeiten würde, jetzt muss ich die Zelle E13 noch als V_Datum im Code definieren.. und scheitere kläglich..
Also der Ausdruck V_Datum wird bereits im Code verwendet, das würde ich ungerne alles umschreiben. Daher die Idee die Zelle E13 dann als V_Datum zu bezeichnen.
31.01.2020, 10:57 (Dieser Beitrag wurde zuletzt bearbeitet: 31.01.2020, 10:57 von marose67.)
Hallo,
ich abe das Gefühl, dass Du genauer werden musst:
Zitat:Option Explicit
Sub Datum() Dim V_Datum As Date V_Datum = Range("E13") MsgBox V_Datum End Sub
Gruß Marcus
Wissen ist Macht - es ist aber nicht schlimm nicht alles zu wissen. Man muss nicht alles wissen - man muss nur wissen wo es steht, oder wo man Hilfe bekommt.
If (V_Datum - 30 < DateValue(Workbooks(V_Quelle).Sheets(1).Cells(i, 7).Value) And DateValue(Workbooks(V_Quelle).Sheets(1).Cells(i, 7).Value) < V_Datum) Then Workbooks(V_Ziel).Sheets(1).Cells(g, 6).Value = Workbooks(V_Quelle).Sheets(1).Cells(i, 9).Value End If
dieses V_Datum wurde früher über eine Userform abgefragt. Nach der Umstellung auf 365 klappt das allerdings nicht mehr.. Ich suche jetzt nach einer simplen Lösung dass der bestehende Code unberührt bleiben kann und ich einfach dieses Datum in eine Zelle eingeben kann und dieses dann wie V_Datum behandelt wird.
Das steht oben im Modul
Code:
Public V_Datum As Date
Der Code lag hinter dem Button der UserForm nachdem auf "Übernehmen" geklickt hatte
Code:
Private Sub CommandButton1_Click() V_Datum = Me.DTPicker1.Value
Me.Hide End Sub
Kann man das so simpel umgestalten wie ich mir das vorstelle
V_Datum als Zellbezeichnung hilft Dir da nicht unbedingt weiter, weil es einmal ein Bereichsname und einmal eine Variable ist. Du könntest das nur so verwenden:
Range("V_Datum").Value = V_Datum
Eine andere Variante wäre eine Objektvariable. Wichtig dabei ist die Dimensionierung als Range, ansonsten ist V_Datum einmal die Zelle und dann der String.
Dim V_Datum As Range Set V_Datum = Range("A1") V_Datum = "Monster"
(wobei ich bestimmt V_Datum.Value schreiben würde)
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28 • Leonhard
hmmm.. ich habe nach bestem Wissen und Gewissen versucht deinen Tipp umzusetzen.. erneut erfolglos
Falls sich jemand erbarmen mag.. folgend der komplette Code
Code:
Sub Auto_open() Dim dlgOpen As FileDialog Dim strDatei As String
Dim V_Beleg As String Dim VDatum As Date
Dim i As Long, j As Long, g As Integer, V_WE As String
Dim V_Quelle As String, V_Ziel As String, V_Makro As String
V_Makro = ActiveWorkbook.Name
MsgBox ("Bitte wählen Sie die zu formatierende Liste aus.")
Set dlgOpen = Application.FileDialog(msoFileDialogOpen)
With dlgOpen
.AllowMultiSelect = False .Show On Error Resume Next strDatei = .SelectedItems(1)
On Error GoTo 0 End With If strDatei <> "" Then Workbooks.Open Filename:=strDatei, UpdateLinks:=0 End If
V_Quelle = ActiveWorkbook.Name
Workbooks.Add V_Ziel = ActiveWorkbook.Name
g = 2
For i = 2 To 50 If (Workbooks(V_Makro).Sheets(1).Cells(i, 1).Value) = (Left(V_Quelle, 4)) Then V_WE = Workbooks(V_Makro).Sheets(1).Cells(i, 2).Value End If Next i
If (V_Datum - 30 < DateValue(Workbooks(V_Quelle).Sheets(1).Cells(i, 7).Value) And DateValue(Workbooks(V_Quelle).Sheets(1).Cells(i, 7).Value) < V_Datum) Then Workbooks(V_Ziel).Sheets(1).Cells(g, 6).Value = Workbooks(V_Quelle).Sheets(1).Cells(i, 9).Value End If
If DateValue(Workbooks(V_Quelle).Sheets(1).Cells(i, 7).Value) + 60 > V_Datum And V_Datum >= DateValue(Workbooks(V_Quelle).Sheets(1).Cells(i, 7).Value) + 30 Then Workbooks(V_Ziel).Sheets(1).Cells(g, 7).Value = Workbooks(V_Quelle).Sheets(1).Cells(i, 9).Value End If
If DateValue(Workbooks(V_Quelle).Sheets(1).Cells(i, 7).Value) + 90 > V_Datum And V_Datum >= DateValue(Workbooks(V_Quelle).Sheets(1).Cells(i, 7).Value) + 60 Then Workbooks(V_Ziel).Sheets(1).Cells(g, 8).Value = Workbooks(V_Quelle).Sheets(1).Cells(i, 9).Value End If
If V_Datum >= DateValue(Workbooks(V_Quelle).Sheets(1).Cells(i, 7).Value) + 90 Then Workbooks(V_Ziel).Sheets(1).Cells(g, 9).Value = Workbooks(V_Quelle).Sheets(1).Cells(i, 9).Value End If
g = g + 1 End If Next i
Columns("A:H").Select ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Tabelle1").Sort.SortFields.Add Key:=Range( _ "C2:C453"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets("Tabelle1").Sort .SetRange Range("A1:I453") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With
'Belege zusammenfassen For i = 2 To 3000 If Workbooks(V_Ziel).Sheets(1).Cells(i, 3).Value = Workbooks(V_Ziel).Sheets(1).Cells(i + 1, 3).Value Then