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

  tytuł wątku:
Wątki dyskusji

Prośba o pomoc w prostej sprawie skierowana do fachowców


otwartyotwarty rozpoczął: Adam PPP postów: 10



napisał: Adam PPP
postów: 5


umieszczony:
2 marca 2007
15:54

  
nazwa pliku rozmiar
users_r.bmp 334 B

witaj Artik
dzięki za pomoc
poradziłem sobie z wyznaczeniem obszaru dzięki twoim wskazówkom
Sheets("DANE").Range(Sheets("DANE").Range(Cells(NrLos + 1, 1), Cells(NrLos + 1, 24)), Sheets("DANE").Range(Cells(NrLos + 1, 1), Cells(NrLos + 1, 24)).End(xlDown)).Copy


czyli wiem jak wyznaczyć dowolny obszar

jeśli chodzi o kropki
to wydaje się że przed Range trzeba określić dokładnie z jakiego arkusza jest ten obszar
ale niestety
nawet jeśli przed Range podaję adres arkusza
nawet jeśli wszystko dzieje się w instrukcji
With Sheets("PAMIĘĆ PODRĘCZNA")
.......
End With


wyskakują jakieś błędy
Run-time error '1004'
Application-defined or object-defined error
lub
Run-time error '1004'
Metoda AutoFill z klasy Range nie powiodła się

ale jak ustawię arkusz na aktywny
Sheets("PAMIĘĆ PODRĘCZNA").Select


przed wykonywaniem instrukcji na tym arkuszu to wszystkie problemy znikają

jesli dodaję do kodu makra jeszcze
Application.ScreenUpdating = False
Application.ScreenUpdating = True



to efekt jest zadowalający a co najważniejsze makro działa
( w tym makro to tylko kilka przeskoków między arkuszami )

Artik
pozostawiam to makro takie jakie jest ( działa poprawnie - lub raczej zgodnie z moimi oczekiwaniami )
kiedyś gdy moja wiedza o VBA się poszerzy
zapewne będę go udoskonalać

jeszcze raz dziękuję Ci za pomoc i życzę powodzenia
pozdrawiam
Adam PPP
napisał: Adam PPP
postów: 5


umieszczony:
1 marca 2007
14:24

  
Artik
witaj

tylko jak ?
w metodzie w PAMIĘCI PODRĘCZNEJ używamy do wyznaczenia początku obszaru do kopiowania
.Range(.Range("A5"), .Range("A5").Offset(IleWierszy1, IleKolumn1)).ClearContents


lub
.Range("A4:CH4").AutoFill Destination:=myRange, Type:=xlFillDefault


czyli początek obszaru który chcę zaznaczyć jest stały A5 lub A4 i znam go z góry
ale
jak wyznaczyć początek obszeru gdy jest on zależny od zmiennej
czyli
Range("A..." i teraz w zależności od wartości NrLos
może to być A1, A2, ....A3550 itd
jak rozwiązać ten problem to niestety nie wiem

pozdrawiam
Adam PPP
napisał: Adam PPP
postów: 5


umieszczony:
1 marca 2007
12:51

  
Artik
wielkie dzięki
dla mnie jako początkującego twoje porady są bezcenne
pozwalają zrozumieć zasady VBA
a najważniejsze że wyjaśniasz wszystko jasno i zrozumiale - extra !

Artik
mam jescze problem w jednym miejscu
' przejście do arkusza DANE ( chcę wczytać dane od komórki w kol A i wierszu = NrLos+1 do końca danych )
     Sheets("DANE").Cells(NrLos + 1, "A").CurrentRegion.Copy


gdy tak wykonuję makro wczytuje mi wszystkie dane od pierwszego wiersza do końca ( cały obszar )
a ja chciałbym od wiersza NrLos+1 do końca danych ( w tym arkuszu dane mają stałą szerokość 23 kolumn od A)
nie potrafię wyznaczyć komórki ( żeby makro widziało ją jako jako Range )
która jest zależna od zmiennej i pozwala określić obszar do kopiowania

jeśli jeszcze nie jesteś znudzony udzielaniem lekcji
to prosiłbym o pomoc

Artik
jescze raz wielkie dzięki za dotychczasową pracę dydaktyczną i pomoc
pozdrawiam
Adam PPP
napisał: Adam PPP
postów: 5


umieszczony:
27 lutego 2007
14:10

  
Artik
bardzo, bardzo dziękuję za odpowiedź
i proszę o kolejne uwagi
pozdrawiam
Adam PPP
napisał: Adam PPP
postów: 5


umieszczony:
27 lutego 2007
00:47

edytowany:
1 marca 2007
08:37

  
witam wszystkich
kieruję swoją prośbę do fachowców zajmujących się VBA
w sobotę rano postanowiłem napisać makro w VBA
po dwóch dniach nauki ( wcześniej VBA ani w ząb )
udało mi się stworzyć małego prostego potworka
zamieszczam go poniżej
jestem pewien że jest toporny i nie ociosany ale ....działa
proszę żebyści się z niego nie śmiali
gdy wykonuję to makro to migają mi poszcególne arkusze ( jest to nieprzyjemne )
i chciałbym to wyeliminować
poza tym zapewne fachowcy znający się na rzeczy potrafią ulepszyć to makro
uprościć
będę wdzięczny za pomoc i wskazówki jak to zrobić
zapewne przydadzą mi się one w dalszym zgłębianiu VBA
wszystkim którzy odpowiedzą na moją prośbę
serdecznie z góry dziękuję
pozdrawiam wszystkich Adam PPP
Sub MakroWczytajDane()
'
' MakroWczytajDane Makro
' Makro zarejestrowane 2000-00-00, autor początkujący
'
    Dim NrLos As Integer
    Dim IleWierszy As Long
    Dim myRange As Range
' w arkuszu GRA
    Sheets("GRA").Select
' wyznaczenie NrLos
' wyczyszczenie obszaru
    NrLos = Sheets("GRA").Range("B1").Value
    Range("B3:Y3").Select
    Range(Selection, Selection.End(xlDown)).ClearContents
' przejście do arkusza DANE ( chcę wczytać dane od komórki w kol A i wierszu = NrLos+1 do końca danych )
    Sheets("DANE").Select
    Rows(NrLos + 1).Select
    ActiveCell.Range("A1").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
' przejście do arkusza GRA
    Sheets("GRA").Select
    Range("B3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Range("B3").Select
' wyznaczenie IleWierszy ( na podstawie zliczania ile wierszy w kolumnie F od F3 w dół do kończa danych)
    Range("F3").Select
    Range(Selection, Selection.End(xlDown)).Select
    IleWierszy = Selection.Rows.Count
' wyczyszczenie obszaru - to jest obszar sąsiedni
    Range("Z4:AS4").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.ClearContents
' wklejenie w tylu samo wierszach
    Set myRange = Range("Z3:AS3")
    Set myRange = myRange.Offset(0, 0).Resize(myRange.Rows.Count + IleWierszy - 1, myRange.Columns.Count)
    Range("Z3:AS3").AutoFill Destination:=myRange, Type:=xlFillDefault
' wpisanie danej IleWierszy do komórki A2
   Cells(257).Value = IleWierszy
    Range("A2").Select
' w arkuszu PAMIĘĆ PODRĘCZNA
    Sheets("PAMIĘĆ PODRĘCZNA").Select
' wykasowanie obszaru
    Range("A5").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.ClearContents
' wklejenie o jeden wiersz więcej
    Range("A4:CH4").Select
    Set myRange = Range("A4:CH4")
    Set myRange = myRange.Offset(0, 0).Resize(myRange.Rows.Count + IleWierszy - 1, myRange.Columns.Count)
    Selection.AutoFill Destination:=myRange, Type:=xlFillDefault
    Range("A20").Select
' ostatnie wyświetlenie
    Sheets("ILOŚĆ ").Select
    Range("A1").Select
End Sub


jeszcze dziękuję za ewentualne podpowiedzi


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z