Informationen und Beispiele zum Thema MsgBox | |
---|---|
![]() |
MsgBox-Seite mit Beispielarbeitsmappe aufrufen |
Einen wunderschönen guten Morgen. Ich habe leider ein Problem^^
In Zelle D2 in der Datei Deals steht "=HEUTE()+1", also wird immer der morgige Tag dort angezeigt (14.10.2020).
Jetzt möchte ich ein Makro bauen das testet in einer anderen Excel Datei Namens Positionen die komplette Spalte A, ob das Datum schon vorhanden ist aus D2 (also ob der 14.10.2020 schon als wert in spalte A steht).
Wenn der 14.10.2020 schon in Spalte A drin steht soll mir das Makro dann die Werte aus "N8,O8,P8,Q8,R8,S8,T8,U8" in die Zellen Rechts daneben übernehmen.
Wenn der 14.10.2020 in Spalte A noch nicht drin steht, soll mir das Makro in Spalte A die nächste freie Zeile suchen in der noch kein Eintrag ist und dann den 14.10.2020 rein schreiben mit den Werten "N8,O8,P8,Q8,R8,S8,T8,U8" rechts daneben.
Ich hab schonmal was probiert, aber das klappt noch nicht wirklich:
Sub offenePositionen() Dim wb As Workbook Dim ws As Worksheet Dim c As Range Datum = ThisWorkbook.Sheets("Übersicht").Range("D2").Value Set wb = Workbooks.Open(Filename:="C:\Users\sws-219\Desktop\Dispatching_OP\Positionen") Set ws = wb.Worksheets(1) If ThisWorkbook.Sheets("Übersicht").Range("D2") <> ThisWorkbook.Sheets("Übersicht").Range(" _ A:A") Then MsgBox "Wert ist vorhanden" Else MsgBox "Wert ist nicht vorhanden!" End If wb.Close savechanges:=True Application.ScreenUpdating = True End SubWäre echt nett wenn mir jemand bei dem Code helfen könnte oder mir sogar einen Code zeigen kann wie das unkomplizierter funktioniert, bzw. wie es leichter geht.
Sub offenePositionen() Dim rng As Range Dim Datum As String Datum = ThisWorkbook.Sheets("Übersicht").Cells(2, 4).Value Set rng = ThisWorkbook.Sheets("Tabelle1").Range("A:A").Find(Datum) If rng Is Nothing Then MsgBox "Wert " & Datum & " nicht gefunden!" Else MsgBox "Wert " & Datum & " GEFUNDEN" End If EndSub
Betrifft: AW: Prüfen ob es der gleiche Wert ist
von: Werner
Geschrieben am: 13.10.2020 09:10:51
Hallo,
teste mal:Sub offenePositionen() Dim wb As Workbook, ws As Worksheet, varZeile As Variant Application.ScreenUpdating = False Set wb = Workbooks.Open(Filename:="C:\Users\sws-219\Desktop\Dispatching_OP\Positionen") Set ws = wb.Worksheets(1) With ws varZeile = Application.Match(CLng(Date + 1), .Columns("A")) If IsError(varZeile) Then loLetzte = .Cells(.Rows.Count, "A").End(xlUp).Offset(1).Row .Cells(loLetzte, "A") = Date + 1 ThisWorkbook.Sheets("Übersicht").Range("N8:U8").Copy .Cells(loLetzte, "B") Else ThisWorkbook.Sheets("Übersicht").Range("N8:U8").Copy .Cells(varZeile, "B") End If End With wb.Close True End SubGruß Werner
Betrifft: AW: Prüfen ob es der gleiche Wert ist
von: Lukas Greghead
Geschrieben am: 13.10.2020 10:12:33
das klappt schonmal prima! vielen dank.
hab jetzt noch ein kleines Problem:
in "N8:U8" stehen Excel Formeln.
Kann ich nur die werte der Zellen "N8:U8" rüber kopieren, und nicht die Formeln?
Wenn das noch klappen würde wäre es perfekt! :D
Betrifft: AW: Prüfen ob es der gleiche Wert ist
von: Daniel
Geschrieben am: 13.10.2020 10:32:13
Hi
mach aus dem EinzeilerRange(…).Copy Cells(…)
den Zweizeilerrange(…).copy Cells(…).pastespecial xlpastevalues
Gruß Daniel
Betrifft: AW: Prüfen ob es der gleiche Wert ist
von: Lukas Greghead
Geschrieben am: 13.10.2020 11:46:32
Ah perfekt, das hat geklappt. Vielen dank :D
ich hätte noch eine Bitte, in dem code wird ja ein Datum erstellt mit CLng(Date + 1).
Ich würde aber gerne das es das Datum aus der Zelle nimmt weil ich dann flexiebel in der zelle einfach auch mal 2 oder 3 Tage vorraus machen kann am wochenende oder so.
hab hier selber bisschen probiert, aber das klappt nicht ganz:
Sub offenePositionen1() Dim wb As Workbook Dim ws As Worksheet Dim varZeile As Variant Dim Datum Application.ScreenUpdating = False Datum = ThisWorkbook.Worksheets("Übersicht").Cells(2, 4).Value Set wb = Workbooks.Open(Filename:="C:\Users\sws-219\Desktop\Dispatching_OP\ _ Gas_Offene_Positionen") Set ws = wb.Worksheets(1) With ws varZeile = Application.Match(Datum, .Columns("A")) If IsError(varZeile) Then loLetzte = .Cells(.Rows.Count, "A").End(xlUp).Offset(1).row .Cells(loLetzte, "A") = Datum ThisWorkbook.Sheets("Übersicht").Range("N8:U8").Copy Cells(varZeile, "B").PasteSpecial xlPasteValues Else ThisWorkbook.Sheets("Übersicht").Range("N8:U8").Copy Cells(varZeile, "B").PasteSpecial xlPasteValues End If End With wb.Close True End Sub
Betrifft: AW: Prüfen ob es der gleiche Wert ist
von: Daniel
Geschrieben am: 13.10.2020 12:27:52
Hi
naja "klappt nicht" ist als Fehlerberschreibung für das Ziel, den Fehler zu beheben ungefähr so hilfreich wie die Antwort "machs anders" als Hilfestellung.
du solltest also schon etwas ausführlicher beschreiben, worin sich dieses "klappt nicht" für dich bemerkbar macht.
ansonsten würde ich einfach mal vermuten, dass du die Zielzelle noch nicht mit dem Zahlenformat "Datum" formatiert hast und deswegen das Datum nicht als Datum sondern als der dem Datum zugeordnete Ganzahlwert angezeigt wird.
wenn du es dir einfach machen willst, überträgst du das Datum nicht über den zwischenschritt mit der Variablen, sondern fügst es als Wert mit Zahlenformat ein.
Dann sollte es genauso aussehen wie in der Quellzelle.….Cells(...).Copy ….Cells(...).pastesspecial xlpastevaluesandnumberformatswelche Optionen du beim Einfügen hast, siehst du ja im Kontextmenü des InhalteEinfügens (dort auch mal auf die unterste Menüebene gehen).
Beim Aufzeichnen eines solchen Vorgangs mit dem Recorder siehst du dann, wie man das programmiert.
oder du nutzt beim programmieren die IntelliSense, dh du gibst die ersten bekannten Buchstaben ein: "xlpas" und drückst dann STRG+Leer. Dann erscheint eine kleine Klappliste mit den an dieser Stelle möglichen Eingaben passend zu den eingegeben Buchstaben und du kannst mal schauen, was es so alles gibt und auswählen.
Gruß Daniel
Betrifft: AW: Prüfen ob es der gleiche Wert ist
von: Lukas Greghead
Geschrieben am: 13.10.2020 12:40:34
Vielen Dank Daniel und Werner, und sorry für die Zeit die ich euch aufgewendet habe.
läuft jetzt alles perfekt durch eure Hilfe!
Dankeschön.
ich weiß nicht wie man den Beitrag hier schließt.
-close-
Betrifft: AW: Prüfen ob es der gleiche Wert ist
von: Daniel
Geschrieben am: 13.10.2020 12:44:27
Hi
Danke für die Rückmeldung
in diesem Forum läuft das Schließen eines Threads automatisch mit jeder gegebenen Antwort.
Hier muss man aktiv was tun, wenn der offen bleiben soll
(wobei das hier in diesem Forum wenig beachtet wird)
Gruß Daniel
Betrifft: Gerne u. Danke für die Rückmeldung. o.w.T.
von: Werner
Geschrieben am: 13.10.2020 14:03:09