- Katılım
- 9 Ocak 2009
- Mesajlar
- 557
- Excel Vers. ve Dili
-
2002 TÜRKÇE
2007 TÜRKÇE
2010 TÜRKÇE
2019 TÜRKÇE
Private Sub CommandButton1_Click()
Dim Sh1 As Worksheet, Sh2 As Worksheet
Dim MyRng As Range
Dim Nrow As Long
Set Sh1 = Sheets("ANA")
Set Sh2 = Sheets("SONUÇ")
Sh2.Range("A2:N45").Clear
For Each MyRng In Sh1.Range("A1:N50")
If MyRng.Interior.ColorIndex = 6 Then
Nrow = Sh2.Range("A65536").End(xlUp).Row + 1
Sh1.Rows(MyRng.Row).Copy
Sh2.Range("A" & Nrow).PasteSpecial
End If
Next
Application.CutCopyMode = False
Range("A1").Select
Me.Hide
Sheets("SONUÇ").Select
Rows("2:45").Select
With Selection.Font
.Name = "Arial"
.Size = 7
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
[IV:IV].ClearContents
[IV1] = "=A1"
[IV1].AutoFill Destination:=Range("IV1:IV" & [A65536].End(3).Row), Type:=xlFillDefault
[IV:IV].Value = [IV:IV].Value
For X = [IV65536].End(3).Row To 1 Step -1
If WorksheetFunction.CountIf(Range("IV1:IV" & X), Cells(X, "IV")) > 1 Then Rows(X).Delete
Next
[IV:IV].ClearContents
ActiveWindow.SelectedSheets.PrintPreview
Sheets("ANA").Select
Me.Show
End Sub
bu kod ile önce sonuç sayfasını temizleyip ana sayfada a2:n45 aralığında sarı renkli hücre var ise onları bulup kopyalayıp sonuç sayfasına aktardıktan sonra a2:a sütununda birbirine benzer kayıtları silerek bir tanesini bırakıp 2 nci satırdan itibaren yazı puntunu 7 olarak yazdırıp sayfayı önizleme yaptırmaktadır.
kod çalışıyor fakat yaptığı işlem biraz zaman aldığı için uzun sürmekte.
bu kodları kısaltmanın yani bu işlemi yapmanın kısa yolu varmı..?
gerçekleşmesi istenen kod: (ilk olarak sonuç sayfasını 2 nci satırdan itibaren (1nci satır kalacak) temizledikten sonra ana sayfada a2:n45 aralığında sarı renkli hücre varsa sarı renkli olan satırı kopyalayıp sonuç sayfasına aktarıp aktarma yaparkende aynı satırda birden fazla sarı renkli hücre var ise sadece bir satır olarak alıp kopyaladıktan sonra aktarılan değerlerinde yazı karakterini 7 punt yapıp sayfayı önizleme yapmaktır.)
Dim Sh1 As Worksheet, Sh2 As Worksheet
Dim MyRng As Range
Dim Nrow As Long
Set Sh1 = Sheets("ANA")
Set Sh2 = Sheets("SONUÇ")
Sh2.Range("A2:N45").Clear
For Each MyRng In Sh1.Range("A1:N50")
If MyRng.Interior.ColorIndex = 6 Then
Nrow = Sh2.Range("A65536").End(xlUp).Row + 1
Sh1.Rows(MyRng.Row).Copy
Sh2.Range("A" & Nrow).PasteSpecial
End If
Next
Application.CutCopyMode = False
Range("A1").Select
Me.Hide
Sheets("SONUÇ").Select
Rows("2:45").Select
With Selection.Font
.Name = "Arial"
.Size = 7
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
[IV:IV].ClearContents
[IV1] = "=A1"
[IV1].AutoFill Destination:=Range("IV1:IV" & [A65536].End(3).Row), Type:=xlFillDefault
[IV:IV].Value = [IV:IV].Value
For X = [IV65536].End(3).Row To 1 Step -1
If WorksheetFunction.CountIf(Range("IV1:IV" & X), Cells(X, "IV")) > 1 Then Rows(X).Delete
Next
[IV:IV].ClearContents
ActiveWindow.SelectedSheets.PrintPreview
Sheets("ANA").Select
Me.Show
End Sub
bu kod ile önce sonuç sayfasını temizleyip ana sayfada a2:n45 aralığında sarı renkli hücre var ise onları bulup kopyalayıp sonuç sayfasına aktardıktan sonra a2:a sütununda birbirine benzer kayıtları silerek bir tanesini bırakıp 2 nci satırdan itibaren yazı puntunu 7 olarak yazdırıp sayfayı önizleme yaptırmaktadır.
kod çalışıyor fakat yaptığı işlem biraz zaman aldığı için uzun sürmekte.
bu kodları kısaltmanın yani bu işlemi yapmanın kısa yolu varmı..?
gerçekleşmesi istenen kod: (ilk olarak sonuç sayfasını 2 nci satırdan itibaren (1nci satır kalacak) temizledikten sonra ana sayfada a2:n45 aralığında sarı renkli hücre varsa sarı renkli olan satırı kopyalayıp sonuç sayfasına aktarıp aktarma yaparkende aynı satırda birden fazla sarı renkli hücre var ise sadece bir satır olarak alıp kopyaladıktan sonra aktarılan değerlerinde yazı karakterini 7 punt yapıp sayfayı önizleme yapmaktır.)
Ekli dosyalar
-
43 KB Görüntüleme: 41