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.

MgsBox bei belegten Zellen
#1
Hallo liebes Forum,

hätte da noch eine Frage. 

Ich habe eine Excel Mappe in der ich Werte von einem Blatt in ein anderes Blatt sende. Als Makro nehme ich da folgenden Code

Code:
If ActiveSheet.Name = "Ausgangs Tabelle" Then
      With Sheets("Empfänger Tabelle")
         varI = Application.Match(Range("B8"), .Range("A3:A43"), 0)
         If IsNumeric(varI) Then
            .Cells(varI, 21) = Range("D11").Value
         End If
      End With
Dies Funktioniert auch perfekt. Es wird in der Ausgangs Tabelle ein Namen gewählt ( dropdown Feld in Zelle B8) welcher auch in der Empfänger Tabelle in Spalte A steht. Dann wird in die 21 Zelle daneben der Wert geschrieben. Die Werte werden quasi in U3:U43 geschrieben.

Das Problem ist das wenn in der Empfänger Tabelle z.B. in  U3 schon Werte vorhanden sind diese direkt überschrieben werden. Hier hätte ich gerne folgende Lösung.

Wenn in U3 (bzw natürlich der ganze Bereich U3:U43 ) schon Werte stehen kommt eine MsgBox mit der Nachricht : Es sind schon Werte vorhanden. Überschreiben ?
Dann soll man ja oder nein wählen können. Bei ja werden die neuen Werte eingetragen und die alten Überschrieben. Klickt man nein bricht das Makro ab.

Sind im Bereich U3:U43 keine Werte vorhanden sollen direkt die Werte eingetragen werden, ohne Rückfrage.

Das Makro sollte so sein das man die Spalte U zur Not auch auf eine andere Spalte ändern kann.

Hat hier jemand eine Idee ?

Vielen Dank im voraus für die Hilfe
Antworten Top
#2
Hallo,
    If ActiveSheet.Name = "Ausgangs Tabelle" Then
      With Sheets("Empfänger Tabelle")
        varI = Application.Match(Range("B8"), .Range("A3:A43"), 0)
        If IsNumeric(varI) Then
            If Len(.Cells(varI + 2, 21).Value) Then
              varI = varI * -(MsgBox("Es sind schon Werte vorhanden. Überschreiben?", vbQuestion + vbYesNo, "Rückfrage") = vbYes)
            End If
            If varI Then .Cells(varI + 2, 21).Value = Range("D11").Value
        End If
      End With
    End If
Gruß Uwe
Antworten Top
#3
Vielen Dank,

funktioniert perfekt.
Antworten Top
#4
Eine Frage hätte ich jetzt doch noch. Weil das so perfekt funktioniert hat. 

In der gleichen Mappe fülle ich über eine UserForm mehrere Zellen. Der Code der UserForm lautet :

Code:
Private Sub CommandButton1_Click()
On Error Resume Next
    Range("Titration!A3:A42").Offset(1, 0)(ComboBox1.ListIndex).Offset(, 2) = CDbl(TextBox1)
    Range("Titration!A3:A42").Offset(1, 0)(ComboBox1.ListIndex).Offset(, 4) = CDbl(TextBox2)
    Range("Titration!A3:A42").Offset(1, 0)(ComboBox1.ListIndex).Offset(, 10) = CDbl(TextBox3)
    Range("Titration!A3:A42").Offset(1, 0)(ComboBox1.ListIndex).Offset(, 21) = CDbl(TextBox4)
    Range("Titration!A3:A42").Offset(1, 0)(ComboBox1.ListIndex).Offset(, 22) = CDbl(TextBox5)
    TextBox1 = ""
    TextBox2 = ""
    TextBox3 = ""
    TextBox4 = ""
    TextBox5 = ""
               End Sub

Gibt es hier die gleiche Möglichkeit das wenn Werte vorhanden sind die gleiche Meldung kommt ? Das wäre dann die Krönung Smile

Danke
Antworten Top
#5
Hallo,

ungetestet:
Private Sub CommandButton1_Click()
Dim i As Long, j As Long
For i = 1 To 5
With Range("Titration!A3:A42").Offset(ComboBox1.ListIndex, Choose(i, 2, 4, 10, 21, 22))
If Len(.Value) Then
j = MsgBox("Es sind schon Werte vorhanden. Überschreiben?", vbQuestion + vbYesNo, "Rückfrage") - 6
End If
If j = 0 Then
.Value = CDbl(Controls("TextBox" & i))
Controls("TextBox" & i) = ""
Else
j = 0
End If
End With
Next i
End Sub
Gruß Uwe
Antworten Top
#6
Danke sehr. 

Leider klappt es nicht. folgende Zeile wird gelb markiert :

Code:
If Len(.Value) Then
Antworten Top
#7
Hallöchen,

Wenn die Zeile gelb markiert ist, kam doch bestimmt vorher eine Fehlermeldung. Welche?
Kann es sein, das Du z.B. einen Fehler in der Zelle hast?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


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