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

Objekte und Code in anderem Arbeitsblatt löschen

Objekte und Code in anderem Arbeitsblatt löschen
05.08.2014 11:13:11
Jan
Hallo Forum,
ich kopiere regelmäßig ein Mutter-Arbeitsblatt innerhalb derselben Mappe via:
Sheets("Mutterbeleg").Copy after:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = Range("O3").Text
Im Bereich "M2:Q3" des Mutterformulars liegt das Gedönse zum Kopieren (Text, Eingabefeld, Button), welches ich im Zielformular nicht mehr benötige. Über Sheets(Range("O3").Text).Range("M2:Q3").Clear kann ich Text und Eingabefeld im Zielformular löschen, aber nicht den Button.
Frage: Kann man vermeiden, dass der Button mit kopiert wird oder kann ich ihn aus dem Mutterformular heraus per VBA im Zielformular löschen?
Außerdem benötige ich im Zielformular den VBA-Code hinter dem Button nicht. Auch hier die gleiche Frage: Kann ich vermeiden, dass der Code mit kopiert wird oder kann ich ihn über VBA aus dem Mutterformular heraus löschen?
Ich danke für Eure Hilfe.
Jan Rehok

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Objekte und Code in anderem Arbeitsblatt löschen
05.08.2014 11:14:58
Hajo_Zi
Hallo Jan,
Teil 2 speichere als XLSX.
Gruß Hajo

AW: Objekte und Code in anderem Arbeitsblatt löschen
05.08.2014 11:37:28
Arthur
Hallo Jan.
So können die Shapes nach dem Kopieren gelöscht werden.
<pre>Sub absd()
Dim oShp As Shape
For Each oShp In ActiveSheet.Shapes
If Not (Intersect(ActiveSheet.Range(oShp.TopLeftCell.Address), Range("m2:q3")) Is Nothing) Then
oShp.Delete
End If
Next
End Sub</pre>
Gruß, Arthur

AW: Objekte und Code in anderem Arbeitsblatt löschen
05.08.2014 11:49:40
Ewald
Hallo Jan,
warum überhaupt von der Tabelle aus.
Schreibe den Code zum Kopieren in ein Makro und füge es in die Schnellstartleiste ein.
Im Code fragst du den zu vergebenen Namen über eine Inputbox ab.
Jetzt hast du in deiner Mustertabelle weder Code noch Button.
Gruß Ewald

Anzeige
AW: Objekte und Code in anderem Arbeitsblatt löschen
05.08.2014 12:26:20
Jan
Danke Ewald,
ja, das ist überzeugend und so werde ich es umsetzen. Ich danke Euch für die Hilfe und Unterstützung und wünsche
schöne Grüße aus dem Pott

AW: Objekte und Code in anderem Arbeitsblatt löschen
05.08.2014 12:11:49
Jan
Danke Arthur,
danke für Deine Hilfe. Ich habe versucht, das umzusetzen. Meine Prozedur lautet jetzt:
Private Sub MutterFormularKopieren_Click()
Dim oShp As Shape
If Range("O3").Value = "" Then
MsgBox "Erst den Namen der Zieltabelle eingeben!"
Exit Sub
End If
Sheets("Mutterbeleg").Copy after:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = Range("O3").Text
For Each oShp In ActiveSheet.Shapes
If Not (Intersect(ActiveSheet.Range(oShp.TopLeftCell.Address),Range("m2:q3")) Is Nothing)  _
Then
oShp.Delete
End If
Next
End Sub
Es kommt die Fehlermeldung:
Laufzeitfehler 1004: Die Methode 'Intersect' für das Objekt "_Global' ist fehlgeschlagen.
Der Debugger meckert die Zeile > If Not(Intersect(ActiveSheet.Range(oShp.TopLeftCell.Address), Range("m2:q3")) Is Nothing) Then ... Sorry, aber ich bin Anfänger.
Gruß Jan

Anzeige
AW: Objekte und Code in anderem Arbeitsblatt löschen
05.08.2014 12:38:25
Werner
Hallo Jan,
nur mal so aus dem hohlen Bauch. Ist dein Blatt "Mutterbeleg" das aktive Blatt? Ersetzt mal ActiveSheet durch sheets("Mutterbeleg")
Gruß Werner

AW: Objekte und Code in anderem Arbeitsblatt löschen
05.08.2014 13:21:11
Jan
Hallo Werner,
hab' ich gemacht. Es ändert sich nichts. Gleiche Fehlermeldung.
Gruß
Jan

AW: Objekte und Code in anderem Arbeitsblatt löschen
05.08.2014 13:36:29
Werner
Hallo Jan,
lade doch mal deine Datei hoch,
Werner

AW: Objekte und Code in anderem Arbeitsblatt löschen
05.08.2014 14:15:49
Jan
Hallo Werner,
mit Datei meinst du doch den nach deinem Vorschlag geänderten VBA-Code?
Private Sub MutterFormularKopieren_Click()
Dim oShp As Shape
Sheets("Mutterbeleg").Copy after:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = Range("O3").Text
Sheets(Range("O3").Text).Range("M2:Q3").Clear
For Each oShp In Sheets("Mutterbeleg").Shapes
If Not (Intersect(Sheets("Mutterbeleg").Range(oShp.TopLeftCell.Address), Range("m2:q3")) _
Is Nothing) Then
oShp.Delete
End If
Next
End Sub
Gruß
Jan

Anzeige
AW: Objekte und Code in anderem Arbeitsblatt löschen
05.08.2014 14:40:12
Jan
Hallo Werner,
oder meinst du die originale Excel-Datei? Das habe ich über File-Upload versucht. Ich kann die Datei auch auswählen. Wenn ich dann aber auf "Datei zum Server" klicke, kommt die Meldung: "Fehler beim Upload" zusammen mit einer Übersicht zu den erlaubten Formaten. Meine Datei hat das Format xls, in der Übersicht steht nur xl (ohne "s").
Sorry, ich kenne mich da nicht aus. Was mache ich falsch?
Gruß Jan

AW: Objekte und Code in anderem Arbeitsblatt löschen
05.08.2014 13:55:28
Daniel
Hi
Variante 1:
Kopiere nicht das Blatt mit Sheets.Copy, sondern lege mit Sheets.Add ein leeres Blatt an.
Füge die benötigten Inhalte mit Copy-PasteSpecial hinzu.
(kleiner Nachteil: wenn eine spezielle Seiteneinrichtung (Druckformat) besteht, muss diese explizit erstellt werden.
Variante 2:
lege auf dem Blatt keine ActiveX-Buttons an, sondern Formularsteuerelement-Buttons.
Deren Code steht ja nicht im Tabellenblattmodul, sondern in einem allgemeinen Modul.
Dann kopierst du das Blatt mit Sheets.Copy und löschst nur wie bereits beschrieben die Buttons.
Gruß Daniel

Anzeige
AW: Objekte und Code in anderem Arbeitsblatt löschen
05.08.2014 14:46:09
Ewald
Hallo Jan,
füge folgendes Makro in ein allgemeines Modul ein und teste dann mal

Sub MutterFormularKopieren()
Dim myname As String
Dim i As Long
myname = Application.InputBox("Erst den Namen der Zieltabelle eingeben!")
If myname = "" Or myname = False Then
MsgBox "Keinen Namen vergeben oder abgebrochen,es wird nicht kopiert"
Exit Sub
End If
For i = 1 To ThisWorkbook.Sheets.Count
If myname = Sheets(i).Name Then
MsgBox "Name schon vorhanden,es kann nicht kopiert werden"
Exit Sub
End If
Next
Sheets("Mutterbeleg").Copy after:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = myname
End Sub
und teste mal
Gruß Ewald

Anzeige
AW: Objekte und Code in anderem Arbeitsblatt löschen
05.08.2014 15:18:41
Jan
Hallo Ewald,
klappt vom Feinsten. Musste nur ".. Or myname = False" rausnehmen, weil Du myName ja als String dimensioniert hast. Sonst Fehler "Typen unverträglich".
Ich danke Dir ganz herzlich. Mein Problem ist gelöst - und wie ich meine auf eine sehr elegante Weise. Es macht ja wirklich wenig Sinn, erst das unnötige Gedönse mit zu kopieren, um es dann anschließend mühsam zu löschen.
Schöne Grüße aus dem Pott.
Jan
PS. Bin aber grundsätzlich weiter an den anderen Lösungen interessiert, weil sie mich in meinen Lernprozess weiterbringen.

AW: Objekte und Code in anderem Arbeitsblatt löschen
05.08.2014 16:46:34
Ewald
Hallo Jan,
es muß heißen

If myname = "" Or myname = "Falsch" Then
sonst wird wenn du keinen Namen eingibst und Abbrechen klickst,das Blatt kopiert und der Name "Falsch" vergeben.
Gruß Ewald

Anzeige
AW: Objekte und Code in anderem Arbeitsblatt löschen
05.08.2014 17:08:23
Jan
Hallo Ewald,
tatsächlich, die InputBox gibt bei Abbrechen ein "Falsch" zurück. An was man alles denken muss!
Habe es korrigiert und danke Dir.
Gruß Jan

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige