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

CreateForm Laufzeitfehler 7952

CreateForm Laufzeitfehler 7952
19.03.2023 11:39:09
Herr Kürbis

Liebe Excel-Experten,

ich möchte gerne ein Makro programmieren, mit dem ich Active-X-Steuerelemente in meiner Datei generieren kann. Hierbei orientiere ich mich an folgendem Microsoft-Guide: https://learn.microsoft.com/de-de/office/vba/api/access.application.createcontrol

Mein Problem ist, dass der CreateForm-Befehl den Laufzeitfehler '7952' (Anwendungs- oder objektdefinierter Fehler) verursacht.

Hier mein Code:


Sub NewControls()
Dim frm As Form
Dim CheckBox As Control
Dim X As Integer, Y As Integer
  
Dim Tab1 As Worksheet
Set Tab1 = Tabelle1
Dim Datenbank As ListObject
Set Datenbank = Tab1.ListObjects("Tabelle1")
 
' Create new form with Datenbank table as its record source.
Set frm = CreateForm
frm.RecordSource = Datenbank
' Set positioning values for new controls.
X = 100
Y = 100
' Create unbound default-size text box in detail section.
Set CheckBox = CreateControl(Datenbank, acCheckBox, , "", "", _
X, Y)
' Restore form.
DoCmd.Restore
End Sub


Die Zeile Set frm = CreateForm ruft den genannten Fehler hervor. Woran kann das liegen?

Lieben Gruß

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CreateForm Laufzeitfehler 7952
19.03.2023 12:21:58
onur
Und warum unbedingt während der Laufzeit statt während der Entwicklungszeit ?


AW: CreateForm Laufzeitfehler 7952
19.03.2023 12:28:49
Herr Kürbis
Könntest du deine Frage bitte noch einmal spezifizieren? Ich verstehe Sie leider inhaltlich nicht. Worauf bezieht sich das "warum"? Auf das Auftreten des Fehlers? Auf das Erzeugen des Steuerelements?


AW: CreateForm Laufzeitfehler 7952
19.03.2023 12:32:55
onur
Nein. Active-X-Elemente erzeugt und plaziert man nur während der Entwicklungszeit, und erst recht, wenn man "VBA-bescheiden" ist.
ICH habe bis dato noch NIE die Notwendigkeit gesehen, sowas unbedingt während der Laufzeit plazieren zu müssen.


AW: CreateForm Laufzeitfehler 7952
19.03.2023 12:49:30
Herr Kürbis
Ich finde deine Antwort etwas unsachlich und unhöflich, um ehrlich zu sein. Der Microsoft-Link, den ich angegeben habe, legt m.E. nahe, dass die Erzeugung von Active-X-Steuerelementen während der Laufzeit grundsätzlich möglich ist. Ob ich dies für mein Projekt für sinnvoll befinde, kann ich ja wohl selbst entscheiden, oder? (Ich möchte mehrere hundert Checkboxes für eine Mailingliste ungern von Hand erzeugen.) – Ich gestehe zu, dass das Vorhaben über meine bisherigen Kenntnisse herausreicht, aber gerade für so etwas sind Foren wie dieses doch da, oder verstehe ich da etwas falsch?

Meine eigentliche Frage war ja außerdem die nach den möglichen Fehlerquellen beim CreateForm-Befehl. Die wäre immer noch offen ... :/


Anzeige
AW: CreateForm Laufzeitfehler 7952
19.03.2023 12:56:57
onur
Entschuldige bitte, dass ich es gewagt habe, zu fragen, wozu Jemand sowas brauchen könnte....

Noch viel Glück !!!


AW: CreateForm Laufzeitfehler 7952
19.03.2023 13:08:18
Herr Kürbis
Du hast mich aber gar nicht gefragt, wozu ich das brauche. Du hast einfach gesagt, dass das grundsätzlich nicht geht. Verstehst du, dass man sich da nicht wohlfühlt, wenn man es zum ersten Mal wagt, etwas in diesem Forum hier zu posten?

Noch einmal ausführlicher: Ich habe eine sehr lange Tabelle mit Mailadressen, die ich mit Checkboxes versehen möchte. Jeweils eine Checkbox pro Reihe. Optimalerweise gäbe es eine "Master-Checkbox", mit der man alle anderen Checkboxes aktivieren oder deaktivieren kann. Die Idee ist, dass nach Auswahl der gewünschten Adressen mithilfe der Checboxes ein Button bedient werden kann, der eine Mail an jede dieser Adressen versendet. Wie man Mails aus Excel heraus versenden kann, weiß ich bereits. Ich dachte mir nur, dass es sicherlich einen Weg gibt, die mühsame Arbeit "zu Fuß" – nämlich mehrere hundert Checkboxes zu erstellen – zu umgehen. Vor allem im Hinblick darauf, dass ich vielleicht irgendwann noch einmal auf ein ähnliches Problem stoße.


Anzeige
AW: CreateForm Laufzeitfehler 7952
19.03.2023 13:27:44
onur
"Und warum unbedingt während der Laufzeit statt während der Entwicklungszeit ?" war doch eine Frage, oder vertue ich mich?
"Aus Faulheit, weil ich Hunderte davon brauche" Wäre eine Antwortmöglichkeit gewesen.
Das Problem ist Folgendes: Hast du tausend Checkboxen, die du auch noch plazieren musst, hast du auch tausend Codes, die du schreiben musst. Es macht keinen Sinn. Vor allem, wenn du die Häkchen auch noch verarbeiten musst.
Das Wichtigste bei einer Exceltabelle sollte nicht die Optik sondern die Machbarkeit und die Praxistauglichkeit sein, Für 5% bessere Optik muss man nicht 5000 % mehr Aufwand (nicht nur jetzt, sondern auch später) in Kauf nehmen.
ICH nehme bei sowas entweder ein einfaches "X" oder ein Häkchen-Symbol (Wingdings Zeichen 252 "ü").
DAS kannst ganz einfach mit Formeln oder VBA abfragen, setzen und weiterverarbeiten.


Anzeige
AW: CreateForm Laufzeitfehler 7952
21.03.2023 12:49:56
Daniel
nicht nur das erstellen der Makros für die Controls ist ein Problem.
(die Makros braucht man ja auch nicht immer)
aber die ActiveX-Controls brauchen viele Ressourchen und belasten das System, ausßerdem machen solche Grafikelemente probleme, wenn man solche Listen sortiert oder oder filtert.

da ist es viel einfacher, wenn man die Zellen selbst entsprechend verwendet.
Statt Checkbox einfach eine Spalte mit einem ja- oder nein-Kennzeichen, das kann eine 1, ein "x" ein echtes WAHR/FALSCH (boolscher Wert) oder auch auch ein Häkchen-Symbol, alles machbar, und Mausklick-Komfort kann man einfach mit wenig wissen und Aufwand über das BeforeDoubleClick-Event erstellen.
Checkbox-ActiveX-Controls sehen zwar professionell nach "echter Datenbank" aus, bringen aber außer Optik wenig echten Komfort für den Anwender und breitem denjenigen, der die Liste erstellen muss, viel Aufwand.
Unterm Strich lohnt es sich also nicht, ActiveX-Checkboxen dynamisch pro Zeile in einer Tabelle zu verwenden.
Gruß Daniel


Anzeige
AW: CreateForm Laufzeitfehler 7952
19.03.2023 12:46:04
onur
Falls dich das Ganze immer noch verwirrt :
Entwicklungszeit = zu Fuss
Laufzeit = per VBA-Code.


AW: CreateForm Laufzeitfehler 7952
19.03.2023 13:41:08
ralf_b
verwendest du MSAccess? Createform bezieht sich auf Accessformulare.
Vielleicht bist du in einem Access Forum besser beraten oder du verwendest Excelobjekte dann können wir auch helfen.
z.b. könntest du auf Checkboxen verzichten und nur ein "x" als Auswahlkriterium in die erste Zelle des Datensatzes schreiben.
das ist wesentlich besser auszuwerten als später jedes Blattobjekt auf seinen Wert abzufragen.


Anzeige
AW: CreateForm Laufzeitfehler 7952
19.03.2023 13:47:15
Herr Kürbis
Das könnte das Problem sein, danke ... Ja, auf die Sache mit dem X bin ich auch schon gekommen. Ich dachte bloß, es gibt vielleicht eine schönere Variante, da ich das Dokument für Kollegen entwickle und es daher möglichst benutzerfreundlich gestalten wollte. Aber es wird auch so passen.


AW: CreateForm Laufzeitfehler 7952
19.03.2023 13:50:57
onur
"und nur ein "x" als Auswahlkriterium" - Geniale Idee, Ralf - wäre ich NIE drauf gekommen! :)


@onur
19.03.2023 14:24:32
ralf_b
haha, ich weis du du sowas auch schon irgendwo mal vorgeschlagen hast. Wenn hier im Thread, dann hab ich's überlesen.
Ich halte nichts davon Sachen doppelt oder dreifach zu posten.
als Alternative böte sich natürlich auch ein anderer Buchstabe oder eine leicht zu erreichende Zahl an.
Oder das Doppelklickevent nutzen, um Werte einzutragen. oder oder oder.

Bei Benutzfreundlichkeit scheiterts meist an der Freundlichkeit der Benutzer.


Anzeige
AW: @onur
19.03.2023 15:21:03
onur
Kein Ding! Anscheinend gefiel ihm dein "X" sowieso besser, meine Beitrag war offenbar nicht würdig genug, beantwortet zu werden. :)


Code für Excel
19.03.2023 17:24:11
Rudi Maintaire
Hallo,
z.B.
Sub aaaa()
  Dim iHeight As Double, iWidth As Double
  Dim oObj As OLEObject
  Dim rngC As Range
  
  iHeight = 12
  iWidth = 12
  
  Application.ScreenUpdating = False
  With Sheets("Adressen") 'anpassen
    For Each rngC In .Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp))
      Set oObj = .OLEObjects.Add("Forms.CheckBox.1")
      With oObj
        .Top = rngC.Top + 1
        .Left = rngC.Offset(, 1).Left + 1
        .Height = iHeight
        .Width = iWidth
        .LinkedCell = rngC.Offset(, 1).Address
        With .Object
          .Caption = ""
          .Value = False
        End With
      End With
    Next rngC
  End With
End Sub
Gruß
Rudi


Anzeige
AW: Code für Excel
21.03.2023 12:23:17
Herr Kürbis
Hey, entschuldige die späte Rückmeldung! Vielen Dank, dass du dir noch die Mühe gemacht hast. Ich werde deine Lösung im Laufe der Woche implementieren, gerade ist leider zu viel los. Wenn sich noch Schwierigkeiten ergeben, melde ich mich nochmal! :)

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige