[VBA] Co dziesiąta liczba
-
- Użytkownik
- Posty: 114
- Rejestracja: 24 paź 2014, o 12:36
- Płeć: Kobieta
- Lokalizacja: Wrocław
- Podziękował: 7 razy
[VBA] Co dziesiąta liczba
Witam,
na wstępie zaznaczę, że zaczynam dopiero swoją przygodę z VBA.
Chcę napisać program, który za pomocą inputboxa będzie pytał użytkownika ile chce wygenerować dokumentów a następnie będzie wyświetlał informacje np. wygenerowano 1 dokument, 2 dokumenty itd.
Mam problem ze słowem "dokument" nie wydaje się trudne napisać, że jeżeli 1 to dokument, jeżeli 2,3,4 to dokumenty a w przeciwnym razie dokumentów, ale co z liczbami takimi jak 52,53,54,62,64.... tu pojawia się znów słowo 52 dokumenty, czy da się jakoś to w sposób iteracyjny zapisać?
na wstępie zaznaczę, że zaczynam dopiero swoją przygodę z VBA.
Chcę napisać program, który za pomocą inputboxa będzie pytał użytkownika ile chce wygenerować dokumentów a następnie będzie wyświetlał informacje np. wygenerowano 1 dokument, 2 dokumenty itd.
Mam problem ze słowem "dokument" nie wydaje się trudne napisać, że jeżeli 1 to dokument, jeżeli 2,3,4 to dokumenty a w przeciwnym razie dokumentów, ale co z liczbami takimi jak 52,53,54,62,64.... tu pojawia się znów słowo 52 dokumenty, czy da się jakoś to w sposób iteracyjny zapisać?
Ostatnio zmieniony 31 paź 2016, o 08:36 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
Powód: Poprawa wiadomości.
-
- Użytkownik
- Posty: 114
- Rejestracja: 24 paź 2014, o 12:36
- Płeć: Kobieta
- Lokalizacja: Wrocław
- Podziękował: 7 razy
[VBA] Co dziesiąta liczba
Co dokładnie muszę zrobić z tym begin case... end case? Czytam o tym w Internecie, ale nie bardzo wiem jak to zastosować, tak jak pisałam, dopiero w październiku zaczęłam vba proszę nie wymagać zbyt wiele na początku...
-
- Użytkownik
- Posty: 22210
- Rejestracja: 15 maja 2011, o 20:55
- Płeć: Mężczyzna
- Lokalizacja: Bydgoszcz
- Podziękował: 38 razy
- Pomógł: 3755 razy
[VBA] Co dziesiąta liczba
Sorry, ale nie nauczę Cię jak stosowac instrukcje warunkowe. To jest jedna z podstaw programowania i sama musisz to opanować
Zacznij może od czegoś prostszego, przykłądy znajdziesz w podręczniku lub w pomocy on-line
Zacznij może od czegoś prostszego, przykłądy znajdziesz w podręczniku lub w pomocy on-line
-
- Użytkownik
- Posty: 114
- Rejestracja: 24 paź 2014, o 12:36
- Płeć: Kobieta
- Lokalizacja: Wrocław
- Podziękował: 7 razy
[VBA] Co dziesiąta liczba
Wiem jak stosować instrukcje warunkowe. Nie wiem tylko jak zrobić, żeby stosowało się to co np 10 razy
bo jak robię case 52 to 54..... potem case 62 to 64.... to mija się z celem, dlatego pytam jak można to zrobić, żeby robiło się to sekwencyjnie.
bo jak robię case 52 to 54..... potem case 62 to 64.... to mija się z celem, dlatego pytam jak można to zrobić, żeby robiło się to sekwencyjnie.
-
- Użytkownik
- Posty: 114
- Rejestracja: 24 paź 2014, o 12:36
- Płeć: Kobieta
- Lokalizacja: Wrocław
- Podziękował: 7 razy
[VBA] Co dziesiąta liczba
Kod: Zaznacz cały
Sub Generowanie_dokumentow()
liczba = InputBox("Ile chcesz wygenerować dokumentów?", " Dokumenty ")
For liczba = 1 To 20
If liczba = 1 Then
MsgBox " Wygenerowano " & liczba & " dokument ", vbQuestion
ElseIf liczba = 2 Or 3 Or 4 Then
MsgBox " Wygenerowano " & liczba & " dokumenty ", vbQuestion
Else
MsgBox " Wygenerowano " & liczba & " dokumentów ", vbQuestion
End If
Next liczba
For liczba = 21 To n
If Left(liczba, 1) = 2 Or 3 Or 4 Then
MsgBox " Wygenerowano " & liczba & " dokumenty ", vbQuestion
Else
MsgBox " Wygenerowano " & liczba & " dokumentów ", vbQuestion
End If
Next liczba
End Sub
Co tutaj robię źle? Jak wpisuje nieważne jaką liczbę i tak robi się dla 1, 2,3, aż do 20
Ostatnio zmieniony 31 paź 2016, o 20:02 przez Afish, łącznie zmieniany 1 raz.
Powód: Stosuj tagi code.
Powód: Stosuj tagi code.
-
- Użytkownik
- Posty: 114
- Rejestracja: 24 paź 2014, o 12:36
- Płeć: Kobieta
- Lokalizacja: Wrocław
- Podziękował: 7 razy
[VBA] Co dziesiąta liczba
No dobrze zmieniłam, ale dalej coś nie działa
Kod: Zaznacz cały
Sub Generowanie_dokumentow()
Dim liczba
liczba = 0
liczba = InputBox("Ile chcesz wygenerować dokumentów?", " Dokumenty ")
Select Case liczba
Case liczba = 1:
MsgBox " Wygenerowano " & liczba & " dokument ", vbQuestion
Case liczba = 2 Or 3 Or 4:
MsgBox " Wygenerowano " & liczba & " dokumenty ", vbQuestion
Case liczba = 0 Or 5 Or 6 Or 7 Or 8 Or 9 Or 10 Or 11 Or 12 Or 13 Or 14 Or 15 Or 16 Or 17 Or 18 Or 19 Or 20:
MsgBox " Wygenerowano " & liczba & " dokumentów ", vbQuestion
Case Left(liczba, 1) = 2 Or 3 Or 4:
MsgBox " Wygenerowano " & liczba & " dokumenty ", vbQuestion
Case Else:
MsgBox " Wygenerowano " & liczba & " dokumentów ", vbQuestion
End Select
End Sub
-
- Użytkownik
- Posty: 22210
- Rejestracja: 15 maja 2011, o 20:55
- Płeć: Mężczyzna
- Lokalizacja: Bydgoszcz
- Podziękował: 38 razy
- Pomógł: 3755 razy
[VBA] Co dziesiąta liczba
Kod: Zaznacz cały
Sub Generowanie_dokumentow()
Dim liczba
liczba = 0
liczba = InputBox("Ile chcesz wygenerować dokumentów?", " Dokumenty ")
Select Case liczba
Case liczba = 1:
Debug.Print 1
MsgBox " Wygenerowano " & liczba & " dokument ", vbQuestion
Case liczba = 2 Or 3 Or 4:
Debug.Print "2,3,4"
MsgBox " Wygenerowano " & liczba & " dokumenty ", vbQuestion
Case liczba = 0 Or 5 Or 6 Or 7 Or 8 Or 9 Or 10 Or 11 Or 12 Or 13 Or 14 Or 15 Or 16 Or 17 Or 18 Or 19 Or 20:
Debug.Print "0,5-20"
MsgBox " Wygenerowano " & liczba & " dokumentów ", vbQuestion
Case Left(liczba, 1) = 2 Or 3 Or 4:
Debug.Print "konczy sie na 2,3,4"
MsgBox " Wygenerowano " & liczba & " dokumenty ", vbQuestion
Case Else:
Debug.Print "Cos innego"
MsgBox " Wygenerowano " & liczba & " dokumentów ", vbQuestion
End Select
End Sub
-
- Użytkownik
- Posty: 114
- Rejestracja: 24 paź 2014, o 12:36
- Płeć: Kobieta
- Lokalizacja: Wrocław
- Podziękował: 7 razy
[VBA] Co dziesiąta liczba
Nie działa jeszcze przy jednej linijce kodu, nie mogę nigdzie znaleźć jaka jest składnia case jeżeli nie zaczynam od liczby a od Left.
Kod: Zaznacz cały
Sub Generowanie_dokumentow()
Dim liczba
liczba = InputBox("Ile chcesz wygenerować dokumentów?", " Dokumenty ")
Select Case liczba
Case 1
MsgBox " Wygenerowano " & liczba & " dokument ", vbQuestion
Case 2, 3, 4
MsgBox " Wygenerowano " & liczba & " dokumenty ", vbQuestion
Case 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20
MsgBox " Wygenerowano " & liczba & " dokumentów ", vbQuestion
Case Left(liczba, 1) = 2 Or 3 Or 4
MsgBox " Wygenerowano " & liczba & " dokumenty ", vbQuestion
Case Else
MsgBox " Wygenerowano " & liczba & " dokumentów ", vbQuestion
End Select
End Sub
-
- Użytkownik
- Posty: 65
- Rejestracja: 4 mar 2014, o 00:32
- Płeć: Mężczyzna
- Lokalizacja: VBATools | Kraków | Poland | Europe | Earth | SolSystem | SomewareInSpace
- Podziękował: 1 raz
- Pomógł: 7 razy
[VBA] Co dziesiąta liczba
No to ja proponuje małą zmianę i zarazem naukę:
Kod: Zaznacz cały
Sub Generowanie_dokumentow()
Dim liczba As Variant
liczba = Application.InputBox("Ile chcesz wygenerować dokumentów?", " Dokumenty ", Type:=1)
If IsNumeric(liczba) Then _
MsgBox " Wygenerowano " & ile(CInt(liczba)), vbInformation, "Potwierdznie wydruku"
End Sub
Function ile(ByRef liczba%) As String
Select Case liczba
Case 1: ile = liczba & " dokument "
Case 2 To 4: ile = liczba & " dokumenty "
Case Is > 21
Select Case CInt(Right(liczba, 1))
Case 2 To 4: ile = liczba & " dokumenty "
Case Else: ile = liczba & " dokumentów "
End Select
Case 0, Is > 4
ile = liczba & " dokumentów "
End Select
End Function
Sub test()
Dim x%
For x = 0 To 54
Debug.Print ile(x) 'Ctrl+G
Next
End Sub