Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

MessageBox liest nicht aktuellen Wert aus Zelle aus
#1
Hallo!

Ich habe folgendes Problem. Beim Einstieg in ein Tabellenblatt muss ich mittels einer Inputbox einen Wert eingeben. Daraus resultiert sich, dass Werte in diesem Tabellenblatt aktualisiert werden. Sprich, ist nun der eingegeben Wert größer, wird er in ein bestimmtes Feld geschrieben, wenn nicht, dann nicht. In diesem Fall handelt es sich um die Zelle E8, die aktualisiert werden soll. Nun möchte ich aber, dass ich gleich darauf in einer MessageBox darüber informiert werde, dass der Wert größer ist. Das ist ja kein Problem. Nur möchte ich zusätzlich den neuen größeren Wert in der MessageBox stehen haben, was er leider nicht macht. Er schreibt mir immer den alten kleineren Wert hin, obwohl ich schon im Code vor der MessageBox "Application.Wait Now + TimeSerial(0, 0, 2)" eingebaut habe.
Das gleiche betrifft dann auch die Prozentwerte, welche dann gleich nachher kommen.

Ich habe die Datei im Anhang mit angehängt. Es geht im konkreten Fall um das Tabellenblatt "Comgest Growth Greater China".

Nur noch so zur Info. Bitte nicht wundern, dass ich die Werte mehrmals im Tabellenblatt (versteckt) anzeige, da sonst die Formatierung in der Inputbox nicht passt. Aber das werdet ihr in der Datei am besten sehen.

Ich hoffe, dass mir jemand helfen kann.


Angehängte Dateien
.xls   Gesamtvermoegen Tommy - Kopie.xls (Größe: 81,5 KB / Downloads: 5)
Excel Version 2016
Antworten Top
#2
Hallo


ich habe mal eine Frage, und ich Rate jetzt mal völlig frei "ins Blaue":  kann es sein das in der Datei viele Formeln berechnet werden müssen??
Dann sollte man nur zum Testen mal vor Application.Wait den Befehl  Application.Calculate  setzen.  Ist frei geraten, würde mich freuen wenn es hilft 

mfg Gast 123
Antworten Top
#3
Hallo!

Ich habe vor "Application.Wait Now + TimeSerial(0, 0, 2)" folgendes eingefügt: "Application.Calculation = xlCalculationAutomatic". Leider funktioniert es noch immer nicht.

Hier der Code:



Code:
Private Sub Worksheet_Activate()
Dim gewinn  As Double
  Dim prozent As Double
  Dim prozentgesamt As Double
  Dim wert    As Variant
  alterKursstand = Cells(3, 9)
  alterGewinn = Cells(5, 10)
  GewinnVerlust = Cells(5, 4)
  alterProzentaufgesamteLaufzeit = Cells(6, 10)
  alterKursstandDatum = Cells(3, 4)
  alterProzentmitheutigemDatum = Cells(7, 10)
  höchsterGewinn = Cells(8, 10)
  höchsterGewinnDatum = Cells(8, 6)
  höchsterProzentaufgesamteLaufzeit = Cells(10, 10)
  höchsterProzentaufgesamteLaufzeitDatum = Cells(9, 9)
  höchsterProzent = Cells(9, 10)
  höchsterProzentDatum = Cells(8, 9)
 
  wert = InputBox("Bitte neuen Wert eingeben: " & String(2, vbNewLine) & _
  "alter Wert: € " & alterKursstand & " vom " & alterKursstandDatum & String(1, vbNewLine) & _
  GewinnVerlust & " € " & alterGewinn & String(1, vbNewLine) & _
  alterProzentmitheutigemDatum & " % mit heutigem Datum" & String(1, vbNewLine) & _
  alterProzentaufgesamteLaufzeit & " % auf gesamte Laufzeit" & String(2, vbNewLine) & _
  "höchster Gewinn: € " & höchsterGewinn & " " & höchsterGewinnDatum & String(1, vbNewLine) & _
  höchsterProzent & " " & höchsterProzentDatum & String(1, vbNewLine) & _
  höchsterProzentaufgesamteLaufzeit & " " & höchsterProzentaufgesamteLaufzeitDatum & "", "Eingabeaufforderung © by Biggi & Tommy")

 
  If wert = "" Then Exit Sub
   
  With Worksheets("Comgest Growth Greater China")
  .Range("e3").Value = CDbl(wert)
     gewinn = .Range("e5").Value
     prozent = .Range("h5").Value
     prozentgesamt = .Range("h6").Value
     .Range("d3").Value = Date
     
   
     If gewinn > .Range("e8").Value Then
          .Range("e8").Value = gewinn
          Range("f8").Value = "am " & Date
          Application.Calculation = xlCalculationAutomatic
          Application.Wait Now + TimeSerial(0, 0, 2)
          MsgBox "Neuer höchster Gewinn von € " & höchsterGewinn & "!", vbInformation, "Achtung! © by Tommy"
                 
     End If
   
   
     If prozent > Range("h8").Value Then
        .Range("h8").Value = prozent
        .Range("i8").Value = "% am " & Date
         MsgBox "Neuer höchster Prozentwert von " & höchsterProzent & " %!", vbInformation, "Achtung! © by Tommy"
     End If
         
             
    If prozentgesamt > Range("h9").Value Then
        .Range("h9").Value = prozentgesamt
        .Range("i9").Value = "% am " & Date & " auf gesamte Laufzeit"
        MsgBox "Neuer höchster Prozentwert auf die gesamte Laufzeit von " & höchsterProzentaufgesamteLaufzeit & " %!", vbInformation, "Achtung! © by Tommy"
    End If
          End With
         
  End Sub
 
Excel Version 2016
Antworten Top
#4
Hallo,

Schmeiß Application.wait raus.
Dann ersetze in der Zeile mit der Msg höchsterGewinn mit wert.

Ntürlich mit Gewinn und nicht mit wert ersetzend, so wie Uwe
Gruß Atilla
Antworten Top
#5
Hallo,
      If gewinn > .Range("e8").Value Then
          .Range("e8").Value = gewinn
          Range("f8").Value = "am " & Date
          MsgBox "Neuer höchster Gewinn von € " & gewinn & "!", vbInformation, "Achtung! © by Tommy"
oder
      If gewinn > .Range("e8").Value Then
          .Range("e8").Value = gewinn
          Range("f8").Value = "am " & Date
          höchsterGewinn = .Range("J8").Value
          MsgBox "Neuer höchster Gewinn von € " & höchsterGewinn & "!", vbInformation, "Achtung! © by Tommy"
Gruß Uwe
Antworten Top
#6
Hallo Uwe!

Danke für den Code. Der untere macht genau das, was er machen soll.
Excel Version 2016
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste