Metin Kutusu ile filtreleme

Metin Kutusu ile filtreleme

#2697 İleti | nadir | 04 Kas 2020, 12:01

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
nadir
 
İleti: 13
Kayıt: 14 Eyl 2020, 13:09
İşletim Sisteminiz: Windows 10
LibreOffice Sürümü: 7

Re: Metin Kutusu ile filtreleme

#2698 İleti | Hamurcu | 06 Kas 2020, 09:20

Merhaba,

Bu isteğini hiç makro yazmadan Standart Süzgeç ile halledebilirsin.

standard suzgec.png
suzgec
standard suzgec.png (28.78 KiB) 297 defa görüntülendi
Kullanıcı avatarı
Hamurcu
 
İleti: 213
Kayıt: 06 Ağu 2012, 00:14
Konum: İstanbul
İşletim Sisteminiz: Windows 10
LibreOffice Sürümü: 6.x

Re: Metin Kutusu ile filtreleme

#2699 İleti | nadir | 06 Kas 2020, 09:42

Onu denedim aslında.. Ama daha pratik olması bakımından makro ile istemiştim.
nadir
 
İleti: 13
Kayıt: 14 Eyl 2020, 13:09
İşletim Sisteminiz: Windows 10
LibreOffice Sürümü: 7

Re: Metin Kutusu ile filtreleme

#2700 İleti | Hamurcu | 06 Kas 2020, 10:28

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
Kullanıcı avatarı
Hamurcu
 
İleti: 213
Kayıt: 06 Ağu 2012, 00:14
Konum: İstanbul
İşletim Sisteminiz: Windows 10
LibreOffice Sürümü: 6.x

Re: Metin Kutusu ile filtreleme

#2701 İleti | nadir | 06 Kas 2020, 11:34

FiltreMetni = Sayfa.drawPage.Forms.getByName("Form").getByName("Metin Kutusu 1")
...satırında
BASIC çalışma zamanı hatası "1" alıyorum.
nadir
 
İleti: 13
Kayıt: 14 Eyl 2020, 13:09
İşletim Sisteminiz: Windows 10
LibreOffice Sürümü: 7

Re: Metin Kutusu ile filtreleme

#2702 İleti | Hamurcu | 06 Kas 2020, 16:47

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.
Kullanıcı avatarı
Hamurcu
 
İleti: 213
Kayıt: 06 Ağu 2012, 00:14
Konum: İstanbul
İşletim Sisteminiz: Windows 10
LibreOffice Sürümü: 6.x

Re: Metin Kutusu ile filtreleme

#2704 İleti | nadir | 09 Kas 2020, 09:04

Sayın Hamurcu, Change olayına yazabilir miyiz. Google tarzı, ararken (yazarken) listelesin.
nadir
 
İleti: 13
Kayıt: 14 Eyl 2020, 13:09
İşletim Sisteminiz: Windows 10
LibreOffice Sürümü: 7

Re: Metin Kutusu ile filtreleme

#2706 İleti | Hamurcu | 10 Kas 2020, 15:45

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.
Kullanıcı avatarı
Hamurcu
 
İleti: 213
Kayıt: 06 Ağu 2012, 00:14
Konum: İstanbul
İşletim Sisteminiz: Windows 10
LibreOffice Sürümü: 6.x


Calc - Hesap Tablosu

Kimler çevrimiçi

Kayıtlı kullanıcılar: Kayıtlı kullanıcı yok

cron