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

Einfügen Blatt vor Blatt 1 unterbinden

Einfügen Blatt vor Blatt 1 unterbinden
Martin
Guten Tag
Wie kann das Einfügen eines Blattes vor dem Blatt 1 unterbinden? Es sollen nur Blätter hinter Blatt 1 einfügt werden können.
Besten Dank für Eure Hilfe.

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Einfügen Blatt vor Blatt 1 unterbinden
28.06.2011 09:53:17
Dirk
Hallo!
Kleines Makro in Workbook_NewSheet:
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Sh.Move after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
End Sub
Gruss
Dirk aus Dubai
Manuelles Einfügen von Blatt ganz unterbinden
28.06.2011 10:03:20
Blatt
Hoi Dirk in Dubai!
Herzlichen Dank für die schnelle Antwort.
Noch eine kurze Zusatz-Frage: Gibt es eine Möglichkeit zu differenzieren, ob ein Benutzer manuell ein neues Blatt einfügt oder ob es das Makro macht?
Im Prinzip möchte ich eigentlich unterbinden, dass der Benutzer manuell ein Blatt einfügt, aber ein Makro sollte das machen können......
Habe es so versucht, doch klappt es nicht (resp. es gibt eine Fehlermeldung, wenn das Makro ein Blatt einfügen will)
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Application.DisplayAlerts = False
Sh.Delete
Application.DisplayAlerts = True
End Sub
Vielen Dank
Gruss
Martin
Anzeige
AW: Manuelles Einfügen von Blatt ganz unterbinden
28.06.2011 10:10:58
Blatt
Hallo,
dann schütze die Mappe und bastel die einen Menüpunkt.
Sub Blatt_einfuegen()
With ThisWorkbook
.Unprotect strPW
.Worksheets.Add after:=.Sheets(.Sheets.Count)
.Protect strPW
End With
End Sub

Gruß
Rudi
und wer ...
28.06.2011 10:05:46
Rudi
Hallo,
... hindert den bösen User daran, das Blatt zu verschieben?
Gruß
Rudi
AW: und wer ...
28.06.2011 10:22:15
Martin
Hoi Rudi
Tja, am besten stelle ich mal das ganze Makro rein, das ich mir da zusammengebastelt habe. Ich möchte einfach, dass der Benutzer keine manuellen Blätter einschiebt, damit das Worksheet(1) auch dort bleibt, der Name des Worksheets muss der Benutzer aber ändern können (daher kann ich nicht den Namen benutzen, denn den kenne ich nicht....)
Eigentlich geht es um Spalten F6 - F26 im ersten Worksheet. Ein Eintrag in die erste Leerzeile dieses Bereichs soll ein neues Tabellenblatt kreieren, dass den Namen dieser F-Zelle erhält. Gleichzeitig soll auf diesem neuen Tabellenblatt ein Retour-Button sein, der bei Anklick das Tabellenblatt wieder ausblendet:
PS: Bin nur Anfänger, hab deshalb Erbarmen, falls es nicht Profi-mässig aussieht - alle Verbesserung und Ratschläge sind herzlich willkommen
Gruss
Martin
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim Name$
Dim objBut As Object
If Not Intersect(Target, Range("F6:F26")) Is Nothing Then
If Target.Value = "" Then
MsgBox "Rechtsklick nicht erlaubt, da Zelle leer ist"
Exit Sub
End If
If Len(Target.Value) > 30 Then
Name = Left(Target.Value, 30)
Else
Name = Target.Value
End If
With Sheets(Name)
.Visible = True
.Select
.UsedRange.End(xlDown).Offset(1, 0).Select
End With
Set objBut = Sheets(Name).Buttons.Add(0, 0, 75, 25)
With objBut
.OnAction = "Retour"
.Caption = "Retour"
.Name = "cmdRetour"
End With
Cancel = True
End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim i%
Dim Blatt As Worksheet
Dim Name$
If Target.Offset(-1, 0).Value = "" Then
MsgBox "Leerzeilen nicht erlaubt, bitte direkt unterhalb des letzten Eintrags  _
in Spalte F eingeben"
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
Exit Sub
End If
If Len(Target.Value) > 30 Then
Name = Left(Target.Value, 30)
Else
Name = Target.Value
End If
If Not Intersect(Target, Range("F6:F26")) Is Nothing Then
i = Target.Row - 4
If Target.Value  "" Then
If Worksheets.Count 
Private Sub Retour()
Dim objBut As Object
ActiveSheet.Shapes("cmdRetour").Cut
ActiveSheet.Visible = xlVeryHidden  'False
Sheets(1).Select
End Sub

Anzeige
AW: und wer ...
28.06.2011 10:49:31
Rudi
Hallo,
arbeite doch einfach mit dem Codenamen des Blatts.
Also anstatt Sheets(1).activate oder Sheets("Tabelle1").activate einfach Tabelle1.activate.
Dann ist es Wurscht, an welcher Pos. das Blatt ist.
Gruß
Rudi
AW: und wer ...
28.06.2011 11:03:55
Martin
Salü Rudi
Vielen Dank für die Info. Und wenn's jetzt auch etwas peinlich tönt, aber ich hatte von diesen Codename noch nie gehört....(war mal in einem kurzen Einführungs-VBA-Kurs, nicht mal dort! In meinem 900-Seiten Excel Buch: nichts, da wird immer Sheets(1).activate oder Sheets("Tabelle1").activate gearbeitet.....)
Gruss
Martin
der Codename ....
28.06.2011 11:10:33
Rudi
Hallo,
einer Tabelle ist der, der in den Microsoft Excel Objekten vor der Klammer steht. Den kannst du auch im Eigenschaftenfenster ändern.
Gruß
Rudi
Anzeige
Codename ändern via VBA?
28.06.2011 11:16:12
Martin
Hoi Rudi
Vielen Dank!
Kann ich diesen Codenamen auch via VBA ändern oder nur im Eigenschaftenfenster?
Martin
AW: Codename ändern via VBA?
28.06.2011 11:37:06
Rudi
Hallo,
ja, das geht auch.
ThisWorkbook.VBProject.VBComponents("Tabelle1").Properties("_codename") = "MeinBlatt"
Gruß
Rudi
AW: Codename ändern via VBA?
28.06.2011 13:40:42
Martin
Hoi Rudi
Ich habe das mal in ein neues, leeres Workbook gestellt und kriege einen Laufzeitfehler 1004 .
Was mache ich falsch? (Excel 2010)
Vielen Dank nochmals.
Gruss
Martin
Code im Workbook:
Sub Change_Codename()
ThisWorkbook.VBProject.VBComponents("Tabelle1").Properties("_codename") = "MeinBlatt"
End Sub

Anzeige
AW: Codename ändern via VBA?
28.06.2011 14:18:59
Martin
Hat sich erledigt, muss mit den Sicherheitseinstellung zu tun haben....
Danke nochmals an Rudi!
LG
Martin

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige