Wartość minimalana VBA nie działa

0

Cześć, mój pierwszy temat wiec proszę o wyrozumiałość :) Jestem początkujący w VBA i zacząłem sobie pisać mały programik który ma wyświetlać minimalną liczbę z ciągu który ja zapodam, dodatkowo ja mam określić długość ciągu. Wszystko pięknie ładnie do momentu w którym mam policzyć min z ciagu liczb ... nie idzie mi to siedziałem na jakiś tutorialach i ksiażce ale nie wiem co napisałem źle ... może mi ktoś pomóc i oświecić ciemnego adepta VBA ?

 

Function MinTablicy(TabCiag As Variant) As Integer
    Dim WartMin As Integer
    Dim IndeksDolny As Long, IndeksGorny As Long, i As Long
    IndeksDolny = LBound(TabCiag)
    IndeksGorny = UBound(TabCiag)
    WartMin = TabCiag(IndeksDolny)
    For i = IndeksDolny To IndeksGorny
      If TabCiag(i) < WartMin Then WartMin = TabCiag(i)
    Next
    MinTablicy = WartMin
End Function


Sub CommandButton3_Click()
Dim ss As Long
Dim TabCiag() As Integer
Dim numerki As String ' wpisane numery
Dim i As Long

numerki = " "

ss = TextBox4.Text
If ss = 0 Then
    MsgBox ("Ciag ma zerowa dlugosc ")
ElseIf ss < 0 Then
    MsgBox ("Ciag nie moze byc ujemny")
Else
    For i = 1 To ss
        ReDim TabCiag(i)
        TabCiag(i) = InputBox("Podaj liczbe " & i, "Liczba")
        numerki = numerki + Str(TabCiag(i))
        
    Next i

MsgBox "Wpisanow numery : " & numerki, , "LICZBY"
MsgBox "Minimalana wartość z tablicy to: " & MinTablicy(TabCiag)
End If
    
End Sub


Z góry dziękuje za pomoc

0

Zamień ten kawałek:

    For i = 1 To ss
        ReDim TabCiag(i)
        TabCiag(i) = InputBox("Podaj liczbe " & i, "Liczba")
        numerki = numerki + Str(TabCiag(i))
 
    Next i

na:

    ReDim TabCiag(1 to ss)
    For i = 1 To ss
        TabCiag(i) = InputBox("Podaj liczbe " & i, "Liczba")
        numerki = numerki + Str(TabCiag(i))
 
    Next i

Jako bonus masz "ulepszoną" wersję twojej funkcji:

Function MinTablicy(TabCiag() As Integer) As Integer
    Dim i As Long
    
    MinTablicy = TabCiag(LBound(TabCiag))
    
    For i = LBound(TabCiag) + 1 To UBound(TabCiag)
      If TabCiag(i) < MinTablicy Then MinTablicy = TabCiag(i)
    Next
End Function
0

Wielkie dzięki za pomoc!! Siedziałem jeszcze nad kodem i kombinowałem coś i dostałem poradę od kolegi dzięki czemu udało mi się napisać taki kod jak poniżej który działa :)


Function MinTablicy(TabCiag As Variant) As Integer
    Dim WartMin As Integer
    Dim IndeksDolny As Long, IndeksGorny As Long, i As Long
    IndeksDolny = 1 'LBound(TabCiag)
    IndeksGorny = UBound(TabCiag)
    WartMin = TabCiag(IndeksDolny)
    For i = IndeksDolny To IndeksGorny
      If TabCiag(i) < WartMin Then WartMin = TabCiag(i)
    Next
    MinTablicy = WartMin
End Function


Sub CommandButton3_Click()
Dim ss As Long
Dim TabCiag() As Integer
Dim numerki As String ' wpisane numery
Dim i As Long

numerki = " "

ss = TextBox4.Text
If ss = 0 Then
    MsgBox ("Ciag ma zerowa dlugosc ")
ElseIf ss < 0 Then
    MsgBox ("Ciag nie moze byc ujemny")
Else
    ReDim TabCiag(ss)
    For i = 1 To ss
        
        TabCiag(i) = InputBox("Podaj liczbe " & i, "Liczba")
        numerki = numerki + Str(TabCiag(i))
        
    Next i
 
MsgBox "Wpisanow numery : " & numerki, , "LICZBY"
MsgBox "Minimalana wartość z tablicy to: " & MinTablicy(TabCiag)
End If

 

Jeszcze raz wielkie dzięki za pomoc !! na pewno mi się przyda rada z posta wyżej !!

1 użytkowników online, w tym zalogowanych: 0, gości: 1