Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Matrix vom Sub/Function an Main übergeben

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
  
PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
Autor Thema:  Matrix vom Sub/Function an Main übergeben (1246 mal gelesen)
otm
Mitglied
Bauingenieur


Sehen Sie sich das Profil von otm an!   Senden Sie eine Private Message an otm  Schreiben Sie einen Gästebucheintrag für otm

Beiträge: 192
Registriert: 26.08.2009

MS Win 10
AutoCAD Civil 3D 2023.2.1 Update
VBA Enabler 2019
MS Access Database Enginge X64
MSO 365 (64bit)

erstellt am: 23. Jul. 2015 21:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Liebes Forum,

ich übergebe an eine Function bzw. an ein Sub Daten und fülle im Sub/Function eine Matrix(n, m) mit Daten, die ich daraus ableite.
Diese Daten würde ich dann gerne wieder an das "Main"-Sub übergeben von dem aus das Sub/die Function aufgerufen wurde.

Bislang mach ich das über eine globale Matrix.
Geht das auch anders und wenn ja, wie?


Vielen Dank Euch

------------------
Grüße aus München
Christian

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Ingenieur Studio HOLLAUS
Mitglied
CAD / CAFM / GIS Beratung-Programmierung-Schulung


Sehen Sie sich das Profil von Ingenieur Studio HOLLAUS an!   Senden Sie eine Private Message an Ingenieur Studio HOLLAUS  Schreiben Sie einen Gästebucheintrag für Ingenieur Studio HOLLAUS

Beiträge: 1049
Registriert: 06.11.2008

Autocad 2 bis Autocad 2020 (+Map3D, +Civil3D, +Infraworks)
RKV .... CAFM+mehr
HMap ... Vermessung und Verkehr
OoC .... Raumplanung
CBox ... Tools für AutoCAD und BricsCAD (kostenfrei)

erstellt am: 24. Jul. 2015 11:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für otm 10 Unities + Antwort hilfreich

Wenn Du Parameter einer Sub/Function "byRef" deklarierst, dann werden diese auch zurückgegeben. Beispiel:
Code:
Private sub myMain
  Dim myVar as double
  myVar = 1.0
  Call mySub(myVar)
  Call MsgBox(myVar)    'hier sieht man, dass die Variable
                        '"myVar" von der Sub befüllt und an
                        'die aufrufende Instanz retourniert wurde
End Sub

Private Sub mySub(byref X as Double)
  X = 24.7
End Sub


------------------


www.cars4fun.at

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

otm
Mitglied
Bauingenieur


Sehen Sie sich das Profil von otm an!   Senden Sie eine Private Message an otm  Schreiben Sie einen Gästebucheintrag für otm

Beiträge: 192
Registriert: 26.08.2009

MS Win 10
AutoCAD Civil 3D 2023.2.1 Update
VBA Enabler 2019
MS Access Database Enginge X64
MSO 365 (64bit)

erstellt am: 28. Jul. 2015 12:38    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Vielen Dank.
Hat mir sehr weitergeholfen.

------------------
Grüße aus München
Christian

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

otm
Mitglied
Bauingenieur


Sehen Sie sich das Profil von otm an!   Senden Sie eine Private Message an otm  Schreiben Sie einen Gästebucheintrag für otm

Beiträge: 192
Registriert: 26.08.2009

MS Win 10
AutoCAD Civil 3D 2023.2.1 Update
VBA Enabler 2019
MS Access Database Enginge X64
MSO 365 (64bit)

erstellt am: 28. Jul. 2015 18:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Jetzt hab ich doch nochmal eine Frage.

Wenn ich ein Datenfeld übergeben möchte,
was ist dann an den folgenden Zeilen falsch?


Code:

Sub MyMain()
    Dim intI As Integer
    Dim Inf(0 To 7) As Variant
   
    Inf(0) = "Layername"
   
    Call MySub(Inf(0))

    'Ausgabe der zurückgegebenen Werte
    For intI = 0 To 7
        MsgBox "String: " & Inf(intI)
    Next intI

End Sub

Private Sub MySub(ParamArray X() As Variant)

    'x(0) = Layername (wird übergeben)
   
    'Definieren der Matrixwerte
    X(2) = "a"
    X(3) = "b"
    ...
    X(7) = "z"
   
End Sub


------------------
Grüße aus München
Christian

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2855
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2025
Plateia, Canalis
Visual Basic

erstellt am: 28. Jul. 2015 19:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für otm 10 Unities + Antwort hilfreich

Wie Hollaus schon geschrieben hatte : ByRef
Code:

Sub MyMain()
    Dim intI As Integer
    Dim Inf(0 To 7) As Variant
 
    Inf(0) = "Layername"
 
    Call MySub(Inf) ' ganzes Feld übergeben

    'Ausgabe der zurückgegebenen Werte
    For intI = 0 To 7
        strT = strT & "String" & intI & " : " & Inf(intI) & vbCrLf
    Next intI
    MsgBox strT

End Sub

Private Sub MySub(ByRef X() As Variant)  ' <= Hier :  ByRef statt ParamArray

    'x(0) = Layername (wird übergeben)
 
    'Definieren der Matrixwerte
   
    X(1) = "1"
    X(2) = "a"
    X(3) = "b"
    X(4) = "c"
    X(5) = "d"
    X(6) = "e"
    X(7) = "z"
 
End Sub


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

otm
Mitglied
Bauingenieur


Sehen Sie sich das Profil von otm an!   Senden Sie eine Private Message an otm  Schreiben Sie einen Gästebucheintrag für otm

Beiträge: 192
Registriert: 26.08.2009

MS Win 10
AutoCAD Civil 3D 2023.2.1 Update
VBA Enabler 2019
MS Access Database Enginge X64
MSO 365 (64bit)

erstellt am: 02. Sep. 2015 20:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Vielen Dank, KlaK, für die Antwort.
Mein Dank hat urlaubsbedingt etwas gedauert.

------------------
Grüße aus München
Christian

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz