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 |