Kącik porad komputerowych
Moderatorzy: Tyrystor, Szeregowy_Równoległy
Moje pytanie dotyczy Visual Basic. Jak przypisać wartość zmiennej poza procedurą/funkcją?
Po deklaracji zmiennych, a przed jakimikolwiek funkcjami, procedurami wpisałem przykładowo A=5, ale uruchamiając program, VBA wywala błąd "Invalid outside procedure". Głowię się już nad tym kilka godzin i nie mogę nic wymyślić.
Po deklaracji zmiennych, a przed jakimikolwiek funkcjami, procedurami wpisałem przykładowo A=5, ale uruchamiając program, VBA wywala błąd "Invalid outside procedure". Głowię się już nad tym kilka godzin i nie mogę nic wymyślić.

M1 6 33 112 171 181 184 523 E-2 701
Z tego, co widzę w sieci, tosienieda. A po co Ci tak akurat? Weź albo stałą, albo wrzuć do modułu... http://stackoverflow.com/questions/6714 ... -procedure
ŁK
To niedobrze, że się nie da. Ogólnie potrzebuję mieć początkową wartość zmiennej n ustawioną jako 1 do poniższego programu:Łukasz pisze:Z tego, co widzę w sieci, tosienieda. A po co Ci tak akurat? Weź albo stałą, albo wrzuć do modułu... http://stackoverflow.com/questions/6714 ... -procedure
Kod: Zaznacz cały
Private n As Integer
Private i As Integer
Private Tablica() As Integer
Private liczba As Integer
n = 1
Private Sub CommandButton1_Click()
liczba = 0
Tablica(n) = 1
For i = n To 1 Step -1
liczba = (10 ^ (i - 1)) * Tablica(i) + liczba
Next i
Label1.Caption = liczba
n = n + 1
End Sub
Ogólnie powyższy program ma za zadanie wyświetlać w okienku label: 1, 11, 111, 1111 itp. w zależności od ilości kliknięć w guzik. Potrzebuję mieć zmienną n na zewnątrz procedury, ponieważ zamierzam jeszcze zamieścić 9 pozostałych procedur kliknięcia w guzik żeby mieć coś w postaci kalkulatora czyli klikam w guzik 1 oraz guzik 9 i wyświetla mi 19. Klikam dwa razy w guzik 1 i raz w guzik 8 i mi wyświetla 118.
M1 6 33 112 171 181 184 523 E-2 701
Udało się!
Wystarczyło n wrzucić w procedurę UserForm_Initialize().
Program działa tak jak chciałem. Kod poniżej.
Wystarczyło n wrzucić w procedurę UserForm_Initialize().
Program działa tak jak chciałem. Kod poniżej.
Kod: Zaznacz cały
Private n As Integer
Private i As Integer
Private Tablica() As Integer
Private liczba As Integer
Private Sub UserForm_Initialize()
n = 1
End Sub
Private Sub CommandButton1_Click()
liczba = 0
ReDim Preserve Tablica(n)
Tablica(n) = 1
For i = n To 1 Step -1
liczba = (10 ^ (i - 1)) * Tablica(n-i+1) + liczba
Next i
Label1.Caption = liczba
n = n + 1
End Sub
M1 6 33 112 171 181 184 523 E-2 701
- hafilip84
- Jego Gryząca Albumowość
- Posty: 7641
- Rejestracja: 14 gru 2005, 21:03
- Lokalizacja: Legionowo
Ło Panie, nie tędy droga... ZAWSZE powinna Ci się zapalić lampka awaryjna w momencie kiedy zaczynasz mówić, że potrzebujesz ileś procedur na zrobienie tego samego... Ja bym na Twoim miejscu postarał się zrobić tak (zaznaczam, że ostatnio siedzę raczej w C++, ale z VBA miałem trochę do czynienia... W Accessie zwłaszcza):Maciek pisze:Potrzebuję mieć zmienną n na zewnątrz procedury, ponieważ zamierzam jeszcze zamieścić 9 pozostałych procedur kliknięcia w guzik żeby mieć coś w postaci kalkulatora czyli klikam w guzik 1 oraz guzik 9 i wyświetla mi 19. Klikam dwa razy w guzik 1 i raz w guzik 8 i mi wyświetla 118.
Kod: Zaznacz cały
sub DopiszCyfre (intCyfra As Integer)
Dim intLiczba As Integer
''''''Tutaj trzeba wklepać pobranie już wpisanej liczby. Jeśli wciśnięto 1, 1, 8 to pobrane zostanie 118
intLiczba = intLiczba * 10 + intCyfra
'''''''Tutaj trzeba wklepać wysłanie nowej liczby do wyświetlenia
End Sub
Kod: Zaznacz cały
sub Przycisk0 () 'Procedura dla przycisku 0
DopiszCyfre(0)
End Sub

- kulikowski
- Posty: 897
- Rejestracja: 29 sie 2007, 9:39
- Lokalizacja: Rakowiec
Od jakiegoś czasu korystam z forum na Nokii 2710 przy użyciu Opery Mini. Problem mam taki, że jak kliknę w temat z nieprzeczytanymi postami, to otwiera mi się właściwa strona, ale nie zrzuca mi widoku do pierwszego nieprzeczytanego postu, tylko zostawia na górze. It's a bug or it's a feature? Na mariginesie dodam, że kliknięcie w tytuł tematu na stronie głównej bez problemów otwiera właściwą stronę z widokiem na właściwy post.
Niekoniecznie zgadzam się ze wszystkim, co napiszę. (C) Marshall McLuhan
"Na diamentach nic nie wyrośnie. Za to kwiaty świetnie rosną na gnoju." - Josefa Idem
"Na diamentach nic nie wyrośnie. Za to kwiaty świetnie rosną na gnoju." - Josefa Idem
- Daniel_FCB
- (kaczofob)
- Posty: 1603
- Rejestracja: 23 lut 2008, 20:54
- Lokalizacja: Natolin
Mam sobie tabelę aka bazę danych. Mam na jej podstawie stworzyć tekst z informacjami z tej bazy. Dla każdego rekordu ma być ten sam tekst, to samo formatowanie, tylko liczby się zmieniają (lub ich wręcz nie ma). Jak się to robiło, bo coś mi się kołacze w głowie, że coś takiego robiłem w gimnazjum, dwa office'y temu?
Wciąż się zastanawiał, jak nielogiczne może się stać logiczne rozumowanie, jeśli zajmuje się nim dostatecznie duży komitet - Pratchett, Świat finansjery
A mówili nauczyciele "z gminem nie zadajemy się nie z powodu ich niskiego urodzenia, ale dlatego, że nie ma po co" - Ziemiański, Achaja
FCBARCA.COM
A mówili nauczyciele "z gminem nie zadajemy się nie z powodu ich niskiego urodzenia, ale dlatego, że nie ma po co" - Ziemiański, Achaja
FCBARCA.COM
- Daniel_FCB
- (kaczofob)
- Posty: 1603
- Rejestracja: 23 lut 2008, 20:54
- Lokalizacja: Natolin
Dzięki. O to chodziło. Excela łyka, choć, nie powiem, obsługa wyboru zakresu danych jest tragiczna. Najprościej wydzielić taką tabelę do osobnego arkusza.hafilip84 pisze:W czym jest ta tabela? Access? Excel? Generalnie zacząłbym pracę od Worda i polecenia korespondencji seryjnej w nim... Powinien Ci wypluć w jakim formacie ma być tabela z danymi.
Wciąż się zastanawiał, jak nielogiczne może się stać logiczne rozumowanie, jeśli zajmuje się nim dostatecznie duży komitet - Pratchett, Świat finansjery
A mówili nauczyciele "z gminem nie zadajemy się nie z powodu ich niskiego urodzenia, ale dlatego, że nie ma po co" - Ziemiański, Achaja
FCBARCA.COM
A mówili nauczyciele "z gminem nie zadajemy się nie z powodu ich niskiego urodzenia, ale dlatego, że nie ma po co" - Ziemiański, Achaja
FCBARCA.COM
Zagadka matematyczno-komputerowa - komputerowa, bo z pewnością da się rozwiązać za pomocą komputera:
Mam zbiór kilkunastu liczb oraz dwie liczby (X i Y), które po dodaniu do siebie będą stanowić sumę tych kilkunastu. Chcę ustalić, które z tych kilkunastu składają się na X, a które na Y. Da się coś z tym zrobić?
Mam zbiór kilkunastu liczb oraz dwie liczby (X i Y), które po dodaniu do siebie będą stanowić sumę tych kilkunastu. Chcę ustalić, które z tych kilkunastu składają się na X, a które na Y. Da się coś z tym zrobić?
bury me in my favourite yellow patent leather shoes / and with a mummified cat / and a cone-like hat.