Koşullu süz yer değiştir ve yazdır

Katılım
19 Ağustos 2005
Mesajlar
201
Excel Vers. ve Dili
Excel 2003 Tr
UserForm1 açıldığında
TextBox1 içerisine Görevli ismini yazdığımda AA, AB, AC, AD sütunları taranıyor ve bulunan Görevlilerin isimleri yan yana her bulunduğu satır bir altta olmak üzere ListBox2 üzerinde sıralanıyor.

Ben ise sıralama yapıldıktan sonra ListBox2 üzerinde birinci sıraya A Hücresindeki satır numarası, 2. sıraya AA, 3. sıraya AB, 4. sıraya AC, 5. sıraya AD hücre bilgisi ve 6. B, 7. C, 8. D, ……………. Olmak üzere 26. Hücreye Z hücresinin bilgisinin gelmesini istiyorum.

Yani AA, AB, AC, AD hücre bilgileri sıralamada yer değiştirerek ListBox2 içerisinde 2. sıradan itibaren başlayacak ve sonra diğer hücreler devam edecek. Bu arada ListBox2 üzerinde A1’den AD1 e kadar olan hücrelerin isimleri yazacak. Bu arada UserForm dan çıkınca sayfa üzerindeki bilgiler süz işleminden önceki ilk hallerini koruyacak yani sayfada bir değişiklik olmayacak

Mümkünse bu arada UserForm1 çalıştığında aşağıdaki işlem yapılmadan önce TextBox1 içerisi boş olacağından ilk başta ListBox2’nin yukarıdaki sıralamaya göre dolması, ve TextBox1 içerisine isim yazdıkça döngünün başlaması, bu işlem çok kasacaksa gerekli değil çünkü veri miktarı çok fazla olacak

TextBox2 içerisine AA, AB, AC, AD hücrelerinde aratma yaptığımız isimden kaç adet çıktı ise o kadar sayının görünmesini gerekiyor. ( başka kodlarla başka formlarda yaptım ama ekte örneği bulunan kod'a uyarlayamadım :( )

Son olarak mümkünse Yazdır komutu
Eğer yazdır komutu verirsek ListBox2 içerisinde sıralanan listede süz yaptığımızda kalan verilere göre AA, AB, AC, AD hücrelerinden başlamak üzere B, E, I ve J hücrelerini seçerek yazdırma işlemi gerçekleşecek

Çok şey istiyorum ama benim için hayati önem arz ediyor. :(

Ustalarıma ve Hocalarıma saygılarımla
 
Son düzenleme:
Katılım
19 Ağustos 2005
Mesajlar
201
Excel Vers. ve Dili
Excel 2003 Tr
Macro ile tüm bilgileri aktar ve yaz işlemini hallettim ama bana süzden sonra kalan bilgilerin aktarılarak yazdırma işlemininde yapılması lazım

Ayrıca Seçmeli Tümünü yazdır işleminde
Kod:
Private Sub CommandButton1_Click()
    Sheets("Yazdır").Select
    Range("B2:I65500").Select
    Selection.ClearContents
    Sheets("Denetlemeler").Select
    Range("AA2:AD65500").Select
    Selection.Copy
    Sheets("Yazdır").Select
    Range("B2").Select
    ActiveSheet.Paste
    Sheets("Denetlemeler").Select
    Range("B2:B65500").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Yazdır").Select
    Range("F2").Select
    ActiveSheet.Paste
    Sheets("Denetlemeler").Select
    Range("E2:E65500").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Yazdır").Select
    Range("G2").Select
    ActiveSheet.Paste
    Sheets("Denetlemeler").Select
    Range("I2:J65500").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Yazdır").Select
    Range("H2").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
    Range("B2:I65500").Select
    Selection.ClearContents
    Sheets("Denetlemeler").Select
    End Sub
Bu kodları kısaltabilirmiyiz
 
Son düzenleme:
Katılım
19 Ağustos 2005
Mesajlar
201
Excel Vers. ve Dili
Excel 2003 Tr
Ustalarıma, Hocalarıma ve yardımcı olmaya çalışan arkadaşlara saygılarımla

122 izleme ve 22 yükleme yapılmış (son güncelleme 16.11.2007 saat:17.45), acaba bu arkadaşlardan birisinin bu konuda yardımı dokunabilecekmi, sorduğum soruların yapılabilirliği varmıdır, biraz fazla şey istedim artık kusura bakmayın.
 
Son düzenleme:
Katılım
19 Ağustos 2005
Mesajlar
201
Excel Vers. ve Dili
Excel 2003 Tr
Ustalarım, Hocalarım

Hiç cevap yok en azından mümkün olup olmadığı konusunda bilgi verirseniz olamayacaksa umudumu keseyim.

Saygılarımla :(
 
Son düzenleme:
Katılım
19 Ağustos 2005
Mesajlar
201
Excel Vers. ve Dili
Excel 2003 Tr
Güncelleme

NEDEN CEVAP GELMİYOR :(

En azından arkadaşım sen bu rüyadan vazgeç deyin







:D İkinci mesajımda bulunan reyting i cevap gelene kadar devamlı güncelleyeceğim :D
 
Son düzenleme:
Katılım
19 Ağustos 2005
Mesajlar
201
Excel Vers. ve Dili
Excel 2003 Tr
Arkadaşlar 1. mesajımdaki sorularım ile ilgili hazırlanacak macro nun kimsenin işine yaramayacağı ve bundan dolayı ne cevap verildiği nede macronun hazırlanması konusunda yardım edilmeyeceği kanısına kapıldım. Eğerki bir gün biri bir iyilik yapmak isterde zaman ayırma imkanı bulursa rica etsem bana özelden haber verebilirmi. Kardeşim sorununu çözdük diye. Benden hayır duası alır çözen arkadaş. 3. mesajımda reytingi takip ediyordum ama ondanda vaz geçtim. Yaw arkadaş en azından olmaz diye cevap yazın, valla cevap gelmiyor diye moralim bozuldu

Tüm Hocalarıma, Uzmanlara saygılarımla. Ben basit ve kolay macrolar ile yoluma devam edeyim bari :(
 
Katılım
21 Ağustos 2005
Mesajlar
625
Excel Vers. ve Dili
Office 365 - İngilizce
Bence sakin olmalısın mutlaka gözden kaçmıştır yoksa çok daha kısa süre içerisinde arkadaşlar sana yardım ederlerdi bundan şüphen olmasın. Arzu edersen dikkat çekmek için üstatlardan birine bu sayfanın adresi ile ilgili bir özel mesaj gönder faydası olur kanaatindeyim.

Umutsuzluğa kapılma ;)
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Merhabalar

Yazdıklarınızdan, problemin bir kısmını hallettiğinizi anlıyorum. Dosyanızın son halini ve son olarak ne istediğinizi ekler misiniz?
 
Katılım
19 Ağustos 2005
Mesajlar
201
Excel Vers. ve Dili
Excel 2003 Tr
Teşekkürler

Sayın FPC Hocam ilgi için teşekkürler. :) Umudumu kesmiştim Allah razı olsun. Birinci mesajımda güncellenmiş yazdır komutlu hali var

2. mesajımdaki kodlarla tümünü yazdır dediğimde aşağıda istediğim yer değişikliğini yaparak tüm kayıtları yazıcıdan çıktı alabiliyorum. Kodlar biraz uzun oldu ama işimi görüyor.

Ben UserForm konusunda sorun yaşıyorum
UserForm1 açıldığında
TextBox1 içerisine Görevli ismini yazdığımda AA, AB, AC, AD sütunları taranıyor ve bulunan Görevlilerin isimleri yan yana her bulunduğu satır bir altta olmak üzere ListBox2 üzerinde sıralanıyor.

Ben ise sıralama yapıldıktan sonra ListBox2 üzerinde birinci sıraya A Hücresindeki satır numarası, 2. sıraya AA, 3. sıraya AB, 4. sıraya AC, 5. sıraya AD hücre bilgisi ve 6. B, 7. C, 8. D, ……………. Olmak üzere 26. Hücreye Z hücresinin bilgisinin gelmesini istiyorum. sıralama Yazdır komutunda olduğu gibi başlayacak ve 26. hücreye kadar içerisine alacak.

Yani AA, AB, AC, AD hücre bilgileri sıralamada yer değiştirerek ListBox2 içerisinde 2. sıradan itibaren başlayacak ve sonra diğer hücreler devam edecek. Bu arada ListBox2 üzerinde (sıralama yapıldıktan sonraki son halinin) A1’den AD1 e kadar olan hücrelerin isimleri yazacak. (UserForm dan çıkınca sayfa üzerindeki bilgiler süz işleminden önceki ilk hallerini koruyacak yani sayfada bir değişiklik olmayacak)

TextBox2 içerisine AA, AB, AC, AD hücrelerinde aratma yaptığımız isimden kaç adet çıktı ise o kadar sayının görünmesi gerekiyor.

Yazdır komutu
Yazdır komutu verdiğimizde ListBox2 içerisinde sıralanan listede süz yaptığımızda kalan verilere göre AA, AB, AC, AD hücrelerinden başlamak üzere B, E, I ve J hücrelerini seçerek yazdırma işlemi gerçekleşecek
 
Son düzenleme:
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Şu an dosyanızda bulunan Textbox1'in Change olay kodunu aşağıdaki ile değiştiriniz.

Kod:
Private Sub TextBox1_Change()
Dim sh As Worksheet
Dim bul As Range, rg As Range
Dim y As Integer, satir As Integer, x As Integer
Dim i As Integer, j As Integer
Dim arrSatir()
Dim arrveri()
Dim adres As String
If Trim(TextBox1) = Empty Then: ListBox2.Clear: TextBox2 = Empty: Exit Sub
Set sh = Sheets("Denetlemeler")
Set rg = sh.Range("AA1:AD65536")
Set bul = rg.Find(What:=TextBox1, Lookat:=xlPart)
ListBox2.Clear
[COLOR=green]'ListBox2.ColumnWidths = "20;100;100;100;100;100;100;100;20;20;20;20;20;20;20;20;20;20;20;20;20;20;20;20;20;20;20;20;20"[/COLOR]
TextBox2 = Empty
ListBox2.ColumnCount = 30
If Not bul Is Nothing Then
   adres = bul.Address
   Do
      If bul.Row = satir Or bul.Row = 1 Then: GoTo f1
      satir = bul.Row
      ReDim Preserve arrSatir(x)
      arrSatir(x) = bul.Row
      x = x + 1
f1:
      Set bul = rg.FindNext(bul)
   Loop While Not bul Is Nothing And bul.Address <> adres
End If
ReDim Preserve arrveri(UBound(arrSatir), 1)
For i = 0 To UBound(arrSatir)
    arrveri(i, 1) = sh.Cells(arrSatir(i), 1)
Next i
ReDim Preserve arrveri(UBound(arrSatir), 5)
For i = 0 To UBound(arrSatir)
    For j = 2 To 5
        arrveri(i, j) = sh.Cells(arrSatir(i), j + 25)
    Next j
Next i
ReDim Preserve arrveri(UBound(arrSatir), 30)
For i = 0 To UBound(arrSatir)
    For j = 6 To 30
        arrveri(i, j) = sh.Cells(arrSatir(i), j - 4)
    Next j
Next i
ListBox2.List = arrveri
TextBox2 = ListBox2.ListCount
End Sub
 
Katılım
19 Ağustos 2005
Mesajlar
201
Excel Vers. ve Dili
Excel 2003 Tr
Say&#305;n FPC Hocam harikas&#305;n&#305;z Allah raz&#305; olsun

S&#252;z i&#351;lemi i&#231;in TextBox1 i&#231;erisine Listedeki isimleri yaz&#305;nca sorun yok ama olmayan bir ismi girdi&#287;imizde hata veriyor

S&#305;ralama tam istedi&#287;im gibi
Ancak ListBox2 i&#231;erisinde s&#305;ralama de&#287;i&#351;ti&#287;i i&#231;in s&#305;ralanan konular&#305;n ne oldu&#287;unu anlamak a&#231;&#305;s&#305;ndan S&#305;ra, G&#246;revli1, G&#246;revli2 ............ M, N, O, P yaz&#305;lar&#305;n&#305;n ba&#351;l&#305;k olarak 1. sat&#305;rda sabit kalarak g&#246;r&#252;nmesi laz&#305;mki yap&#305;lan i&#351;lemin ne oldu&#287;unu g&#246;relim

Son olarak yapt&#305;&#287;&#305;m&#305;z s&#305;ralamay&#305; nas&#305;l yazd&#305;rabiliriz
Yazd&#305;r komutu
Yazd&#305;r komutu verdi&#287;imizde ListBox2 i&#231;erisinde s&#305;ralanan listede s&#252;z yapt&#305;&#287;&#305;m&#305;zda g&#246;r&#252;nt&#252;lenen verilere g&#246;re AA, AB, AC, AD, B, E, I ve J h&#252;crelerini se&#231;erek yazd&#305;rma i&#351;lemi ger&#231;ekle&#351;ecek (I S&#252;tunu tarih s&#252;tunu oldu&#287;undan tarih s&#305;ras&#305;na g&#246;re s&#305;ralanmas&#305; laz&#305;m eski tarihten yeni tarihe do&#287;ru)

&#304;lgi alaka ve yard&#305;mlar&#305;n&#305;z i&#231;in tekrar Allah raz&#305; olsun
 
Son düzenleme:
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Peki, o zaman, mevcut projedeki tüm kodları silip yerine aşağıdakileri kopyalayınız.

Kod:
Option Explicit
Private Sub TextBox1_Change()
Dim sh As Worksheet
Dim bul As Range, rg As Range
Dim y As Integer, satir As Integer, x As Integer
Dim i As Integer, j As Integer
Dim arrSatir()
Dim arrveri()
Dim adres As String
If Trim(TextBox1) = Empty Then: ListBox2.Clear: TextBox2 = Empty: Exit Sub
Set sh = Sheets("Denetlemeler")
Set rg = sh.Range("AA1:AD65536")
Set bul = rg.Find(What:=TextBox1, Lookat:=xlPart)
ListBox2.Clear
'ListBox2.ColumnWidths = "20;100;100;100;100;100;100;100;20;20;20;20;20;20;20;20;20;20;20;20;20;20;20;20;20;20;20;20;20"
TextBox2 = Empty
ListBox2.ColumnCount = 31
If Not bul Is Nothing Then
   adres = bul.Address
   Do
      If bul.Row = satir Or bul.Row = 1 Then: GoTo f1
      satir = bul.Row
      ReDim Preserve arrSatir(x)
      arrSatir(x) = bul.Row
      x = x + 1
f1:
      Set bul = rg.FindNext(bul)
   Loop While Not bul Is Nothing And bul.Address <> adres
End If
On Error Resume Next
ReDim Preserve arrveri(UBound(arrSatir) + 1, 0)
arrveri(0, 0) = "Sıra No"
For i = 1 To UBound(arrSatir) + 1
    arrveri(i, 0) = sh.Cells(arrSatir(i - 1), 1)
Next i
ReDim Preserve arrveri(UBound(arrSatir) + 1, 4)
arrveri(0, 1) = "Görevli-1": arrveri(0, 2) = "Görevli-2"
arrveri(0, 3) = "Görevli-3": arrveri(0, 4) = "Görevli-4"
For i = 1 To UBound(arrSatir) + 1
    For j = 1 To 4
        arrveri(i, j) = sh.Cells(arrSatir(i - 1), j + 26)
    Next j
Next i
ReDim Preserve arrveri(UBound(arrSatir) + 1, 30)
For i = 1 To 25
    arrveri(0, i + 4) = sh.Cells(1, i + 1)
Next i
For i = 1 To UBound(arrSatir) + 1
    For j = 5 To 29
        arrveri(i, j) = sh.Cells(arrSatir(i - 1), j - 3)
    Next j
Next i
ListBox2.List = arrveri
ListBox2.ListIndex = 0
TextBox2 = ListBox2.ListCount
Set sh = Nothing
End Sub
Yazdırma işlemi için de aşağıdaki kodları kullanınız.

Kod:
Private Sub Yazdır_Click()
Dim shR As Worksheet
Dim i As Integer
Dim arrYazdir()
If ListBox2.ListCount = 0 Then: Exit Sub
Set shR = Sheets("Rapor")
shR.Cells.ClearContents
ReDim arrYazdir(ListBox2.ListCount, 8)
For i = 0 To ListBox2.ListCount - 1
    arrYazdir(i, 0) = ListBox2.List(i, 1)
    arrYazdir(i, 1) = ListBox2.List(i, 2)
    arrYazdir(i, 2) = ListBox2.List(i, 3)
    arrYazdir(i, 3) = ListBox2.List(i, 4)
    arrYazdir(i, 4) = ListBox2.List(i, 5)
    arrYazdir(i, 5) = ListBox2.List(i, 8)
    arrYazdir(i, 6) = ListBox2.List(i, 12)
    arrYazdir(i, 7) = ListBox2.List(i, 13)
Next i
shR.Range("A1").Resize(ListBox2.ListCount, 8) = arrYazdir
shR.Range("A1:H" & shR.Cells(65536, 1).Row).Sort Key1:=shR.Range("G2"), _
                                                 Order1:=xlAscending, _
                                                 Header:=xlGuess, _
                                                 OrderCustom:=1, _
                                                 MatchCase:=False, _
                                                 Orientation:=xlTopToBottom, _
                                                 DataOption1:=xlSortNormal
shR.Select
Unload Me
Set shR = Nothing
End Sub
 
Katılım
19 Ağustos 2005
Mesajlar
201
Excel Vers. ve Dili
Excel 2003 Tr
Hocam tekrar Allah razı olsun

Yazdır kodunun sonuna

ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

kodları ekledim ve yazdır işlemi tamamlandı

Her şey mükemmel ancak tek sorun kaldı ListBox2 içerisinde sütun başlığı 1. sıradan başladı ama sabit değil ve sayma işlemi bu satırda sayıldığı için 1 fazla çıkıyor. Başlık satırı ListBox2 içerisinde en üstte sabit yapma imkanımız varmı neticede veri çok olduğunda scroll ile aşağı yukarı kaydırma işlemi yaptığımızda başlık satırı en başta olduğu için yukarı çıktığından kayboluyor. scroll ile yukarı aşağı kaydırdığımızda başlık satırı sabit kalsa sadece süzme işleminden kalan verilerimizi kaydırsak
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
S&#252;tun ba&#351;l&#305;&#287;&#305;, &#351;u an kulland&#305;&#287;&#305;n&#305;z nesne (Listbox) nedeniyle sabit olmaz zaten ...

E&#287;er ListBox'a verileri RowSource &#246;zelli&#287;i ile ba&#287;layabilseydik -ki sizde filtreleme i&#351;lemi oldu&#287;u i&#231;in bu m&#252;mk&#252;n de&#287;il- extra sabit bir ba&#351;l&#305;k sat&#305;r&#305; ilave edilebilirdi.

E&#287;er Listbox yerine, Listview nesnesinin kullanm&#305;&#351; olsayd&#305;n&#305;z, dedi&#287;iniz gibi &#252;stte &#231;ok daha kullan&#305;&#351;l&#305; bir ba&#351;l&#305;k sat&#305;r&#305; g&#246;r&#252;lebilirdi.

Hatta Listview kullansayd&#305;n&#305;z, muhtemelen bu kadar array de&#287;i&#351;kenler tan&#305;malamak ve bunlar&#305; doldurmakla u&#287;ra&#351;mak gerekmezdi. (Listbox nesnesine Additem'le 10 s&#252;tuna kadar y&#252;kleme s&#305;n&#305;r&#305; var. Bunu a&#351;mak i&#231;in de array de&#287;i&#351;kenlere ihtiya&#231; vard&#305;)

Sonu&#231; olarak; eldeki malzeme ile yap&#305;labilecek en iyisini yapt&#305;k :) Daha ilerisi i&#231;in, Listeleme nesnenizi de&#287;i&#351;tirmek gerekiyor.

ancak tek sorun kald&#305; ListBox2 i&#231;erisinde s&#252;tun ba&#351;l&#305;&#287;&#305; 1. s&#305;radan ba&#351;lad&#305; ama sabit de&#287;il ve sayma i&#351;lemi bu sat&#305;rda say&#305;ld&#305;&#287;&#305; i&#231;in 1 fazla &#231;&#305;k&#305;yor.
Bu sorunu a&#351;mak i&#231;in, TextBox2 = ListBox2.ListCount sat&#305;r&#305;n&#305; TextBox2 = ListBox2.ListCount-1 olarak de&#287;i&#351;tirin
 
Katılım
19 Ağustos 2005
Mesajlar
201
Excel Vers. ve Dili
Excel 2003 Tr
Hocam Listbox ile Listview aras&#305;ndaki fark&#305; bilmiyordum bilseydim inan&#305;n o &#351;ekilde yapmaya &#231;al&#305;&#351;&#305;rd&#305;m. Neticede biz acemiler siz Uzman ve Hocalar&#305;m&#305;z sayesinde bir &#351;eyler &#246;&#287;renip yapmaya &#231;al&#305;&#351;&#305;yoruz. Her &#351;ey i&#231;in te&#351;ekk&#252;rler. Umar&#305;m yazd&#305;&#287;&#305;n&#305;z kodlar bir ba&#351;kas&#305;n&#305;n da i&#351;ine yarar. Sayg&#305;lar&#305;mla
 
Katılım
19 Ağustos 2005
Mesajlar
201
Excel Vers. ve Dili
Excel 2003 Tr
Uzman arkadaşlarım, Hocalarım ...... Sayın FPC bana bu konuda çok şey öğretti ve yardımcı oldu. Ben konu son buldu diye düşünüyordum ama kurcaladıkça insanın aklına daha başka şeyler geliyor. Birinci Mesajımın ekinde bulunan Deneme Süz Son.rar dosyasında ufak bir değişiklik yaptım ve süzme işlemine tarih formatı ekledim ama ne kodları ekliyeceğimi bilmiyorum.

Tarih aralığı işaretlenirse süz işlemini o tarih aralığında yapsın eğer tarih işaretlenmez ise tümü üzerinde sorgu yapsın. Mümkün olacağını biliyorum çünkü excel de hemen hemen mümkün olmayan bir şey yok gibi az. Şimdiden teşekkürler.
 
Katılım
19 Ağustos 2005
Mesajlar
201
Excel Vers. ve Dili
Excel 2003 Tr
Tarih aral&#305;&#287;&#305; i&#351;aretlendikten sonra isim yaz&#305;ld&#305;&#287;&#305;nda s&#252;z i&#351;lemini o tarih aral&#305;&#287;&#305;nda yaps&#305;n e&#287;er tarih i&#351;aretlenmez ise isim yaz&#305;ld&#305;&#287;&#305;nda t&#252;m&#252; &#252;zerinde sorgu yaps&#305;n.

M&#252;mk&#252;nm&#252; acaba
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
esenlikler sn noxious, dosyan&#305;n son halini ekleme &#351;ans&#305;n&#305;z var m&#305; acaba?

vbmenu_register("postmenu_217989", true);
 
Üst