Strona 1 z 1
[VBA] Co dziesiąta liczba
: 31 paź 2016, o 08:17
autor: Mycha1309
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ć?
VBA - co dziesiąta liczba
: 31 paź 2016, o 08:37
autor: a4karo
Musisz po prostu napisać trochę begin case... end case
Ale najpierw sprawdź kiedy używasz której formy rzeczownika
[VBA] Co dziesiąta liczba
: 31 paź 2016, o 08:49
autor: Mycha1309
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...
[VBA] Co dziesiąta liczba
: 31 paź 2016, o 09:30
autor: a4karo
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
[VBA] Co dziesiąta liczba
: 31 paź 2016, o 09:43
autor: Mycha1309
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.
[VBA] Co dziesiąta liczba
: 31 paź 2016, o 09:54
autor: a4karo
Sprawdzaj ostatnia cyfrę. Zakres 1-20 zrób osobno,
[VBA] Co dziesiąta liczba
: 31 paź 2016, o 10:19
autor: Mycha1309
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
[VBA] Co dziesiąta liczba
: 31 paź 2016, o 14:43
autor: a4karo
Zastanów się po co ci pętle for
[VBA] Co dziesiąta liczba
: 1 lis 2016, o 20:02
autor: Mycha1309
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
[VBA] Co dziesiąta liczba
: 1 lis 2016, o 21:32
autor: a4karo
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
Przyjrzyj się syntaksowi komendy Begin Case
[VBA] Co dziesiąta liczba
: 2 lis 2016, o 21:27
autor: Mycha1309
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
[VBA] Co dziesiąta liczba
: 2 lis 2016, o 22:30
autor: OShon
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