Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Name eines erzeugten Steuerelements ermitteln?

Name eines erzeugten Steuerelements ermitteln?
02.09.2016 19:15:15
Kasimir
Hallo Leute!
Ich habe da eine kleine Frage. Mit nachfolgendem VBA-Code erzeuge ich in einer UserForm ein Spreadsheet-Steuerelement.
Private Sub UserForm_Initialize()
Dim objspreadsheet As OWC11.Spreadsheet
Standardtexte.Range("B1:BH7").Copy
Set objspreadsheet = Me.Frame1.Controls.Add("OWC11.Spreadsheet", "Spreadsheet1", True)
With objspreadsheet
.Height = 188.25
.Left = 6
.Top = 12
.Width = 642
.DisplayToolbar = False
.DisplayVerticalScrollBar = False
.DisplayWorkbookTabs = False
.Range("A1:BG7").Paste
.Columns("A:BG").EntireColumn.AutoFit
.Range("A1").Select
.Rows("1:8").RowHeight = 20
.Rows("9:262144").RowHeight = 0.1
.Columns("BH:ZZZ").ColumnWidth = 0.1
.Range("C1:BH8").Locked = False
.Worksheets("Tabelle1").Protect
End With
Set objspreadsheet = Nothing
End Sub
Das mache ich, weil ich beim Öffnen der Datei immer den Hinweis
„Diese Anwendung versucht, ActiveX-Steuerelemente zu initialisieren, die unsicher sein können. Wenn Sie der Quelle der Datei vertrauen, wählen Sie "OK" und die Steuerelemente werden mit Ihren aktuellen Arbeitsbereichseinstellungen initialisiert.“
erhalte. Wenn ich das Spreadsheet erst erstelle, wenn ich die UserForm aufrufe, kommt die Meldung nicht. Ist zwar eine Krücke, funktioniert aber.
Nun möchte ich in der UserForm aber auf das Spreadsheet zugreifen, z.B. mit einem Button Daten aus dem Spreadsheet in eine Tabelle übertagen, weiß aber nicht wie, weil ich den Namen des Spreadsheets nicht kenne. Kann mir jemand sagen, wie ich das Steuerelement ansprechen muss.
Danke Euch schon mal für die Hilfe,
Kasimir
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Gelöst!
02.09.2016 19:23:30
Kasimir
Hallo Leute!
Manchmal sieht man den Wald vor Bäumen nicht. Ich habe es jetzt mit folgendem Code gelöst:
Private Sub CommandButton1_Click()
Dim ctControlName       As control
For Each ctControlName In Me.Controls
If TypeName(ctControlName) = "Spreadsheet" Then
ctControlName.Range("A2:BG7").Copy
Standardtexte.Range("B2").PasteSpecial Paste:=xlPasteAll
End If
Next
End Sub
Sorry, dass ich Euch belästigt habe.
MfG,
Kasimir
Anzeige
AW: Gelöst!
02.09.2016 19:49:20
Nepumuk
Hallo Kasimir,
in dieser Zeile:
Controls.Add("OWC11.Spreadsheet", "Spreadsheet1", True)
gibst du dem Control den Namen Spreadsheet1, also warum danach suchen? Einfach so:
Private Sub CommandButton1_Click()
Controls("Spreadsheet1").Worksheets("Tabelle1").Range("A2:BG7").Copy
Standardtexte.Range("B2").PasteSpecial Paste:=xlPasteAll
End Sub

Gruß
Nepumuk
Anzeige
AW: Gelöst!
02.09.2016 19:59:33
Kasimir
Hallo Nepumuk!
Das sieht natürlich eleganter aus. Ich werde es wie von Dir vorgeschlagen machen. Danke Dir, dass Du Dir, obwohl ich den Beitrag als gelöst markiert habe, trotzdem noch die Mühe gemacht hast, einen Lösungsvorschlag zu posten.
Schönes Wochenende,
Kasimir
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige