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

  tytuł wątku:
Wątki dyskusji

Komunikat błędu jak?


otwartyotwarty rozpoczął: doktor postów: 7



napisał: Stanislaw
postów: 109


umieszczony:
5 września 2005
13:04

  
Próbowałem usprawnić ostatnie makro,
- zrobiłem w każdym razie inaczej
i na tym zakończę.

Sub Pobieranie_danych_z_arkusza_4()

Const tytuł As String = "Pobieranie danych z arkusza"

Dim arkusz As Variant
Dim odpowiedź As Long

powtórz:
arkusz = ""

Do While arkusz = ""
    arkusz = Application.InputBox _
    ("Wpisz nr arkusza, z którego chcesz pobrać dane:", tytuł)
Loop

If arkusz = False Then
    MsgBox "Kliknąłeś przycisk 'Anuluj' lub 'X'" & vbNewLine _
    & "albo wcisnąłeś klawisz 'Esc'.", vbInformation
    Exit Sub
End If

If Czy_arkusz_istnieje(arkusz) = False Then
      odpowiedź = _
      MsgBox("Podany arkusz: '" & arkusz & "' nie istnieje!" & vbNewLine & _
             "Czy chcesz ponowić wprowadzanie?", vbInformation + vbYesNo, _
              tytuł)
      If odpowiedź = vbYes Then
          GoTo powtórz
      ElseIf odpowiedź = vbNo Then
          Exit Sub
      End If
End If

MsgBox Worksheets(arkusz).Range("A1").Value

End Sub

Function Czy_arkusz_istnieje(arkusz) As Boolean

Dim ark As Worksheet

Czy_arkusz_istnieje = False

For Each ark In Worksheets
     If ark.Name = arkusz Then
         Czy_arkusz_istnieje = True
         Exit Function
     End If
Next ark

End Function


--
Stanislaw
napisał: Stanislaw
postów: 109


umieszczony:
4 września 2005
09:09

  
Witam,

Cieszę się, że natrafiłem na osobę, która chce się uczyć
bo największą męką jest uczyć kogoś, kto nie ma na to ochoty.

Zaglądnij do mojego posta z 02.09.2005 23:58:58
w wątku "formuly w excelu a formuly w vba".

Trudno mi tutaj przekazywać usystematyzowaną wiedzę,
- łatwiej podsyłać krótkie porady
i wskazywać źródła skąd można czerpać wiadomości.

--
Stanislaw
napisał: doktor
postów: 40


umieszczony:
3 września 2005
13:42

  
witam

Stanislaw teraz chciałem odbiec trochę od tematu. Sluchaj ja dopiero się uczę VBA i bardzo to co piszesz mi pomaga. chcialem ci bardzo, ale to BARDZO PODZIĘKOWAĆ!!!

DZIĘKUJĘ za pomoc

Pozdrawiam serdecznie

P.S.
Mam nadzieję że dlaej będziesz mi tak pomagal jak teraz
napisał: Stanislaw
postów: 109


umieszczony:
3 września 2005
13:06

  
Witaj,

Myślę o dalszym zoptymalizowaniu kodu
a także o automatycznie aktualizowanym wykresie,
ale to dopiero raczej wieczorem

Natomiast, aby zaradzić najpilniejszym potrzebom:
Sub Pobieranie_danych_z_arkusza_3()

Dim arkusz

Dim odpowiedź As Long

Const tytuł As String = "Pobieranie danych z arkusza"

On Error GoTo koniec:

powtórz:
arkusz = InputBox("Wpisz nr arkusza, z którego chcesz pobrać dane", tytuł)
                                      
If Czy_arkusz_istnieje(arkusz) = False Then
     odpowiedź = MsgBox("Podany arkusz nie istnieje w aktywnym skoroszycie!" & vbNewLine & _
                        "Czy chcesz ponowić wprowadzanie?", vbInformation + vbYesNo, _
                        tytuł)
     If odpowiedź = vbYes Then
         GoTo powtórz
     ElseIf odpowiedź = vbNo Then
         Exit Sub
     End If
End If
                  
If arkusz > 52 Then
     odpowiedź = MsgBox("Podałeś niepoprawny numer tygodnia: " & arkusz & vbNewLine & _
                        "Czy chcesz ponowić wprowadzanie?", vbExclamation + vbYesNo, _
                        tytuł)
     If odpowiedź = vbYes Then
         GoTo powtórz
     ElseIf odpowiedź = vbNo Then
         Exit Sub
     End If
End If

MsgBox Worksheets(arkusz).Range("A1").Value

koniec:
End Sub

Function Czy_arkusz_istnieje(arkusz) As Boolean

Dim ark As Worksheet

Czy_arkusz_istnieje = False

For Each ark In Worksheets
    If ark.Name = arkusz Then
        Czy_arkusz_istnieje = True
        Exit Function
    End If
Next ark

End Function


--
Pozdrawiam
Stanislaw
napisał: doktor
postów: 40


umieszczony:
3 września 2005
11:43

  
wszystko super działa mi ale jedna uwaga. Załóżmy że arkusze powinny byc od 1 do 52 ale są one tam dokładane raz na tydzień i teraz załóżmy że mamy 36 tydzien a ktoś chce dodać tydzien 40 któregatam nie ma ale mieści się w przedziale do 52. Jak zapisać taki warunek zamiast
if arkusz > 52 then

pozdrawiam
napisał: Stanislaw
postów: 109


umieszczony:
3 września 2005
08:18

  
Witam,
zgodnie z tym co piszesz:
Sub Pobieranie_danych_z_arkusza()

Dim arkusz As Variant

On Error GoTo koniec:

arkusz = InputBox("Wpisz nr arkusza, z którego chcesz pobrać dane", _
                  "Pobieranie danych z arkusza")
                  
                 
If arkusz > 52 Then
    MsgBox "Sprawdź numer tygodnia", vbInformation, "Pobieranie danych z arkusza"
Else
    MsgBox Worksheets(arkusz).Range("A1").Value
End If

koniec:
End Sub



Natomiast, gdybyś chciał kod trochę urozmaicić:
Sub Pobieranie_danych_z_arkusza_2()

Dim arkusz As Variant
Dim odpowiedź

On Error GoTo koniec:

powtórz:
arkusz = InputBox("Wpisz nr arkusza, z którego chcesz pobrać dane", _
                  "Pobieranie danych z arkusza")
                  
                 
If arkusz > 52 Then
    odpowiedź = MsgBox("Podałeś niepoprawny numer tygodnia: " & arkusz & vbNewLine & _
                       "Czy chcesz ponowić wprowadzanie?", vbExclamation + vbYesNo, _
                       "Pobieranie danych z arkusza")
    If odpowiedź = vbYes Then
        GoTo powtórz
    ElseIf odpowiedź = vbNo Then
        Exit Sub
    End If
Else
    MsgBox Worksheets(arkusz).Range("A1").Value
End If

koniec:
End Sub



--
Stanislaw
napisał: doktor
postów: 40


umieszczony:
3 września 2005
00:33

  
Witam
jest takie ćwiczenie
Pojawia mi się okienko dzie wpisuje nr tygodnia np 38. procedura szuka potem w innym pliku arkusza o numerze 38 a jest ivh tam ok 52 (to juz umię zrobic). Teraz chodzi o to że jak gościu wpisze np 83 (bo się piomylił) to chcę żeby pjawił mu się komunikat "sprawdź numer tygodnia" a jeśli wpisze dobrze to chcę żeby procedura dalej była wykonywana.
Chciałbym (jeśli to możliwe) zrobic taki myk za pomoca If then else


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z