Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 20:05:21
28.04.2024 18:33:31
28.04.2024 18:25:12
28.04.2024 14:18:05
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
Inhaltsverzeichnis

Fehlermeldung, wenn kopiert werden soll

Fehlermeldung, wenn kopiert werden soll
09.07.2023 13:49:27
siegfried b

Hallo allerseits,
anbei das Makro, wenn Nummer vorhanden, läuft alles.
Wenn Nummer nicht vorhanden, wird das Makro abgebrochen,
siehe untere Zeile.
Fehler:
Laufzeitfehler 91
Objektvariable oder With Blockvariable nicht festgelegt

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.ScreenUpdating = False
             
        wkbZIEL.Activate
        wkbQUELLE.Activate
  
    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 = 0 Then      '1 vorhanden 0= Nummer fehlt
                MsgBox "Nummer fehlt"
    Else
     MsgBox "Nummer schon vorhanden"
       wkbZIEL.Close True
        Exit Sub   
    End If
   MsgBox "jetzt wird kopiert"
   End If   'von abfrage

  'übertragen
  wksQUELLE.Range("K11:K22").Copy
   
'bleibt hier stehen:
 rngZIEL.Offset(0, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True



mfg siegfried b

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehlermeldung, wenn kopiert werden soll
09.07.2023 14:32:33
Pappawinni
RngZiel is nothing


Danke aber
09.07.2023 17:11:20
siegfried b
Hallo,
danke, wohin kopieren ?

mfg siegfried


AW: Danke aber
09.07.2023 17:35:26
Pappawinni
Du sollst nichts kopieren.
Das ist nur eine Aussage. Wenn du rngZiel nichts zuweist, dann ist es eben Nichts.
Excel kann so wenig Hellsehen wie ich.


AW: Fehlermeldung, wenn kopiert werden soll
09.07.2023 14:51:17
Piet
Hallo

ich habe mir erlaubt den Code mal ein bisschen umzustllen, er ist für mich im Augenblick sehr verwirrend!

Tipp: - ich setze alle Dim Variablen nach oben, nicht mitten in den Code, so habe ich bessere Übersicht ob was fehlt.
Im gesamten Code finde ich KEINE Range Zuweisung zu der Variablen rngZIEL! - Ist dir das schon aufgefallen??

wkbZIEL.Activate und wkbQUELLE.Activate stehen direkt hintereinander. - So wird nur das letzte Sheet aktiviert!
Ändere bitte diese Zeile mit Exit Sub, sonst wird der Code nicht abgebrochen! - MsgBox "Nummer fehlt": Exit Sub

Unstimmigkeit bei diesen Zeilen: - Du setzt die Ziel Variable, holst aber Workbook und Sheet aus Quelle???
Set wkbZIEL = Workbooks(cstr_wkbQUELLE)
Set wksZIEL = wkbZIEL.Worksheets(cstr_wksQUELLE)

Das sind die Sachen die mir auf Anhieb aufgefallen sind. Ob es noch mehr Fehler gibt kann ich nicht sagen, denn ich kann den Code nicht testen!

mfg Piet

  • Sub test()
      Dim wksQUELLE As Worksheet        'Quell-Worksheet
      Dim wksZIEL As Worksheet          'Ziel-Worksheet
      Dim strSUCH As String, rngZIEL As Range
      Dim wkbZIEL As Workbook, wkbQUELLE As Workbook
      Dim lngCt As Long, lloRow As Long, lloRNext As Long
      Dim ldtRgDate As Date, lstrRgNr As String, lboOK As Boolean
      Dim lFile, wks, shs, pshDB
      
      Const cstr_wkbQUELLE As String = "Werkstatt.xlsm"
      Const cstr_wksQUELLE As String = "Daten"
     
      Application.ScreenUpdating = False
      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)
                 
      wkbZIEL.Activate
      wkbQUELLE.Activate
      
      If Not IsEmpty(Range("K11")) Then
         lngCt = WorksheetFunction.CountIf(wksZIEL.Range("A3:A" & Rows.count), wksQUELLE.Range("K11").Value)
         ' MsgBox lngCt
         If lngCt = 0 Then      '1 vorhanden 0= Nummer fehlt
            MsgBox "Nummer fehlt": Exit 
    Sub  '** Exit 
    Sub eingefügt
         Else
           MsgBox "Nummer schon vorhanden"
           wkbZIEL.Close True:  Exit Sub
         End If
         MsgBox "jetzt wird kopiert"
      End If   'von abfrage
    
      'übertragen
      wksQUELLE.Range("K11:K22").Copy
       
      'bleibt hier stehen:
      rngZIEL.Offset(0, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
    
    End Sub



  • Anzeige
    Hallo Piet, leider Fehler
    09.07.2023 17:19:42
    siegfried b
    Hallo Piet,
    rngZIEL! - Ist dir das schon aufgefallen??
    Nein, habe ich alles hier aus dem Forum kopiert.

    Habe so eingesetzt:
    der gleich Fehler.

    Dim wksQUELLE As Worksheet        'Quell-Worksheet
      Dim wksZIEL As Worksheet          'Ziel-Worksheet
      Dim strSUCH As String, rngZIEL As Range
      Dim wkbZIEL As Workbook, wkbQUELLE As Workbook
      Dim lngCt As Long, lloRow As Long, lloRNext As Long
      Dim ldtRgDate As Date, lstrRgNr As String, lboOK As Boolean
      Dim lFile, wks, shs, pshDB
      
      Const cstr_wkbQUELLE As String = "Werkstatt.xlsm"
      Const cstr_wksQUELLE As String = "Daten"
     
      Application.ScreenUpdating = False
      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)
                 
      wkbZIEL.Activate
      wkbQUELLE.Activate
      
      If Not IsEmpty(Range("K11")) Then
         lngCt = WorksheetFunction.CountIf(wksZIEL.Range("A3:A" & Rows.Count), wksQUELLE.Range("K11").Value)
         ' MsgBox lngCt
         If lngCt = 0 Then      '1 vorhanden 0= Nummer fehlt
            MsgBox "Nummer fehlt"
    
         Else
           MsgBox "Nummer schon vorhanden"
           wkbZIEL.Close True:
        Exit Sub
         End If
         MsgBox "jetzt wird kopiert"
      End If   'von abfrage
    
      'übertragen
        wksQUELLE.Range("K11:K22").Copy
       
      'bleibt hier stehen:
      rngZIEL.Offset(0, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
    mfg siegfried


    Anzeige
    AW: Hallo Piet, leider Fehler
    09.07.2023 18:13:44
    GerdL
    Hallo

    Dim lFile
    Dim lloRow As Long, ldtRgDate As Date, lstrRgNr As String, lboOK As Boolean, lloRNext As Long
    Dim wks, shs, pshDB
    
    
    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)
          
             
             Application.ScreenUpdating = False
                      
                 wkbZIEL.Activate
                 wkbQUELLE.Activate
           
             Dim lngCt As Long
             If Not IsEmpty(Range("K11")) Then
                 lngCt = WorksheetFunction.CountIf(wksZIEL.Range("A3:A" & Rows.Count), wksQUELLE.Range("K11").Value)
             End If
              ' MsgBox lngCt
              If lngCt = 0 Then      '1 vorhanden 0= Nummer fehlt
                         MsgBox "Nummer fehlt"
             Else
              MsgBox "Nummer schon vorhanden"
                wkbZIEL.Close True
                 Exit Sub
             End If
            MsgBox "jetzt wird kopiert"
            
         
           'übertragen
           wksQUELLE.Range("K11:K22").Copy
          
          
          Set rngZIEL = wksZIEL.Range("A" & Rows.Count).End(xlUp).Offset(1, 0) ' ZUM BEISPIEL:
         
         'bleibt hier stehen:
          rngZIEL.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True

    Gruß Gerd


    Anzeige
    Super läuft einwandfrei Gerd, danke auch an... -)
    09.07.2023 19:15:41
    siegfried b
    Guten Abend Gerd,
    danke läuft einwandfrei !
    Danke !

    Danke auch an die ANDEREN !!!

    mfg siegfried b

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige