Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Prüfen ob es der gleiche Wert ist

Betrifft: Prüfen ob es der gleiche Wert ist von: Lukas Greghead
Geschrieben am: 13.10.2020 07:35:52

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 Sub
Wä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.

Dankeschön!

Betrifft: AW: Prüfen ob es der gleiche Wert ist
von: Lukas Greghead
Geschrieben am: 13.10.2020 08:51:45

ich hab jetzt nochmal was anderes probiert um es zu Testen, und nicht mal das klappt.
Ich bin langsam echt am Vezweifeln.
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


End 
Sub 


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 Sub
Gruß 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 Einzeiler
Range(…).Copy Cells(…)

den Zweizeiler
range(…).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 xlpastevaluesandnumberformats
welche 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