Bu eğitimde, makro kullanılarak LibreOffice Calc’teki hücrelerden veya aralıklardan içeriklerin nasıl silineceği açıklanmaktadır.
Makro kullanarak, bir hücrede veya bir hücre aralığında bulunan her şeyi temizleyebilirsiniz. Bu eğitimde, bir aralıktaki her tür içeriği temizleyeceğiz. Aralıklardaki içerikleri temizlemeden önce makronun, hücre içeriğinin türünü belirlemesi gerekir. Çünkü hücrelerdeki her şeyi silmek istiyorsanız değeri, biçimlendirme stillerini vb. dikkate almanız gerekir.
Bazı örnekler kullanarak buna bir göz atalım.
Not: Bu eğitimde bir makronun nasıl oluşturulacağını ve çalıştırılacağını bildiğiniz varsayılmaktadır. Yeniyseniz, önce bu eğiticiye göz atabilir ve bu sayfaya dönebilirsinizhttps://www.debugpoint.com/writing-a-macro-in-libreoffice-calc-getting-started/.
Makro kullanarak LibreOffice’deki hücre ve aralık içeriğini silme
Aralığın içeriğini temizleyecek bir prosedür tanımlayalım.
Sub ClearRangeContents()
End Sub
Sayfa1’deki aralığı ele alalım. getCellRangeByName işlevi, bağımsız değişken aracılığıyla iletilen aralığa karşılık gelen bir aralık nesnesini döndürür.
Dim oDoc As Object
Dim oSheet As Object
Dim oCell As Object
Dim oRange As Object
oDoc = ThisComponent
oSheet = oDoc.Sheets(0) ‘ Refers to Sheet1 as in 0, 1, 2 etc
oRange = oSheet.getCellRangeByName(“A3:B10”)

Aralığın içeriğini temizlemek için clearContents(flags) aralık işlevi kullanılabilir. Bayraklar, bir hücrede bulunabilecek değer türlerinden başka bir şey değildir. Dize, sayısal değerler, formüller, stiller vb. olabilir. Bu aralıktan hangi türleri temizlemek istediğinizi belirtebilirsiniz. clearContents argüman bayrakları uzun veri türündedir ve girdi olarak birden fazla bayrak alabilir.
Parametreler, com.sun.star.sheet’in bir parçası olan OpenOffice/LibreOffice sabit grubu CellFlags’da listelenir.
com.sun.star.sheet.CellFlags altındaki parametrelerin Listesi
parametre adı | Tanım | flag numeric value |
---|---|---|
VALUE | tarih veya saat olarak biçimlendirilmeyen sabit sayısal değerleri seçer. | 1 |
DATETIME | tarih veya saat sayı biçimine sahip sabit sayısal değerleri seçer. | 2 |
STRING | sabit dizeleri seçer. | 4 |
ANNOTATION | hücre açıklamalarını seçer. | 8 |
FORMULA | formülleri seçer. | 16 |
HARDATTR | tüm açık biçimlendirmeyi seçer ancak stil sayfaları aracılığıyla örtülü olarak uygulanan biçimlendirmeyi seçmez. | 32 |
STYLES | hücre stillerini seçer. | 64 |
OBJECTS | Çizim nesnelerini seçer. | 128 |
EDITATTR | hücre içeriğinin bazı bölümleri içindeki biçimlendirmeyi seçer. | 256 |
FORMATTED | Hücre içindeki biçimlendirmeye sahip hücreleri veya hücre içinde birden fazla paragraf bulunan hücreleri seçer. | 512 |
Tüm bu sabitleri bir değişkenin altına koyun ve bunu clearContents işlevine aktarın. Böylece etkili bir şekilde her şey temizlenir. Ayrıca hücrelerden veya aralıklardan belirli bir şeyin silinmesini istiyorsanız yukarıdaki değerleri kullanarak bayraklarınızı özelleştirebilirsiniz.
Dim oFlags As Long
oFlags = com.sun.star.sheet.CellFlags.VALUE + _ com.sun.star.sheet.CellFlags.DATETIME + _ com.sun.star.sheet.CellFlags.STRING + _ com.sun.star.sheet.CellFlags.ANNOTATION + _ com.sun.star.sheet.CellFlags.FORMULA + _ com.sun.star.sheet.CellFlags.HARDATTR + _ com.sun.star.sheet.CellFlags.STYLES + _ com.sun.star.sheet.CellFlags.OBJECTS + _ com.sun.star.sheet.CellFlags.EDITATTR
oRange.clearContents(oFlags)
Makroyu çalıştırma
Bir aralıktaki çeşitli değerleri içeren bir Calc elektronik tablosundaki kod bloğunun tamamının altına yerleştirin ve işlevi çağırarak makroyu çalıştırın. Çıktının tüm değerlerden, biçimlendirmeden vb. temizlendiğini görebilirsiniz.
Makronun Tamamı
Sub ClearRangeContents() Dim oDoc As Object Dim oSheet As Object Dim oCell As Object Dim oRange As Object Dim oFlags As Long oDoc = ThisComponent oSheet = oDoc.Sheets(0) ' Refers to Sheet1 as in 0, 1, 2 etc oRange = oSheet.getCellRangeByName("A3:B10") oFlags = com.sun.star.sheet.CellFlags.VALUE + _ com.sun.star.sheet.CellFlags.DATETIME + _ com.sun.star.sheet.CellFlags.STRING + _ com.sun.star.sheet.CellFlags.ANNOTATION + _ com.sun.star.sheet.CellFlags.FORMULA + _ com.sun.star.sheet.CellFlags.HARDATTR + _ com.sun.star.sheet.CellFlags.STYLES + _ com.sun.star.sheet.CellFlags.OBJECTS + _ com.sun.star.sheet.CellFlags.EDITATTR oRange.clearContents(oFlags) End Sub
Yazının orijinalini buradan okuyabilirsiniz.

Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.