Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
448to452
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
448to452
448to452
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

AddFromString

AddFromString
04.07.2004 15:56:37
Kladeb
Hallo Forum,
mit dem folgenden Code möchte ich ein Tabellenblatt in eine Arbeitsmappe einfügen. In dem neuem Blatt "Übersicht" soll für jedes bereits vorhandene Tabellenblatt ein Button erstellt werden. Das funktioniert auch so weit ganz gut, bloß das erstellen des Click-Makros klappt leider nicht ... Excel meckert Laufzeitfehler 1004.
Was mache ich da falsch?
Option Explicit

Private Sub Workbook_Open()
Dim loSheetZl As Object, loSheetX As Object, loButton As Object
Dim lbLöschen As Boolean
Dim lnTop As Integer, lnLeft As Integer
Dim lcCode As String, lcCodeZl As String
For Each loSheetZl In ThisWorkbook.Sheets
If loSheetZl.Name = "Übersicht" Then
lbLöschen = True
Exit For
End If
Next
If lbLöschen = True Then
Application.DisplayAlerts = False
loSheetZl.Delete
Application.DisplayAlerts = True
End If
Set loSheetZl = ThisWorkbook.Sheets.Add(Worksheets(1))
loSheetZl.Name = "Übersicht"
loSheetZl.Activate
ActiveWindow.DisplayGridlines = False
With loSheetZl.Cells.Interior
.ColorIndex = 49
.Pattern = xlSolid
End With
lnTop = 20
lnLeft = 20
For Each loSheetX In ThisWorkbook.Sheets
If Not (loSheetX.Name = loSheetZl.Name) Then
Set loButton = loSheetZl.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _
Link:=False, DisplayAsIcon:=False, _
Left:=lnLeft, Top:=lnTop, _
Width:=120, Height:=40)
lnTop = lnTop + 50
loButton.Object.WordWrap = True
loButton.Object.Caption = loSheetX.Name
lcCode = "

Private Sub " & loButton.Name & "_Click()" & vbLf
lcCode = lcCode & "   MsgBox ""Hallo Welt!""" & vbLf
lcCode = lcCode & "End Sub
"

lcCodeZl = loSheetZl.CodeName

Debug.Print
ThisWorkbook.VBProject.VBComponents(lcCodeZl).CodeModule.AddFromString lcCode
If lnTop Mod 420 = 0 Then
lnTop = 20
lnLeft = lnLeft + 160
End If

End If
Next
loSheetZl.Range("A1").Select
End Sub

Gruss aus Hannover

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: AddFromString
Ulf
Geht doch, nur die letzte Zeile:
loSheetZl.Range("A1").Select
ist falsch
richtig:
loSheetZl.select
Range("A1").Select
Ulf
AW: AddFromString
04.07.2004 18:04:21
Kladeb
Hi Ulf,
bei mir klappts an der Stelle "ThisWorkbook.VBProject.VBComponents(lcCodeZl).CodeModule.AddFromString lcCode" leider nicht.
Da meckert Excel immer wie oben beschrieben.
Hast Du denn bei den Buttons auch das Makro dann entsprechend erstellt ?
Und warum funzt bei Dir "loSheetZl.Range("A1").Select" nicht?
Gruss aus Hannover
AW: AddFromString
Ulf
Ja, Button und Code werden erstellt.
"Und warum funzt bei Dir "loSheetZl.Range("A1").Select" nicht?"
Na, weils so nicht geht, immer schön nacheinander.
loSheetZl.Select
Range("A1").Select
Ulf
Anzeige
AW: AddFromString
04.07.2004 19:20:03
Kladeb
Hi Ulf,
also bei mir läuft das Makro ohne Probleme mit "loSheetZl.Range("A1").Select".
Ich muss halt nur die Zeile weiter oben auskommentieren.
Wieso geht das bei Dir und bei mir nicht *grübel*
Welche Excelversion benutzt Du denn?
Gruss aus Hannover
AW: AddFromString
Ulf
Getestet mit 2002
Ulf

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige