# VB-Verweise



## doppelkeks123 (23. Juli 2008)

Hallo,

ich arbeite mit VB6 und Access (2003) und mein Problem ist, dass ich auf einige Methoden/Datenobjekte, die es in VB geben sollte, nicht zugreifen kann, z.B.: 'show', um ein Formular anzuzeigen oder 'add', um ein Steuerelement zu einem Formular hinzuzufügen. Ich habe überlegt, dass ich vielleicht einen zusätzlichen Verweis hinzufügen muss? Aber welchen? Und kann es wirklich daran liegen?

Könnt ihr mir weiterhelfen?
Vielen Dank!
Nicole


----------



## ronaldh (23. Juli 2008)

Hallo Nicole,

ich denke, Du arbeitest mit VBA (das heißt mit dem in Access enthaltenen VB). Mit VB6 wäre das alles überhaupt kein Problem, VBA jedoch ist eine doch recht abgespeckte VB-Form, die zwar auf VB6 basiert, bei der jedoch viel Funktionalität weg gefallen ist. 

Kann das sein?

Grüsse
ronaldh


----------



## doppelkeks123 (23. Juli 2008)

Danke für die schnelle Antwort!
Ja Du hast Recht, ich arbeite mit VBA. D.h. also ich habe keine Möglichkeit diese VB-speziellen Methoden zu nutzen?

Grüße,
Nicole


----------



## ronaldh (23. Juli 2008)

Hallo Nicole,

ich denke schon, dass es Möglichkeiten gibt, auch in VBA Formen anzuzeigen. Nur sind die Methoden, die beispielsweise für eine Form zur Verfügung stehen, leider anders als in VB6. In VBA stehen Eigenschaften und Methoden zur Verfügung, die es in VB6 nicht gibt, und umgekehrt. 

Ich habe mit VBA immer nur mal kleinere Makros erstellt, denn dazu ist es ja eigentlich da. Zum Programmieren nutze ich VB6, denn VBA ist damit letztlich wohl auch etwas überfordert. 

Da solltest Du mal in der VBA-Hilfe gucken, was Du findest. 

Viele Grüsse
Ronald


----------



## Zvoni (23. Juli 2008)

ronaldh hat gesagt.:


> *schnipp*, VBA jedoch ist eine doch recht abgespeckte VB-Form, die zwar auf VB6 basiert, bei der jedoch viel Funktionalität weg gefallen ist.
> *schnipp*



WHOAAA. BÖSES VETO!

VBA basiert nicht  auf VB6, sondern es ist genau umgekehrt!

VBA ist der gemeinsame Sprachkern! Access, Excel, Word, VB und wie sie alle heissen sind alles Clienten für den Sprachkern, welche dann zusätzlich zum VBA-Sprachkern noch ihre eigenen Eigenschaften u.ä. haben!


----------



## ronaldh (23. Juli 2008)

Da liegst Du falsch. VB6 ist eine Weiterentwicklung von allen vorhergehenden VB-Versionen, wobei Visual Basic für Windows 1.0 sogar noch in bestimmten Bereichen auf den DOS-Vorgängern Basic PDS 7.1 gründete. 

VBA erschien erst Mitte der 90er-Jahre, während es Visual Basic 1.0 bereits seit 1991 gibt. 


Zitat aus Wikipedia:


> Visual Basic for Applications (VBA) ist eine zu den Microsoft-Office-Programmen gehörende Skriptsprache. Sie wurde aus dem von Microsoft entwickelten BASIC-Dialekt Visual Basic (VB) abgeleitet und wurde zur Steuerung von Abläufen innerhalb der Microsoft-Office-Programme entwickelt. VBA ist seit Mitte der 1990er Jahre der Nachfolger der bis zu diesem Zeitpunkt in den Microsoft-Office-Anwendungen enthaltenen verschiedenen Makro-Sprachen.



Aber das hilft Nicole nun auch wirklich nicht weiter.

ronaldh


----------



## Zvoni (23. Juli 2008)

doppelkeks123 hat gesagt.:


> Hallo,
> 
> ich arbeite mit VB6 und Access (2003) und mein Problem ist, dass ich auf einige Methoden/Datenobjekte, die es in VB geben sollte, nicht zugreifen kann, z.B.: 'show', um ein Formular anzuzeigen oder 'add', um ein Steuerelement zu einem Formular hinzuzufügen. Ich habe überlegt, dass ich vielleicht einen zusätzlichen Verweis hinzufügen muss? Aber welchen? Und kann es wirklich daran liegen?
> 
> ...



Die UserForm in Office-Anwendungen hat aber eine "Show"-Methode, und die Controls-Auflistung einer UserForm hat durchaus eine "Add"-Methode, von daher kann ich nicht nachvollziehen, wo bei dir das Problem liegt.



ronaldh hat gesagt.:


> Da liegst Du falsch. VB6 ist eine Weiterentwicklung von allen vorhergehenden VB-Versionen, wobei Visual Basic für Windows 1.0 sogar noch in bestimmten Bereichen auf den DOS-Vorgängern Basic PDS 7.1 gründete.
> 
> VBA erschien erst Mitte der 90er-Jahre, während es Visual Basic 1.0 bereits seit 1991 gibt.
> 
> ...



Ronald, das mag so sein, und wir könnten uns wahrscheinlich auch ewig darüber streiten. ;-) Das einzige was ich weiss ist, dass Bruce McKinney als er noch Mitarbeiter von WinzigWeich war (und die sollten es eigentlich wissen) in seinem Buch "Hardcore Visual Basic" die definitive Aussage gemacht hat, dass VB eine Obermenge von VBA ist (und das ist auch der Grund, warum in VB unter Verweisen immer der Eintrag für VBA angehakt ist), und VBA der gemeinsame Sprachkern für alle Clienten ist (Und zwar seit Mitte der 90er. Hat einer von euch schon mal ein WordBasic-Makro gesehen? *schauder*). Und VBA war bereits der Sprachkern als VB4 auf den Markt kam (und ich habe mit VB4 angefangen!). Dein Zitat aus Wikipedia besagt nur, dass VBA seit Mitte der 90er die gemeinsame Skriptsprache der Office-Anwendungen ist, nicht dass es erst damals erfunden/aus VB abgeleitet wurde.

Aber du hast recht. Das hilt Nicki auch nicht weiter. :suspekt:


----------



## ronaldh (23. Juli 2008)

Zvoni hat gesagt.:


> Das einzige was ich weiss ist, dass Bruce McKinney als er noch Mitarbeiter von WinzigWeich war (und die sollten es eigentlich wissen) in seinem Buch "Hardcore Visual Basic" die definitive Aussage gemacht hat, dass VB eine Obermenge von VBA ist (und das ist auch der Grund, warum in VB unter Verweisen immer der Eintrag für VBA angehakt ist), und VBA der gemeinsame Sprachkern für alle Clienten ist (Und zwar seit Mitte der 90er. Hat einer von euch schon mal ein WordBasic-Makro gesehen? *schauder*). Und VBA war bereits der Sprachkern als VB4 auf den Markt kam (und ich habe mit VB4 angefangen!).



Eine "Obermenge" bedeutet nicht, dass die Untermenge zuerst da war, man kann durchaus auch aus einem komplexen System ein einfacheres ableiten, in dem man es um etliche Funktionen abmagert, um es beispielsweise auch in Umgebungen laufen zu lassen, in dem die Komplexität der "Obermenge" problematisch würde. Da z.B. VBA beispielsweise keine echte Kompilierung beinhaltet, ist es naturgemäß langsamer als VB Classic. Und da VBA ja in der Regel auch noch das zugehörige Office-Programm als Träger benötigt, sind auch (vor allem vor 10 Jahren) die verfügbaren Rechner Ressourcen entsprechend reduziert.

Im Übrigen habe ich mit Microsoft Basic 1.0 (1985) angefangen, und seitdem wirklich alle Schritte (über Quickbasic in allen Versionen, Basic PDS 7.x, VB-DOS 1.0, VB-Windows 1.0-6.0) mit gemacht. Und zumindest zu den Zeiten von VB Windows 2.0 gab es noch kein VBA, was Grundlage für VB hätte sein können.

Nichts für Ungut, ist auch etwas offtopic.

Aber zu dem Problem von Nicole noch mal zu kommen:
In Excel ist es kein Problem, eine Userform anzulegen, und diese mit Show aufzurufen. In Access finde ich diese Möglichkeit nicht. Über "Einfügen" wird dort nur "Modul" oder "Klassenmodul" angeboten (bei Excel gibt es dort zusätzlich den Menüpunkt "Userform". Und Formulare, die über den Formularassistenten von Access angelegt werden, haben eben kein Show-Ereignis.

Also wird Deine Aussage Nicole ebenfalls nicht weiter helfen. 

Grüsse
Ronald


----------



## Zvoni (24. Juli 2008)

ronaldh hat gesagt.:


> Aber zu dem Problem von Nicole noch mal zu kommen:
> In Excel ist es kein Problem, eine Userform anzulegen, und diese mit Show aufzurufen. In Access finde ich diese Möglichkeit nicht. Über "Einfügen" wird dort nur "Modul" oder "Klassenmodul" angeboten (bei Excel gibt es dort zusätzlich den Menüpunkt "Userform". Und Formulare, die über den Formularassistenten von Access angelegt werden, haben eben kein Show-Ereignis.
> 
> Also wird Deine Aussage Nicole ebenfalls nicht weiter helfen.
> ...



Echt? Hätte ich nicht erwartet, aber OK, Access missbrauche ich sowieso meist nur als Backbone.


----------



## ronaldh (24. Juli 2008)

Zvoni hat gesagt.:


> Echt? Hätte ich nicht erwartet, aber OK, Access missbrauche ich sowieso meist nur als Backbone.



Ich auch, deshalb kann ich Nicole hier ja auch nicht wirklich helfen, da müsste ich mich genauso wie sie einarbeiten. Ich weiß jedoch, dass es Leute gibt, die in Access Programme entwickeln. Und, obwohl mir das für komplexere Dinge nicht besonders professionell erscheint, selbst für Business-Programme.

Nun ja, vielleicht findet sich ja noch ein Access-Spezialist hier... 

Oder hast Du schon aufgegeben, oder die Lösung selbst gefunden, Nicole?


----------



## doppelkeks123 (24. Juli 2008)

Sagen wir ich habe aufgegeben tolle Dinge von Access zu erwarten. *g* Mein Programm ist zu weit um noch mal von vorne anzufangen. Ich muss jetzt halt alles einfach etwas umständlicher machen...

Vielen Dank für eure Mühe


----------



## Alex F. (24. Juli 2008)

Also um euch mal zu helfen
um unter Access eine Form anzuzeigen versucht es mal mit 

```
Call DoCmd.OpenForm("meineForm")
```
um diese Modal anzuzeigen ist folgender aufruf nötig :

```
Call DoCmd.OpenForm("meineForm",,,,,acDialog)
```

Grüsse bb

PS: zu dem OffTopic Thema würde ich auch ronaldh eher zustimmen, da VB sich auch aus VB3 entwickelt hat und soweit ich weiss dies noch nicht in irgendwelchen Office Klamotten verwendet wurde. Wobei ich mich daran nicht mehr so genau erinnern kann, andererseits sehe ich, auch wenn ich viel vba benutze, vba nicht als eigenständige Sprache für mich fehlen hier viele Elemente einer eigenständigen Programmiersprache im Gegensatz zu VB.


----------

