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.

Excel vba: Link & Eintrag in Indexblatt löschen
#1
Hallo zusammen,
leider habe ich zu meinem Problem nichts funktionierendes im Web gefunden.
In einem Workbook habe ich sehr viele Worksheets. Um einen Überblick zu bekommen habe ich ein Indexblatt mit Links auf die einzelnen Blätter erstellt.
Um nicht immer ein neues Indexblatt nach dem löschen eines Tabellenblattes erstellen zu müssen hätte ich gerne dass der Link im Indexblatt - und auch der Eintrag in der Zelle - gelöscht wird.
Schön wäre es wenn die restlichen Zellen mit den verbliebenen Links dann verschoben werden um keine Leerzellen dazwischen zu haben.

Wie kann man das mit vba umsetzen? Oder gibt es ein andere elegante Möglichkeit.

Vielen Dank für Eure Hilfe!
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#2
Hi Erich,

Du könntest einem Button im Indexblatt ein Makro zuweisen, das über eine Inputbox den Blattnamen abfrägt, und dann das Blatt und die Zeile mit dem Link löscht.

Dazu nimmst Du mit dem Rekorder das Löschen des Blattes und der dazugehörigen Linkzeile auf und postest es hier. Dann kann es gemeinsam verallgemeinert und auf Relevantes reduziert werden.
Antworten Top
#3
Hallo Ralf,

habe das gerade mal aufgenommen....weiß aber nicht ob dies das ist was Du möchtest

Code:
Sub Makro1()
'
' Makro1 Makro
'
   Sheets("Indexblatt").Select
   ActiveWindow.SmallScroll Down:=36
   Range("A68").Select
   Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
   Sheets("Tabelle1").Select
   ActiveWindow.SelectedSheets.Delete
   Sheets("Indexblatt").Select
   Selection.ClearContents
   Range("A69:A76").Select
   Selection.Cut Destination:=Range("A68:A75")
   Range("B68").Select
End Sub
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#4
Hi,

(02.04.2017, 10:52)sharky51 schrieb: habe das gerade mal aufgenommen....weiß aber nicht ob dies das ist was Du möchtest

so, hier mal ein Makro zurück:
Option Explicit

Sub Makro1()
   ' 
   ' Makro1 Makro 
   ' 
   Dim strLöschBlatt As String
   Dim i As Long
   ' 
   strLöschBlatt = InputBox("Bitte den Blattnamen eingeben!", "Welches Tabellenblatt soll gelöscht werden?")
   For i = 1 To Sheets.Count
      If Sheets(i).Name = strLöschBlatt Then
         Sheets(i).Delete
      End If
   Next i
   ActiveCell.EntireRow.Delete
End Sub


VBA/HTML - CodeConverter für Office-Foren, AddIn für Excel/Word 2000-2013 - komplett in VBA geschrieben von Lukas Mosimann. Projektbetreuung durch mumpel

Code erstellt und getestet in Office 15


Button einfügen und das Makro zuweisen

Vorgehen:
Zelle mit Link zu löschendem Blatt anklicken
Button drücken
Tabellenblatt-Name eingeben
Ok drücken
Löschen bestätigen
fertig
Antworten Top
#5
Hallo Ralf,

das löschen funktioniert ...aber dann kommt eine Fehlermeldung .... Index außerhalb des gültigen Bereichs..
Nehme mal an dass die Laufvariable "i" nicht mehr stimmt wenn ein Blatt gelöscht wurde.
Vor dem Löschen war i ja größer.
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#6
Hallo ihr zwei,

dreht mal die Schleife um (von hinten nach vorn)

Code:
For i = Sheets.Count To 1 Step -1
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#7
Danke Steffl,
das hat jetzt funktioniert.

Wie bekomme ich jetzt noch den Eintrag bzw. Link auf das Tabellenblatt aus dem Indxblatt...mit vba natürlich Smile ?
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#8
Hi,

(02.04.2017, 13:36)sharky51 schrieb: Wie bekomme ich jetzt noch den Eintrag bzw. Link auf das Tabellenblatt aus dem Indxblatt...mit vba natürlich Smile ?

ist doch drin:
Zelle mit Link zu löschendem Blatt anklicken
und
ActiveCell.EntireRow.Delete
Antworten Top
#9
Ok, war mein Fehler.
Ich habe über das Indexblatt das zu löschende Blatt aufgerufen und in der vba-Umgebung das Makro manuell gestartet.
Dann war ich natürlich nicht mehr auf dem Indexblatt und somit konnte die Zeile nicht gelöscht werden.
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antworten Top
#10
Hallo,

wenn die Zelle mit dem Hyperlink eh schon markiert/aktiviert ist, bedarf es doch keiner Inputbox und keiner Schleife. Wink

Sub Makro1()
Application.DisplayAlerts = False
Range(ActiveCell.Hyperlinks(1).SubAddress).Parent.Delete
ActiveCell.EntireRow.Delete
Application.DisplayAlerts = True
End Sub

Gruß Uwe
Antworten Top


Gehe zu:


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