vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest sobota, 11 maja 2024 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

Problem z makrem


otwartyotwarty rozpoczął: corvinus87 postów: 4



napisał: Trebor
postów: 1209


umieszczony:
30 marca 2012
17:39

  
To ja całkiem prosto:
Sub Procedura()

Dim iTab(1 To 3) As Integer

iTab(1) = InputBox("Podaj pierwsza; liczbe;")
iTab(2) = InputBox("Podaj druga; liczbe;")
iTab(3) = InputBox("Podaj trzecia; liczbe;")

Range("C2") = WorksheetFunction.Min(iTab)
Range("C3") = WorksheetFunction.Median(iTab)
Range("C4") = WorksheetFunction.Max(iTab)

End Sub

napisał: admin
postów: 613


umieszczony:
30 marca 2012
17:19

  
Ja wiem, to troche jakby strzelac z armaty do wroble.
Ale mozna takze poprzez sortowanie:

Sub Sort(ByRef iTab() As Integer)

Dim j As Integer
Dim i As Integer
Dim iDummy As Integer
    
For j = UBound(iTab) - 1 To LBound(iTab) Step -1
    For i = LBound(iTab) To j
        If iTab(i) > iTab(i + 1) Then
            vDummy = iTab(i)
            iTab(i) = iTab(i + 1)
            iTab(i + 1) = vDummy
        End If
    Next i
Next j

End Sub

Sub Procedura()

Dim iTab(1 To 3) As Integer
Dim w As Long: w = 2

iTab(1) = InputBox("Podaj pierwsza; liczbe;")
iTab(2) = InputBox("Podaj druga; liczbe;")
iTab(3) = InputBox("Podaj trzecia; liczbe;")

Sort iTab

For i = LBound(iTab) To UBound(iTab)
    Cells(w, 3).Value = iTab(i)
    w = w + 1
Next i

End Sub

napisał: Trebor
postów: 1209


umieszczony:
30 marca 2012
16:16

  
Może być np. tak:
Sub zadanie_7()
Dim a As Integer, b As Integer, c As Integer

a = InputBox("Podaj pierwszą liczbę")
b = InputBox("Podaj drugą liczbę")
c = InputBox("Podaj trzecią liczbę")

If a < b And a < c Then
    Range("C2") = a
        ElseIf a > b And a > c Then
            Range("C4") = a
                Else
                    Range("C3") = a
                        End If

If b < a And b < c Then
    Range("C2") = b
        ElseIf b > a And b > c Then
            Range("C4") = b
                Else
                    Range("C3") = b
                        End If

If c < a And c < b Then
    Range("C2") = c
        ElseIf c > a And c > a Then
            Range("C4") = c
                Else
                    Range("C3") = c
                        End If
End Sub



Jednak, aby to działało w przypadku wpisywania nie liczb, lub nie wpisywania, będziesz musiał jeszcze pokombinować.
napisał: corvinus87
postów: 1


umieszczony:
30 marca 2012
13:56

  
Witam wszystkich,
mam problem z makrem - mam zrobić makro które wczytuje 3 liczby za pomocą InputBox`u do komórek C2:C4 w kolejności rosnącej. Liczby tylko różne od siebie.

Napisałem coś takiego:

Sub zadanie_7()
Dim a As Integer
Dim b As Integer
Dim c As Integer
a = InputBox("Podaj pierwszą liczbę")
b = InputBox("Podaj drugą liczbę")
c = InputBox("Podaj trzecią liczbę")
If a < b And a < c Then
a = Range("C2")
Else
a = Range("C3")
Else
a = Range("C4")
End If
If b < a And b < c Then
b = Range("c2")
Else
b = Range("c3")
Else
b = Range("c4")
End If
If c < a And c < b Then
c = Range("c2")
Else
c = Range("c3")
Else
c = Range("c4")
End If
End Sub

Tylko, że mi wywala błąd "Else without If". Dziwię się troszkę, ponieważ pisałem już podobne makra i nie musiałem wpisywać "Else If". BTW nawet jak wpiszę to wywala błędy dotyczące "If... Then... Else...".

Będę wdzięczny za pomoc w rozwiązaniu problemu.
Pozdrawiam


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z