Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1484to1488
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

Objektvariable fehlt

Objektvariable fehlt
05.04.2016 11:23:25
Paulinchen
Liebes Forum,
leider bin ich auf dem Gebiet VBA nicht so bewandert und hoffe auf eure Hilfe.
Mit Hilfe vom Makroaufzeichner und anderen Foren Einträgen habe ich mir ein Code zusammengebaut, der auf Grund eines Suchwortes einen Bereich markiert und anschließend diesen Bereich in ein neues Tabellenblatt kopiert.
Bei meinem Code gibt mir Excel leider immer die Fehlermeldung, dass ein Objekt nicht richtig definiert ist. Hoffentlich kann mir einer von euch helfen.
Anbei mal der bisherige Code:
Option Explicit
Public Sub CBD_Makro()
Dim Int_Blockanzahl As Integer
Dim Str_Datei As String
Dim Str_Registerkarte As String
Dim Rng_Suchbereich As Range
Dim Str_Block_ID As String
Dim i As Integer
'Definition der Variablen (Anzahlblöcke, Dateiname, Registerkartenname)
MsgBox ("Dieses Programm dient zur Übertragung der Überschriften")
Int_Blockanzahl = InputBox("Bitte tragen Sie die Anzahl aller Blöcker ein", "Ermittlung der  _
Blockanzahl", "3")
Str_Datei = InputBox("Bitte tragen Sie den Namen der Datei ein, auf die Sie Zugreifen möchten",  _
_
"Ermittlung der Datei", "ZXCBDBeispiel.xlsx")
Str_Registerkarte = InputBox("Bitte tragen Sie den Namen der Registerkarte ein, auf die Sie  _
zugreifen möchten", "Ermittlung der Registerkartenvorlage", "Sheet1")
'Kopie der Blöcke in ein neues Tabellenblatt
For i = i To Int_Blockanzahl
Str_Block_ID = "Block" & i
With Windows(Str_Datei).Activate
Sheets(Str_Registerkarte).Activate
Set Rng_Suchbereich = ActiveSheet.Cells.Find(Str_Block_ID, Lookat:=xlWhole). _
Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Paste
Range("A1").Select
Selection.End(xlDown).Select
Range(Selection, Selection.End(xlToRight)).Select
Application.CutCopyMode = False
Selection.ClearContents
Windows("ZX_Musterdatei_CBDMakro_vers1.xlsm").Worksheets("Data overview").Range( _
_
"A1").Rng_Suchbereich.PasteSpecial
End With
Next
End Sub
Der Fett gedruckte Bereich gibt mir den Fehler raus.
Hoffentlich kann mir einer von euch weiterhelfen.

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Objektvariable fehlt
05.04.2016 12:38:10
Fennek
Hallo,
aus dem Gedächtnis, ungeprüft, würde ich raten, in der fett-markierten Zeile das '.select' zu entfernen und in einer neuen Zeile direkt danach 'rng.select' einzufügen.
Bei vielen hier im Forum ist 'select' ziemlich unbeliebt, meistens geht es ohne.
Mfg

AW: Objektvariable fehlt
05.04.2016 13:13:53
Paulinchen
Hallo Fennek,
danke für die Antwort, leider war das entfernen von .select und das einfügen in einer neuen Zeile nicht die Lösung für das Problem.
Über weitere Ideen bin ich weiterhin dankbar :)

AW: Objektvariable fehlt
05.04.2016 13:22:42
EtoPHG
Hallo Paulinchen,
Wenn der Suchbegriff nicht gefunden ist, wird das Objekt rng_Suchbereich zu Nothing und kann darum nicht selektiert werden. Selektieren in VBA ist so ziemlich das Überflüssigste und kontraproduktivste, das es gibt. Du findest in der Recherche genug Beispiele für dieses Problem mit .Find und wie es behandelt werden muss. Ebenso zum vermeiden von Select.
Gruess Hansueli

Anzeige
AW: Objektvariable fehlt
06.04.2016 13:26:39
Paulinchen
Hallo Zusammen,
vielen DAnk für die bisherigen Antworten! Diese haben mir schonmal ein Stück weiter geholfen und ich habe jetzt probiert das Makro soweit umzuschreiben, dass ich kein .select oder .activate mit im Code habe.
Leider hänge ich shcon wieder an einer Stelle fest und finde keine Lösung zu meinem Problem.
Die Suche an sich funktioniert soweit. jetzt will ich von der gefundenen Zelle ausgehend einen bestimmten Bereich markieren und in ein anderes Tabellenblatt kopieren.
Nur bei der Bestimmung des zu kopierendenbereichs habe ich Probleme.
Anbei nocheinmal mein Code:
Option Explicit
Public Sub CBD_Makro()
Dim Int_Blockanzahl As Integer
Dim Str_Datei As String
Dim Str_Registerkarte As String
Dim Rng_Suchbereich As Range
Dim Rng_Kopierbereich1 As Range
Dim Rng_Kopierbereich2 As Range
Dim Str_Block_ID As String
Dim i As Integer
'Definition der Variablen (Anzahlblöcke, Dateiname, Registerkartenname)
MsgBox ("Dieses Programm dient zur Übertragung der Überschriften")
Int_Blockanzahl = InputBox("Bitte tragen Sie die Anzahl aller Blöcker ein", "Ermittlung der  _
Blockanzahl", "3")
Str_Datei = InputBox("Bitte tragen Sie den Namen der Datei ein, auf die Sie Zugreifen möchten",  _
"Ermittlung der Datei", "ZXCBDBeispiel.xlsx")
Str_Registerkarte = InputBox("Bitte tragen Sie den Namen der Registerkarte ein, auf die Sie  _
zugreifen möchten", "Ermittlung der Registerkartenvorlage", "Sheet1")
'Kopie der Blöcke in ein neues Tabellenblatt
For i = 1 To Int_Blockanzahl
Str_Block_ID = "Block " & i
Set Rng_Suchbereich = Workbooks(Str_Datei).Worksheets(Str_Registerkarte).Cells.Find( _
Str_Block_ID, lookat:=xlWhole)
If Rng_Suchbereich Is Nothing Then
MsgBox "Kein Ergebnis gefunden", , "Info zur Suche"
Else: Set Rng_Kopierbereich1 = Range(Rng_Suchbereich, Rng_Suchbereich.End(xlDown))
Set Rng_Kopierbereich2 = Range(Rng_Kopierbereich1, Rng_Suchbereich.End( _
xlRight))
Rng_Kopierbereich2.Copy
Workbooks("Test12345.xlsm").Worksheets("Data overview").Paste
End If
Next i
End Sub
ich bin über jegliche Hilfe dankbar :)
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige