Metin Kutusu ile filtreleme

Cevapla
nadir
Mesajlar: 28
Kayıt: 14 Eyl 2020, 13:09
İşletim Sisteminiz: Windows 10
LibreOffice Sürümü: 7

Metin Kutusu ile filtreleme

Mesaj gönderen nadir »

Sayfa üzerine eklediğim metin kutusu ile B6:C510 arasını makro ile filtrelemek istiyorum. Metin kutusuna örneğin Ali yazdığımda ALİ ile başlayanları listelesin.

Resim
Kullanıcı avatarı
Hamurcu
Mesajlar: 265
Kayıt: 06 Ağu 2012, 00:14
İşletim Sisteminiz: Windows 10/11 - Pardus Linux
LibreOffice Sürümü: 7.x

Re: Metin Kutusu ile filtreleme

Mesaj gönderen Hamurcu »

Merhaba,

Bu isteğini hiç makro yazmadan Standart Süzgeç ile halledebilirsin.
suzgec
suzgec
standard suzgec.png (28.78 KiB) 4072 kere görüntülendi
nadir
Mesajlar: 28
Kayıt: 14 Eyl 2020, 13:09
İşletim Sisteminiz: Windows 10
LibreOffice Sürümü: 7

Re: Metin Kutusu ile filtreleme

Mesaj gönderen nadir »

Onu denedim aslında.. Ama daha pratik olması bakımından makro ile istemiştim.
Kullanıcı avatarı
Hamurcu
Mesajlar: 265
Kayıt: 06 Ağu 2012, 00:14
İşletim Sisteminiz: Windows 10/11 - Pardus Linux
LibreOffice Sürümü: 7.x

Re: Metin Kutusu ile filtreleme

Mesaj gönderen Hamurcu »

Sanırım aşağıdaki kod işini görür.

Kod: Tümünü seç

sub Filtrele()

dim Sayfa as object, FiltreMetni as object

dim FiltrelenecekBolge as object, FiltreParametreleri as object
dim FiltrelenecekSutun(0) As New com.sun.star.sheet.TableFilterField   

Sayfa = thiscomponent.sheets.getByName("Çizelge1")
FiltreMetni = Sayfa.drawPage.Forms.getByName("Form").getByName("Metin Kutusu 1")

FiltrelenecekBolge = Sayfa.getCellRangeByName("a5:c150")
FiltreParametreleri = FiltrelenecekBolge.createFilterDescriptor(true)
FiltrelenecekBolge.filter(FiltreParametreleri) 

with FiltrelenecekSutun(0)		' (0) ilk filtre parametrelerini tanimlar. Ikincisi icin (1) ve devam etmelidir.
    .Field = 1                  ' B Sutununa gore filtrelemesi icin 1 giriliyor (0-->A sutunu demek)
    .IsNumeric = false          ' Metne gore filtrelemek icin False giriliyor. Sayisal filtreleme icin True girilmeli
    .Operator = com.sun.star.sheet.FilterOperator.EQUAL
    .StringValue = ".*" & FiltreMetni.text & ".*"
end with

with FiltreParametreleri                                    
    .ContainsHeader = true                      
    .UseRegularExpressions = true
    .setFilterFields(FiltrelenecekSutun())    
end with

FiltrelenecekBolge.filter(FiltreParametreleri)

end sub
nadir
Mesajlar: 28
Kayıt: 14 Eyl 2020, 13:09
İşletim Sisteminiz: Windows 10
LibreOffice Sürümü: 7

Re: Metin Kutusu ile filtreleme

Mesaj gönderen nadir »

FiltreMetni = Sayfa.drawPage.Forms.getByName("Form").getByName("Metin Kutusu 1")
...satırında
BASIC çalışma zamanı hatası "1" alıyorum.
Kullanıcı avatarı
Hamurcu
Mesajlar: 265
Kayıt: 06 Ağu 2012, 00:14
İşletim Sisteminiz: Windows 10/11 - Pardus Linux
LibreOffice Sürümü: 7.x

Re: Metin Kutusu ile filtreleme

Mesaj gönderen Hamurcu »

Sayfaya koyduğun Metin Kutusunun adı farklıdır sende ondan hata alıyorsundur.

Ben standart bir metin kutusu koydum ve adı otomatik olarak "Metin Kutusu 1"

Sen bu ismi kendine göre uygun şekilde değiştirmelisin.
nadir
Mesajlar: 28
Kayıt: 14 Eyl 2020, 13:09
İşletim Sisteminiz: Windows 10
LibreOffice Sürümü: 7

Re: Metin Kutusu ile filtreleme

Mesaj gönderen nadir »

Sayın Hamurcu, Change olayına yazabilir miyiz. Google tarzı, ararken (yazarken) listelesin.
Kullanıcı avatarı
Hamurcu
Mesajlar: 265
Kayıt: 06 Ağu 2012, 00:14
İşletim Sisteminiz: Windows 10/11 - Pardus Linux
LibreOffice Sürümü: 7.x

Re: Metin Kutusu ile filtreleme

Mesaj gönderen Hamurcu »

Sayfadaki veriler az olduğunda sorun olmaz ama binlerce satır veri olursa her harfe bastığında yeniden hesaplayacağı için takılmalar oluşacaktır.
Cevapla