Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1932to1936
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Prüfen ob Wert vorhanden
07.07.2023 13:27:10
siegfried b

Guten Tag,
ich würde gern per VBA prüfen lassen ob die Zahl oder auch der Text, von der Zelle A2,
in Spalte A, vorhanden ist.
Anbei die Musterdatei: https://www.herber.de/bbs/user/159846.xlsm


mfg siegfried b

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prüfen ob Wert vorhanden
07.07.2023 13:43:25
Piet
Hallo

das geht auch mit einer ZählenWenn Formel in Zelle A1, wenn du vom Ergebnis für die ganze Spalte -1 abziehst.
Alternativ mit VBA die WorksheetFunktion für CountIf benutzen.

mfg Piet


AW: Prüfen ob Wert vorhanden
07.07.2023 15:20:34
siegfried b
Hallo Piet,
danke für den Hinweis.
Ich würde aber gern das VBA Makro von Gerd übernehmen.

mfg siegfried b


AW: Prüfen ob Wert vorhanden
07.07.2023 14:06:29
GerdL
Hallo Siegfried
Sub Unit()

Dim lngCt As Long

If Not IsEmpty(Range("A2")) Then
    lngCt = WorksheetFunction.CountIf(Range("A4:A" & Rows.Count), Range("A2"))
End If
MsgBox lngCt & " mal"

End Sub
Gruß Gerd


Anzeige
AW: Prüfen ob Wert vorhanden
07.07.2023 15:22:13
siegfried b
Hallo Gerd,
danke für das Makro.
Funktioniert einwandfrei !
Ich melde mich nachher nochmal, weil ich die auch in mein Werkstattdatenbank einfügen
möchte.

mfg siegfried b


Habe einen Fehler
07.07.2023 16:53:40
siegfried b
Hallo Gerd,
habe dein Makro genommen und auf meine Wünsche angepasst, leider habe ich einen Fehler drin:
"Laufzeitfehler 438
Objekt unterstützt diese Eigenschaft nicht"


   Dim wksQUELLE As Worksheet            'Quell-Worksheet
   Dim wksZIEL As Worksheet                   'Ziel-Worksheet
    Dim wkbZIEL As Workbook, wkbQUELLE As Workbook
    Dim rngZIEL As Range

  Set wkbQUELLE = ActiveWorkbook
 Set wksQUELLE = ActiveSheet
  
    Dim lngCt As Long
    'If Not IsEmpty(Range("A2")) Then
    If Not IsEmpty(wksQUELLE.Range("K11")) Then    'meine offene Datei und der aktiven Sheet in K11 steht immer die Nummer / Text drin

  ' lngCt = WorksheetFunction.CountIf(Range("A3:A" & Rows.Count), Range("A2"))   'aus deinem Makro
    lngCt = wkbZIEL.WorksheetFunction.CountIf(Range("A3:A" & Rows.Count).wksQUELLE.Range("K11").Value)  'die Ziel Datei wird schon vorher geöffnet
    MsgBox "Kundennummer schon vorhanden"
    wkbZIEL.Close True
    Exit Sub
Else
    MsgBox "Nummer fehlt"
    MsgBox "Daten werden jetzt übertragen"
'...
 
habe mir das alles mal zusammengesucht und hoffte das es klappt,
mfg siegfried b


Anzeige
AW: Habe einen Fehler
07.07.2023 17:33:19
GerdL
lngCt = WorksheetFunction.CountIf(Workbooks("DateiderErmittlung.xlsx oder .xlsm").Worksheets("BlattderErmittlung").Range("A3:A" & Rows.Count), wksQUELLE.Range("K11").Value)
Hallo Siegfried,

weil ich nicht weis, wo du ermitteln möchtest, habe ich in dieser Form geschrieben.
P.S.: Dein wbkZiel etc. sind nicht deklariert.

Gruß Gerd


Anbei Info
07.07.2023 18:26:30
siegfried b
Hallo Gerd,
hier die Info:

  Dim wksQUELLE As Worksheet            'Quell-Worksheet
  Dim wksZIEL As Worksheet              'Ziel-Worksheet
  Dim wkbZIEL As Workbook, wkbQUELLE As Workbook
  Dim rngZIEL As Range
  Dim strSUCH As String
  
  
  Const cstr_wkbQUELLE As String = "Werkstatt.xlsm"
  Const cstr_wksQUELLE As String = "Daten"
  
  Set wkbQUELLE = ActiveWorkbook
  Set wksQUELLE = ActiveSheet
    
  On Error Resume Next
  Set wkbZIEL = Workbooks(cstr_wkbQUELLE)
  On Error GoTo 0
  If wkbZIEL Is Nothing Then
    Set wkbZIEL = Workbooks.Open("D:\" & cstr_wkbQUELLE)
  End If
  'Worksheet-Variable setzen
  Set wksZIEL = wkbZIEL.Worksheets(cstr_wksQUELLE)
mfg siegfried b


Anzeige
Guten Morgen Gerd oder auch andere Fachf.-Männer
08.07.2023 09:38:05
siegfried b
Guten Morgen,
würde mich freuen wenn es eine Lösung geben würde.
Im 1. Makro mit meiner Musterdatei klappte es doch auch.

mfg siegfried b


AW: Guten Morgen Gerd oder auch andere Fachf.-Männer
08.07.2023 10:12:31
Ulf
Hi,
gesetzt den Fall du suchst die Anzahl in der Quelle, was wahrscheinlich:
lngCt = WorksheetFunction.CountIf(Workbooks(wksQuelle.Range("A3:A" & wksQuelle.UsedRange.Rows.Count), wksQUELLE.Range("K11").Value)
wenn über die gesamte Spalte gesucht werden soll/muss
lngCt = WorksheetFunction.CountIf(Workbooks(wksQuelle.Range("A3:A" & wksQuelle.Rows.Count), wksQUELLE.Range("K11").Value)
hth
Ulf


Anzeige
Leider Fehler
08.07.2023 12:52:20
siegfried b
Hallo Ulf,
Fehler beim Kompilieren
Falsch Anzahl...
lngCt = WorksheetFunction.CountIf(Workbooks(wksQuelle.Range("A3:A" & wksQuelle.Rows.Count), wksQUELLE.Range("K11").Value)

bleibt da stehen: Workbooks

mfg siegfried


AW: Leider Fehler
08.07.2023 12:59:21
GerdL
Moin,
ich weis immer noch nicht genau, wo du abfragst.
lngCT = WorksheetFunction.CountIf(wksQUELLE.Range("A3:A" & wksQUELLE.Rows.Count), wksQUELLE.Range("K11").Value)
So besser?
Gruß Gerd


kein Fehler aber
08.07.2023 13:30:44
siegfried b
Hallo Gerd,
ich Frage nach einer beliebigen Nummer oder auch beliebigen kurzen Text z.B. Werk1

Jetzt kam kein Fehler aber die Meldung Nummer vorhanden, die ist aber nicht in der Tabelle hinterlegt.

     
      Dim lngCt As Long
   
      If Not IsEmpty(wksQUELLE.Range("K11")) Then    'meine offene Datei und der aktiven Sheet in K11 steht immer die Nummer / Text drin
      lngCt = WorksheetFunction.CountIf(wksQUELLE.Range("A3:A" & wksQUELLE.Rows.Count), wksQUELLE.Range("K11").Value)
        MsgBox "Kundennummer schon vorhanden"
      wkbZIEL.Close True
      Exit Sub
  Else
      MsgBox "Nummer fehlt"
      MsgBox "Daten werden jetzt übertragen" 
mfg siegfried b


Anzeige
AW: kein Fehler aber
08.07.2023 13:51:38
GerdL
Hallo Siegfried,

ich stelle meine Frage jetzt nicht mehr.
Dim lngCt As Long
   
    If Not IsEmpty(wksQUELLE.Range("K11")) Then    'meine offene Datei und der aktiven Sheet in K11 steht immer die Nummer / Text drin
        lngCt = WorksheetFunction.CountIf(wksQUELLE.Range("A3:A" & wksQUELLE.Rows.Count), wksQUELLE.Range("K11").Value)
    End If
    
    If lngCt > 0 Then
            MsgBox "Kundennummer schon vorhanden"
            wkbZIEL.Close True
            Exit Sub
      End If
    Else
      MsgBox "Nummer fehlt"
      MsgBox "Daten werden jetzt übertragen"
  End If
Gruß Gerd


Anzeige
AW: kein Fehler aber und Erklärung
08.07.2023 14:45:55
siegfried b
Hallo Gerd,
"ich weis immer noch nicht genau, wo du abfragst."
habe ich doch beantwortet: Ich suche nach der Nummer 2300123 oder Kurztext z.B. Werk1 die in der
Quelldatei K11 steht, ob dies in der Ziel-Datei in Spalte A3.A vorhanden ist.
Wenn vorhanden Abbruch oder nicht vorhanden weiter... kopieren

Dein Makro bleibt bei Else stehen, "Fehler beim Kompilieren Else oder IF

mfg siegfried


Ich glaube ich habe die Lösung ! Bitte mal...
08.07.2023 18:15:16
siegfried b
Hallo Gerd,
ich habe mal dein Ursprungs-Makro genommen und dies für mich angepaßt.
Bitte prüfe doch mal ob das so i.o. ist, danke im Voraus !

 Dim lngCt As Long
    
    If Not IsEmpty(Range("K11")) Then
        lngCt = WorksheetFunction.CountIf(wksZIEL.Range("A3:A" & Rows.Count), wksQUELLE.Range("K11").Value)
     ' MsgBox lngCt
     If lngCt = 1 Then      '1 vorhanden 0= Nummer fehlt
        MsgBox "Kundennummer schon vorhanden"
         wkbZIEL.Close True
        Exit Sub
    Else
        MsgBox "Nummer fehlt"
    End If
   MsgBox "jetzt wird kopiert"
    '...
Es läuft ohne Fehler durch, habe mit ' MsgBox lngCt und in der Zieldatei geprüft.

mfg siegfried


Anzeige
AW: Ich glaube ich habe die Lösung ! Bitte mal...
08.07.2023 19:44:45
GerdL
Na denn.

lngCt > 0 finde ich sicherer als lngCt = 1

Gruß Gerd


Danke Gerd und die anderen ! -)
08.07.2023 20:20:02
Siegfried b


AW: Leider Fehler
08.07.2023 13:03:43
Piet
Hallo Siegfried

ohne den ganzen Code durchzusehen und zu verstehen empfehle ich dir diesen Texteilt zu löschen - Workbooks(
Wenn ich das richtig sehe sollte es danach klappen. Excel ist empfindsam bezüglich korrekter Syntax!

mfg Piet


Antwort
08.07.2023 14:51:57
siegfried b
Hallo Piet,
hier das Makro:
Dim wksQUELLE As Worksheet            'Quell-Worksheet
  Dim wksZIEL As Worksheet              'Ziel-Worksheet
  Dim wkbZIEL As Workbook, wkbQUELLE As Workbook
  Dim rngZIEL As Range
  Dim strSUCH As String
  
  
  Const cstr_wkbQUELLE As String = "Werkstatt.xlsm"
  Const cstr_wksQUELLE As String = "Daten"
  
  Set wkbQUELLE = ActiveWorkbook
  Set wksQUELLE = ActiveSheet
    
  On Error Resume Next
  Set wkbZIEL = Workbooks(cstr_wkbQUELLE)
  On Error GoTo 0
  If wkbZIEL Is Nothing Then
    Set wkbZIEL = Workbooks.Open("D:\" & cstr_wkbQUELLE)
  End If
  'Worksheet-Variable setzen
  Set wksZIEL = wkbZIEL.Worksheets(cstr_wksQUELLE)
  Dim lFile
    Dim lloRow As Long, ldtRgDate As Date, lstrRgNr As String, lboOK As Boolean, lloRNext As Long
    Dim wks, shs, pshDB
    
   ' Application.EnableEvents = False
    Application.ScreenUpdating = False
        wkbZIEL.Activate
        wkbQUELLE.Activate
 Dim lngCt As Long
   
    If Not IsEmpty(wksQUELLE.Range("K11")) Then    'meine offene Datei und der aktiven Sheet in K11 steht immer die Nummer / Text drin
        lngCt = WorksheetFunction.CountIf(wksQUELLE.Range("A3:A" & wksQUELLE.Rows.Count), wksQUELLE.Range("K11").Value)
   End If
    
    If lngCt > 0 Then
            MsgBox "Kundennummer schon vorhanden"
            wkbZIEL.Close True
            Exit Sub
     End If
Else
      MsgBox "Nummer fehlt"
      MsgBox "Daten werden jetzt übertragen"
  End If
  End If
 '  wenn fehlt soll es weiter gehen, mit kopieren
        wksQUELLE.Range("K11:K22").Copy
    
    rngZIEL.Offset(0, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
 
mfg siegfried b

Anzeige

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige