Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Objekte und Code in anderem Arbeitsblatt löschen

Betrifft: Objekte und Code in anderem Arbeitsblatt löschen von: Jan Rehok
Geschrieben am: 05.08.2014 11:13:11

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

  

Betrifft: Objekte und Code in anderem Arbeitsblatt löschen von: Hajo_Zi
Geschrieben am: 05.08.2014 11:14:58

Hallo Jan,

Teil 2 speichere als XLSX.

Gruß Hajo


  

Betrifft: AW: Objekte und Code in anderem Arbeitsblatt löschen von: Arthur
Geschrieben am: 05.08.2014 11:37:28

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


  

Betrifft: AW: Objekte und Code in anderem Arbeitsblatt löschen von: Ewald
Geschrieben am: 05.08.2014 11:49:40

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


  

Betrifft: AW: Objekte und Code in anderem Arbeitsblatt löschen von: Jan Rehok
Geschrieben am: 05.08.2014 12:26:20

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


  

Betrifft: AW: Objekte und Code in anderem Arbeitsblatt löschen von: Jan Rehok
Geschrieben am: 05.08.2014 12:11:49

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 ... < an.

Sorry, aber ich bin Anfänger.

Gruß Jan


  

Betrifft: AW: Objekte und Code in anderem Arbeitsblatt löschen von: Werner
Geschrieben am: 05.08.2014 12:38:25

Hallo Jan,

nur mal so aus dem hohlen Bauch. Ist dein Blatt "Mutterbeleg" das aktive Blatt? Ersetzt mal ActiveSheet durch sheets("Mutterbeleg")

Gruß Werner


  

Betrifft: AW: Objekte und Code in anderem Arbeitsblatt löschen von: Jan Rehok
Geschrieben am: 05.08.2014 13:21:11

Hallo Werner,
hab' ich gemacht. Es ändert sich nichts. Gleiche Fehlermeldung.
Gruß
Jan


  

Betrifft: AW: Objekte und Code in anderem Arbeitsblatt löschen von: Werner
Geschrieben am: 05.08.2014 13:36:29

Hallo Jan,

lade doch mal deine Datei hoch,

Werner


  

Betrifft: AW: Objekte und Code in anderem Arbeitsblatt löschen von: Jan Rehok
Geschrieben am: 05.08.2014 14:15:49

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


  

Betrifft: AW: Objekte und Code in anderem Arbeitsblatt löschen von: Jan Rehok
Geschrieben am: 05.08.2014 14:40:12

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


  

Betrifft: AW: Objekte und Code in anderem Arbeitsblatt löschen von: Daniel
Geschrieben am: 05.08.2014 13:55:28

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


  

Betrifft: AW: Objekte und Code in anderem Arbeitsblatt löschen von: Ewald
Geschrieben am: 05.08.2014 14:46:09

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


  

Betrifft: AW: Objekte und Code in anderem Arbeitsblatt löschen von: Jan Rehok
Geschrieben am: 05.08.2014 15:18:41

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.


  

Betrifft: AW: Objekte und Code in anderem Arbeitsblatt löschen von: Ewald
Geschrieben am: 05.08.2014 16:46:34

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


  

Betrifft: AW: Objekte und Code in anderem Arbeitsblatt löschen von: Jan Rehok
Geschrieben am: 05.08.2014 17:08:23

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


 

Beiträge aus den Excel-Beispielen zum Thema "Objekte und Code in anderem Arbeitsblatt löschen"