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, 09:57 (Dieser Beitrag wurde zuletzt bearbeitet: 31.01.2020, 09: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