Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Kleinster Wert aus mehreren Variablen

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 SOLIDWORKS
Autor Thema:  Kleinster Wert aus mehreren Variablen (355 mal gelesen)
Mikel_m
Mitglied
Techniker


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

Beiträge: 21
Registriert: 12.12.2002

SolidWorks 2020 SP5.0

erstellt am: 09. Mrz. 2021 14:37    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

Hallo Zusammen,

ich suche mir gerade einen Wolf nach einer Funktion, mit der ich
den kleinsten Wert aus mehreren Variablen finden kann. Ich denke
eigentlich ganz einfach, aber ich komme nicht drauf. Mit dem folgenden
Programm vielleicht besser dargestellt, was ich meine:

Sub KleinstenWertFinden ()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
Dim a As Integer
Dim b As Integer
Dim c As Integer
    a = 2
    b = 5
    c = ???...????.Min?(a, b)
    MsgBox c
End Sub

Wäre super wenn mir jemand weiterhilft.

Gruß
Michael

------------------
Mikel_m

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

EIBe 3D
Mitglied
Dipl. - Ing. (FH)


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

Beiträge: 203
Registriert: 24.01.2020

HP Z4 G4 Workstation
Xeon 3,6 32GB
Nvidia P2000
WIN10
SW2015 SP5.0
SW2017
*************
Inv2018 akt.SP

erstellt am: 09. Mrz. 2021 15:12    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 Mikel_m 10 Unities + Antwort hilfreich

Hallo Michael,

in VBA ist das nicht ganz so einfach. Ich denke du musst deine Variablen in ein Array packen und dieses dann über den Quicksort Algorithmus sortieren. Mit den beiden Suchbegriffen solltest du weiterkommen.


Grüße

EIBe 3D

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

ad_man
Mitglied
freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))


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

Beiträge: 1273
Registriert: 20.12.2003

SolidWorks 2020 SP5 mit Enterprise PDM , Windows 10 x64, HP ZBook 17 G4, i7-7820HQ, 32 GB DDR-Ram, Quadro P-3000

erstellt am: 09. Mrz. 2021 15:13    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 Mikel_m 10 Unities + Antwort hilfreich

Mal was auf die Schnelle 


Code:

Function jMin(ParamArray Vals() As Variant)
Dim low As Variant

low = vals(0)

For i = LBound(Vals) To UBound(Vals)
    If Vals(i) < low Then low = Vals(i)
Next i

jMin = low
End Function

Sub test()
Debug.Print jMin( 451, 234, 456, 265, 785, 345)
End Sub


------------------
==========
Gruß
Andreas
==========

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

EIBe 3D
Mitglied
Dipl. - Ing. (FH)


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

Beiträge: 203
Registriert: 24.01.2020

HP Z4 G4 Workstation
Xeon 3,6 32GB
Nvidia P2000
WIN10
SW2015 SP5.0
SW2017
*************
Inv2018 akt.SP

erstellt am: 09. Mrz. 2021 16:04    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 Mikel_m 10 Unities + Antwort hilfreich

So gehts natürlich auch. Aber wehe die Variablen-(Parameter)namen zugehörig zum kleinsten Wert sollen ausgegeben werden. 

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

ad_man
Mitglied
freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))


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

Beiträge: 1273
Registriert: 20.12.2003

SolidWorks 2020 SP5 mit Enterprise PDM , Windows 10 x64, HP ZBook 17 G4, i7-7820HQ, 32 GB DDR-Ram, Quadro P-3000

erstellt am: 09. Mrz. 2021 16:12    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 Mikel_m 10 Unities + Antwort hilfreich

Ist doch kein Problem, da du ja die Zählvariable i aus der For-Next-Schleife
in einer Positionsvariablen abspeichern kannst     

Schönen Feierabend an alle...

------------------
==========
Gruß
Andreas
==========

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

nahe
Ehrenmitglied



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

Beiträge: 1595
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2018 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 10. Mrz. 2021 08:47    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 Mikel_m 10 Unities + Antwort hilfreich


Parameterliste.swp.txt

 
Hallo zusammen,

wäre, meiner Meinung nach, ein schönes Beispiel für die Verwendung eine Klasse

Klasse
**************************************************************
Private Type PStruct
  PName As String
  PValue As Double
End Type

Dim VList() As PStruct
Dim CList As Integer

Private Sub Class_Initialize()
    CList = 0
End Sub

Public Sub Add(name As String, value As Double)
  If CList = 0 Then ReDim VList(CList) Else ReDim Preserve VList(CList)
  VList(CList).PName = name
  VList(CList).PValue = value
  CList = CList + 1
End Sub

Public Function max() As Variant
  Dim temp As Variant
  Dim maxpos As Integer
 
  maxpos = 0
 
  ReDim temp(1)
 
  If CList = 0 Then
    maxl = Empty
    Exit Function
  End If
 
  If UBound(VList) = 0 Then
    temp(0) = VList(0).PName
    temp(1) = VList(0).PValue
    max = temp
    Exit Function
  End If
 
  For i = 1 To UBound(VList)
    If VList(i).PValue > VList(maxpos).PValue Then maxpos = i
  Next i
  temp(0) = VList(maxpos).PName
  temp(1) = VList(maxpos).PValue
  max = temp
End Function
**************************************************************

Modul
**************************************************************
Sub main()
  Dim PList As New Parameterlist
  Dim MaxWert As Variant
 

  PList.Add "a", 2#
  PList.Add "b", 1.5
  PList.Add "c", 4
 
  MaxWert = PList.max
 
  If IsEmpty(MaxWert) Then
    MsgBox "Keine Werte", vbCritical, "Meldung"
  Else
    MsgBox "Parameter " & MaxWert(0) & " = " & MaxWert(1)
  End If
End Sub
**************************************************************

------------------
Grüße
Heinz

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

EIBe 3D
Mitglied
Dipl. - Ing. (FH)


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

Beiträge: 203
Registriert: 24.01.2020

HP Z4 G4 Workstation
Xeon 3,6 32GB
Nvidia P2000
WIN10
SW2015 SP5.0
SW2017
*************
Inv2018 akt.SP

erstellt am: 10. Mrz. 2021 09:06    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 Mikel_m 10 Unities + Antwort hilfreich

@Andreas:

Ok, hast mich überzeugt 

Code:

Option Explicit

Private Sub TestArray()

    Dim WerteListe() As Variant
    Dim NamensListe() As Variant
   
    Dim Index As Integer
    Dim MinWert As Variant
   
    'WerteListe = Array(5, 0, 1, 9)
    WerteListe = Array("Kuh", "Ente", "Held", "Nanopartikel")
    NamensListe = Array("d1", "d2", "d3", "d4")
   
    MinWert = jMin(Index, WerteListe)
   
    Debug.Print (NamensListe(Index))
    Debug.Print MinWert
   
End Sub


Function jMin(ByRef Index As Integer, Vals() As Variant) As Variant '(ParamArray Vals() As Variant)
   
    Dim i As Integer
    Dim low As Variant
   
    low = Vals(0)
   
    For i = LBound(Vals) To UBound(Vals)
        If Vals(i) < low Then
            low = Vals(i)
            Index = i
        End If
    Next i
   
    jMin = low
   
End Function



Grüße

EIBe 3D

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

EIBe 3D
Mitglied
Dipl. - Ing. (FH)


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

Beiträge: 203
Registriert: 24.01.2020

HP Z4 G4 Workstation
Xeon 3,6 32GB
Nvidia P2000
WIN10
SW2015 SP5.0
SW2017
*************
Inv2018 akt.SP

erstellt am: 10. Mrz. 2021 09:18    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 Mikel_m 10 Unities + Antwort hilfreich

@Heinz:

auch schön, allerdings suchte der TE den Min-Wert 

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

Mikel_m
Mitglied
Techniker


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

Beiträge: 21
Registriert: 12.12.2002

SolidWorks 2020 SP5.0

erstellt am: 10. Mrz. 2021 09:40    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

Hallo Leute,

vielen Dank für die schnelle Hilfe. Ich habe den ersten Ansatz von Andreas übernommen - funktioniert super 
... Wäre ich so nicht drauf gekommen.

Ich wünsche allen eine schöne Restwoche.

Gruß
Michael

------------------
Mikel_m

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

nahe
Ehrenmitglied



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

Beiträge: 1595
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2018 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 10. Mrz. 2021 09:48    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 Mikel_m 10 Unities + Antwort hilfreich

Sorry hab ich überlesen
mit der Vorlage sollte es kein Problem sein die Min Methode zu integrieren

------------------
Grüße
Heinz

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)2021 CAD.de | Impressum | Datenschutz