Arkadaslar merhaba,
Sheet1'den Sheet2'ye kopyalama islemi yapiyorum. Kopyalama sirasinda Sheet1'in ilk 37 satirini direkt kopyaliyorum.
39. satirdan itibaren ise, satir sayisini 4 arttirarak, 5 satirda 1 satiri kopyalatiyorum. Böylelikle ilk bölümdeki aciklama kismini kaybetmemis oluyorum ve ana verilerimin de sayisini azaltarak, grafik icin daha uygun veriler elde ediyorum. Ancak bunu yaparken ScreenUpdating sorunu yasiyorum. Nereye yazdiysam olmadi. Ve bütün kopyalama islemi sona erene kadar ekranda mouse sürekli mesgul gözüküyor ve uzun süre bekliyorum.
1) Sizce Application.ScreenUpdating=False/True kismini nereye eklemeliyim?
2) Myrange1 ve myrange2 yi tanimlarken belirli hücreler kullanmak istemiyorum.
myrange1=A1den baslayip SON kolona kadar
myrange2=A1den baslayip SON satira kadar --> seklinde ifade etmek istiyorum. Sanirim Row.Count, Column.Count xlEnd seklinde ifadeler kullanmam lazim. Buna hakim degilim.
3) Son olarak kodlarin sondan 6. satirinda Sheet2 yazarak, yine, belirli bir adres vermek istemiyorum. Belki ben bu makroyu uyguladigimda zaten dosyada 1 Sheet2 sayfasi olabilir. Bu Makroyu YENI bir Sheet'te calistir demenin yolu var midir?
Cok cok tesekkür ederim.
Iyi calismalar!
Sub Makro1()
'
' Makro1 Makro
'
Application.ScreenUpdating = False ‘????????????????
Dim h As Long 'kolonsayici
Dim i As Long 'satirsayici "Sheet1"
Dim j As Long 'satirsayici "Sheet2"
Dim kolonsay As Integer, Dim satirsay as Integer
Dim baslangicsatir As Integer, baslangickolon As Integer
Dim sonkolon As Integer, sonsatir As Integer
Dim durmasatiri As Integer
Dim baslangicsatir2 As Integer
Set myrange1 = Worksheets("Sheet1").Range("A1:BZ39")
Set myrange2 = Worksheets("Sheet1").Range("A1:A65000")
kolonsay = WorksheetFunction.CountA(myrange1)
satirsay = WorksheetFunction.CountA(myrange2)
baslangickolon = 1
baslangicsatir = 1
durmasatiri = 37
baslangicsatir2 = 39
sonsatir = baslangicsatir + satirsay - 1
sonkolon = baslangickolon + kolonsay - 1
' 1. satirdan 37.satira kadar tüm kolonlari Sheet1‘den Sheet2‘ye kopyalar
j = 1
For i = baslangicsatir To durmasatiri
For h = baslangickolon To sonkolon
Worksheets("Sheet2").Cells(j, h).Value = Worksheets("Sheet1").Cells(i, h).Value
Next h
j = j + 1
Next i
’39.satirdan sonuncu satira kadar tüm kolonlari Sheet1’den Sheet2’ye kopyalar
j = 39
For i = baslangicsatir2 To sonsatir
For h = baslangickolon To sonkolon
Worksheets("Sheet2").Cells(j, h).Value = Worksheets("Sheet1").Cells(i, h).Value
Next h
i = i + 4
j = j + 1
Next i
End Sub
Sheet1'den Sheet2'ye kopyalama islemi yapiyorum. Kopyalama sirasinda Sheet1'in ilk 37 satirini direkt kopyaliyorum.
39. satirdan itibaren ise, satir sayisini 4 arttirarak, 5 satirda 1 satiri kopyalatiyorum. Böylelikle ilk bölümdeki aciklama kismini kaybetmemis oluyorum ve ana verilerimin de sayisini azaltarak, grafik icin daha uygun veriler elde ediyorum. Ancak bunu yaparken ScreenUpdating sorunu yasiyorum. Nereye yazdiysam olmadi. Ve bütün kopyalama islemi sona erene kadar ekranda mouse sürekli mesgul gözüküyor ve uzun süre bekliyorum.
1) Sizce Application.ScreenUpdating=False/True kismini nereye eklemeliyim?
2) Myrange1 ve myrange2 yi tanimlarken belirli hücreler kullanmak istemiyorum.
myrange1=A1den baslayip SON kolona kadar
myrange2=A1den baslayip SON satira kadar --> seklinde ifade etmek istiyorum. Sanirim Row.Count, Column.Count xlEnd seklinde ifadeler kullanmam lazim. Buna hakim degilim.
3) Son olarak kodlarin sondan 6. satirinda Sheet2 yazarak, yine, belirli bir adres vermek istemiyorum. Belki ben bu makroyu uyguladigimda zaten dosyada 1 Sheet2 sayfasi olabilir. Bu Makroyu YENI bir Sheet'te calistir demenin yolu var midir?
Cok cok tesekkür ederim.
Iyi calismalar!
Sub Makro1()
'
' Makro1 Makro
'
Application.ScreenUpdating = False ‘????????????????
Dim h As Long 'kolonsayici
Dim i As Long 'satirsayici "Sheet1"
Dim j As Long 'satirsayici "Sheet2"
Dim kolonsay As Integer, Dim satirsay as Integer
Dim baslangicsatir As Integer, baslangickolon As Integer
Dim sonkolon As Integer, sonsatir As Integer
Dim durmasatiri As Integer
Dim baslangicsatir2 As Integer
Set myrange1 = Worksheets("Sheet1").Range("A1:BZ39")
Set myrange2 = Worksheets("Sheet1").Range("A1:A65000")
kolonsay = WorksheetFunction.CountA(myrange1)
satirsay = WorksheetFunction.CountA(myrange2)
baslangickolon = 1
baslangicsatir = 1
durmasatiri = 37
baslangicsatir2 = 39
sonsatir = baslangicsatir + satirsay - 1
sonkolon = baslangickolon + kolonsay - 1
' 1. satirdan 37.satira kadar tüm kolonlari Sheet1‘den Sheet2‘ye kopyalar
j = 1
For i = baslangicsatir To durmasatiri
For h = baslangickolon To sonkolon
Worksheets("Sheet2").Cells(j, h).Value = Worksheets("Sheet1").Cells(i, h).Value
Next h
j = j + 1
Next i
’39.satirdan sonuncu satira kadar tüm kolonlari Sheet1’den Sheet2’ye kopyalar
j = 39
For i = baslangicsatir2 To sonsatir
For h = baslangickolon To sonkolon
Worksheets("Sheet2").Cells(j, h).Value = Worksheets("Sheet1").Cells(i, h).Value
Next h
i = i + 4
j = j + 1
Next i
End Sub
