Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Vba hört auf zu arbeiten in anderem Workbook
#1
Hi leute,

ich kopier per VBA eine Tabelle ganz einfach in ein neu geöffnetes Workbook. Danach würde ich gerne eine Suchen-Ersetzen noch starten um ein paar nervende #NV los zu werden. Das makro wir komplett ausgeführt, leider sucht und ersetzt er mir nicht... er überpringt es einfach

worin liegt der fehlen?

Code:
Sheets("Pr00").Range("A1:H86,K1:K86").Copy
Set wkbMappe = Workbooks.Add

wkbMappe.Activate

Range("A1").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
ActiveSheet.Range("I2:I86").Replace What:="#NV", Replacement:=" ", LookAt:=xlPart, SearchOrder:=xlByRows

Workbooks("PR00 vers 1.0 DE.xlsm").Activate
Danke für die Hilfe :)
Antworten Top
#2
Hallo,

Du solltest immer voll referenzieren, ausserdem solltest Du nicht durch " " sonder "" ersetzten lassen. Dass kann sonst später zu Problemen führen.
Probiere es mal so:
Code:
   Workbooks("QuellWkb").Sheets("Pr00").Range("A1:H86,K1:K86").Copy
   With Workbooks.Add
       .Range("A1").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
       .Range("I2:I86").Replace What:="#NV", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows
   End With
   Workbooks("PR00 vers 1.0 DE.xlsm").Activate
Übrigens irritieren mich deine Ranges ein wenig. Aber wie deine Tabelle aussieht, weißt nur Du ;)
Gruß Jonas
Antworten Top
#3
Hallo,

das Verhalten ist doch ganz normal! Wenn Du das Workbook wechselst, wird der VBA-Code im alten Workbook "abgebrochen" und der im neuen ausgeführt, da dort aber keiner ist, wird VBA beendet.
Entweder entfernst Du Deine #NV vor dem Kopieren oder du musst im neuen Workbook die entsprechende Routine starten.
Mit etwas Trrick kannst du aus dem alten Workbook heraus auch das neue Workbook bearbeiten, du darfst aber dabei nicht die Workbooks wechseln.
[Bild: attachment-190.gif]
Gruß Günter
aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
Antworten Top
#4
Danke erstmal, nun bringt er mir bei dieser Zeile
Code:
.Range("A1").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
 Objekt unterstützt diese Eigenschaft oder Methode nicht
hab da gleich noch ne Frage, mein hauptframe ist VBmodeless... d.h. es wird mir über alle Excel Tabelle angezeigt. Gibt es auch ein Mode, dass "modeless" ist, jedoch nur in der Datei in der sich das Userframe befindet?
Danke
Antworten Top
#5
Auch Hallo,

hier fehlt doch noch das Worksheet.

Code:
.Worksheets(1).Range("A1").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#6
Hallo Glausius,

ok, das wusste ich nicht, sorry bin Anfänger. Ja, mit einer anderen Linie mach ich das bereits mit einer Hilfspalte, wollte aber dieses mal darauf verzichten.
Antworten Top
#7
Hi Steffl, ok, keine Fehlermeldung, aber die #NV sind noch da :(
Antworten Top
#8
Hallo,

hast Du berücksichtigt, dass auch in der zweiten Codezeile das Worksheet dazugehört?

Code:
.Worksheets(1).Range("I2:I86").Replace What:="#NV", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#9
jap :D
Antworten Top
#10
Du kannst das auch in das With-Statement direkt mit aufnehmen. Das hatte ich leider vergessen

With Workbooks.Add().Sheets(1)

Für alles weitere müsste man deine Tabelle kennen.
Gruß Jonas
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste