Microsoft Excel

Herbers Excel/VBA-Archiv

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

MsgBox ausgeben

Betrifft: MsgBox ausgeben von: Larissa
Geschrieben am: 28.10.2014 08:18:18

Hallo Zusammen,

Irgendetwas mache ich falsch...
Hier mein Code

If (Eingabe.Range("B7") = Sheets("Datentabelle").Cells(i, 5)) Then
MsgBox "This sample number already exist!"
Exit Sub

Ich möchte, dass wenn eine Zahl (Seriennummer) schon mal in der Tabelle vorhanden ist, diese Warnung ausgegeben wird.
Ich habe es geschafft, dass dann keine neue Zeile angelegt wird, nur die Messagebox streikt...

Vielen Dank =)

  

Betrifft: AW: MsgBox ausgeben von: MCO
Geschrieben am: 28.10.2014 08:30:47

Guten Morgen!

An der msgbox liegt es nicht.
Das kannst du im direktbereich testen (STRG+G im VBA-Editor)

Vielleicht hilft es ja, etwas mehr als nur einen kleinen Schnipsel reinzustellen?
Ist deine Bedingung wirklich in Ordnung?

Gruß, MCO


  

Betrifft: Das ist doch nur der halbe Code von: Matthias L
Geschrieben am: 28.10.2014 08:35:13

Hallo

In Deinem Bsp. fehlt das End If
Die Variable i ist nicht deklariert
Eingabe schein eine Objektvariable zu sein oder ist der Codename der Tabelle.

Bei mir klappts

Option Explicit
Sub Larissa()
Dim i&
i = 5
If (Eingabe.Range("B7") = Sheets("Datentabelle").Cells(i, 5)) Then
 MsgBox "This sample number already exist!"
 Exit Sub
Else
 MsgBox "Eintrag fehlt noch"
End If
End Sub
wobei ich Eingabe als CodeName der Tabelle benutze und die Variable i gefüllt habe.
Steht in beiden Zellen der gleiche Wert wird korrekt zurückgegen
Sind unterschiedliche Werte vorhanden greift der Else-Zweig

Gruß Matthias


  

Betrifft: AW: Das ist doch nur der halbe Code von: hary
Geschrieben am: 28.10.2014 08:38:45

Moin
Pruef doch ohne Schleife mit CountIf.
Heiss dein VBACodename "Eingabe" ??

If Application.CountIf(Worksheets("Datentabelle").Columns(5), Eingabe.Range("B7")) Then
 MsgBox "This sample number already exist!"
Exit Sub
End If

guss hary


  

Betrifft: AW: Sry, sollte zu Larissa gruss owT von: hary
Geschrieben am: 28.10.2014 08:40:25

.


  

Betrifft: AW: Sry, sollte zu Larissa gruss owT von: Larissa
Geschrieben am: 28.10.2014 08:52:07

Ich kapier immer noch nicht ganz wo ich hier gerade antworte oder schreibe :D
Aber auf jeden Fall funktioniert es jetzt!

DAnke an alle.
Die Schleife von Hary hat funktioniert!


  

Betrifft: AW: Sry, sollte zu Larissa gruss owT von: Larissa
Geschrieben am: 28.10.2014 08:55:04

Danke =) , das hat funktioniert!!

Grüße Larissa


  

Betrifft: AW:Versuch mal so von: hary
Geschrieben am: 28.10.2014 09:04:56

Moin
Teste mal diesen Code.

Private Sub CommandButton1_Click() 'Übernehmen
Dim erste_freie_zeile As Integer
Dim i As Integer
Dim Eingabe As Worksheet
With Sheets("Datentabelle")
  erste_freie_zeile = .Range("B65536").End(xlUp).Offset(1, 0).Row
  Set Eingabe = ThisWorkbook.Worksheets("Eingabe")
    If Application.CountIf(.Columns(5), Eingabe.Range("B7")) Then
      MsgBox "This sample number already exist!"
        Exit Sub
    Else
      'Sample information
      .Cells(erste_freie_zeile, 1) = Eingabe.Range("B2")
      .Cells(erste_freie_zeile, 2) = Eingabe.Range("B4")
      .Cells(erste_freie_zeile, 3) = Eingabe.Range("B5")
      .Cells(erste_freie_zeile, 4) = Eingabe.Range("B6")
      .Cells(erste_freie_zeile, 5) = Eingabe.Range("B7")
      'Notes
      .Cells(erste_freie_zeile, 6) = Eingabe.Range("A11")
    End If
End With
Set Eingabe = Nothing
End Sub

der Elsezweig kann noch vereinfacht werden.
gruss hary


  

Betrifft: AW: MsgBox ausgeben von: Larissa
Geschrieben am: 28.10.2014 08:40:04

Danke für die schnelle Antwort.
Hm dann muss wohl woanders der Fehler liegen.

Hier mal der gesamte Code...

Private Sub CommandButton1_Click() 'Übernehmen

Dim erste_freie_zeile As Integer
erste_freie_zeile = Sheets("Datentabelle").Range("B65536").End(xlUp).Offset(1, 0).Row

Set Eingabe = ThisWorkbook.Worksheets("Eingabe")

Dim letzte_volle_zeile As Integer
Dim i As Integer
letzte_volle_zeile = Sheets("Datentabelle").Range("E65536").End(xlUp).Offset(1, 0).Row - 1
For i = 1 To letzte_volle_zeile
If (Eingabe.Range("B7") = Sheets("Datentabelle").Cells(i, 5)) Then
erste_freie_zeile = i
End If
Next

If (Eingabe.Range("B7") = Sheets("Datentabelle").Cells(i, 5)) Then
MsgBox "This sample number already exist!", vbOKOnly, "Information"
Exit Sub

End If

'Sample information
Sheets("Datentabelle").Cells(erste_freie_zeile, 1) = Eingabe.Range("B2")
Sheets("Datentabelle").Cells(erste_freie_zeile, 2) = Eingabe.Range("B4")
Sheets("Datentabelle").Cells(erste_freie_zeile, 3) = Eingabe.Range("B5")
Sheets("Datentabelle").Cells(erste_freie_zeile, 4) = Eingabe.Range("B6")
Sheets("Datentabelle").Cells(erste_freie_zeile, 5) = Eingabe.Range("B7")
'Notes
Sheets("Datentabelle").Cells(erste_freie_zeile, 6) = Eingabe.Range("A11")

End Sub
Also die Funktion klappt... Es übertragt die Zellen von einer Datei in die andere und auch nur wenn die sample number nicht schon vorhanden ist. Nur die MsgBox wird nicht angezeigt, sondern eben nur nicht übertragen.

Danke =)

Grüße Larissa


 

Beiträge aus den Excel-Beispielen zum Thema "MsgBox ausgeben"