Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Nichtdiskrete Zunahme einer Variablen
#1
Hallo liebe Experten,

ich habe eine Variable x und ein Feld vbFeld = (10, 12, 16, 20, 24, 30).  Der Wert der Variablen x ist derzeit 12. Da x nur Werte aus dem Feld vbFeld annehmen
darf, wäre der nächste Werte für x = 16 und der übernächste 20.

Meine Frage ist jetzt, wie berechne ich den nächsten Wert von x aufgrund der gegebenen Einschränkung?
Antworten Top
#2
Hallo,

Zitat:Meine Frage ist jetzt, wie berechne ich den nächsten Wert von x aufgrund der gegebenen Einschränkung?

ich kann in Deinem Posting keine Einschränkung entdecken und darum wahrscheinlich ... genausowenig wie Excel ... 
entscheiden, wann der nächste Sprung stattfinden wird. Wodurch soll der nächste Sprung angestoßen werden?

Es kann ja auch sein, daß ich was überlesen habe, aber ich kann wirklich nichts entdecken.

Zitat:Der Wert der Variablen x ist derzeit 12. Da x nur Werte aus dem Feld vbFeld annehmen
darf, wäre der nächste Werte für x = 16 und der übernächste 20.
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#3
Hallo Kapitän,
du hast Recht. Formulierungsfehler.

Für das Feld gilt vbFeld = Array (10, 12, 16, 20, 24, 30).

wenn x = 12  ist und x nur  Werte des Feldes vbFeld annehmen darf, wie berechne ich mittels VBA Code den nächsten Wert von x, also x = 16?
Antworten Top
#4
Moin Anne!
Absichtlich eher umständlich, da ja sicherlich mehr dahintersteckt:
Sub Anne()
Dim vbFeld, x As Byte, cnt As Byte
vbFeld = Array(10, 12, 16, 20, 24, 30)
x = 12
For cnt = 0 To 5
   If vbFeld(cnt) = x Then
      If cnt < 5 Then
         x = vbFeld(cnt + 1)
         Exit For
      Else
         MsgBox "Ende der Fahnenstange!"
      End If
   End If
Next
End Sub

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#5
Hallöchen,

ich würde es folgendermaßen machen:

Code:
Sub x_werte_in_Feldabhängigkeit()
'x darf nur Werte des Feldes vbFeld annehmen
Dim x As Integer
x = 12 'frei wählbar innerhalb der Werte von vbFeld
vbFeld = Array(10, 12, 16, 20, 24, 30)

For i = 0 To UBound(vbFeld)
'Nächsten x Wert berechnen:
If vbFeld(i) = x Then x = vbFeld(i + 1): Exit For
'Wenn x = 30, alles zurück auf Anfang
If x = vbFeld(UBound(vbFeld)) Then x = vbFeld(0): Exit For
Next i

Debug.Print "Nächster x-Wert: " & x

End Sub


Aber vielleicht gibt's ja noch eine Genielösung.
Antworten Top
#6
Alternative:

Code:
Sub x_werte_in_Feldabhängigkeit2()
Dim i, x
x = 12
vbFeld = Array(10, 12, 16, 20, 24, 30)

Do While Not vbFeld(i) = x
i = i + 1
Loop
Debug.Print vbFeld(i + 1)

End Sub
Antworten Top
#7
kleine Ergänzung:
Code:
Sub x_werte_in_Feldabhängigkeit3()
Dim i As Integer, x As Integer
x = 30 'beliebiger Wert für x innerhalb von vbFeld
vbFeld = Array(10, 12, 16, 20, 24, 30)

Do While Not vbFeld(i) = x: i = i + 1: Loop
i = IIf(i = UBound(vbFeld), 0, i + 1)
Debug.Print vbFeld(i)

End Sub
Antworten Top
#8
Code:
sub M_snb()
  sn = Array(10, 12, 16, 20, 24, 30)
  x=12

  y=sn(application.match(x,sn,0))
End Sub
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • Lago
Antworten Top
#9
Euch allen vielen Dank für eure Bemühungen und ein spezielles Dankeschön für die beste Lösung an snb.
Antworten Top
#10
als Bastler ergänz ich mal das Hin- und Herlaufen von Werten innerhalb der Feldgrenzen mittels von snb angegebener Formel.



Code:
Sub Hin_und_herlaufen_innerhalb_der_Feldgrenzen_Demo()
'5. Feldwert des Array beliebig, reine Programmiertechnik
vbs = Array(10, 12, 15, 19, 2000)
vbi = 12

'vbi läuft innerhalb der Feldgrenzen von 10 bis 19 hin und her
For i = 1 To 10
vbi = IIf(Application.Match(vbi, vbs) = _
UBound(vbs), 10, vbs(Application.Match(vbi, vbs)))
Debug.Print vbi
Next

End Sub
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste