Basisreferenz erstellen: Ten Code Conversions for VBA, Visual Basic .NET, and C#
VBA entspricht C# oder VB.NET Importe/Aliase
Hinweis: Ich habe bereits erstellt und importiert eine *.dll
, diese Frage zuAliase.
ist der programmatische Name einer Test
Klasse sagen Lassen TestNameSpace.Test
[ProgId("TestNamespace.Test")]
public class Test ...
Nun, sagen wir eine C# Lösung in eine *.dll
versiegelt und kompiliert wurde, und ich bin Referenzierung es in einer VBE des Excel. Hinweis: An dieser Stelle kann ich den programmatischen Namen nicht ändern, als ob die *.dll
nicht von mir geschrieben wurde.
Dies ist in VBA
: Anstatt eine Variable wie folgt erklärt:
Dim myTest As TestNameSpace.Test
Set myTest = new TestNameSpace.Test
ich lieber nennen es (noch in VBE)
Dim myTest As Test
Set myText = new Test
In C# würden Sie normalerweise sagen
using newNameForTest = TestNamespace.Test;
newNameForTest myTest = new NewNameForTest;
Hinweis: Angenommen, es gibt kein Namespace-Konflikte im VBA
Projekt
Frage: ist es ein Äquivalent Anruf in VBA
-C#
using
oder VB.NET
imports
Aliase?
Warum irreführend sehen? Und was hat Vererbung mit Namespaces zu tun? Namespaces ist eine Möglichkeit, alles richtig zu klassifizieren; Vererbung ist ein Ansatz, der verwendet wird, um die Definition eines gegebenen Objekts zu beschleunigen (z. B. alle Informationen von diesem anderen Objekt zu übernehmen). Vererbung hat nichts mit Importen zu tun. – varocarbas
In einem der Links, die ich zur Verfügung gestellt habe, schlägt der Typ eine Möglichkeit vor, Namespaces zu emulieren. Ich sage nicht, dass Sie sich etwas nicht einfallen lassen können. Ich sage, dass es zu wenig Sinn gemacht hätte, eine eingebaute Funktionalität für kurze Namen zu implementieren, wenn der längste Name nur aus zwei Wörtern besteht. – varocarbas
oh vielleicht war ich mit meinem Kommentar nicht klar. Beachten Sie eine * versteckte * eingebaute Funktion in VBE, die es Ihnen erlaubt, '(" Sheet1 ")' anstelle von 'Application.ThisWorkbook.Sheets (" Sheet1 ")' zu sagen. Denken Sie nun darüber nach, wie jedes Element (rechte Seite des Punktes) von seiner Elternklasse (linke Seite) erben muss.Da es sich um ein eingebautes Feature handelt, ist es versiegelt und das Erstellen eigener Klassen und Member wird es Ihnen nie erlauben, sie auf ähnliche Weise aufzurufen. Sie müssen immer einen vollständigen Pfad zu Ihren Klassen Class1.Class2.ClassNm angeben, VBE erstellt keinen Namespace für Sie. Hilft das meinen ersten Kommentar zu verstehen? –