Clever-Excel-Forum

Normale Version: MgsBox bei belegten Zellen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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
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
Vielen Dank,

funktioniert perfekt.
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
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
Danke sehr. 

Leider klappt es nicht. folgende Zeile wird gelb markiert :

Code:
If Len(.Value) Then
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?