Makro içerisinde bir aralığı devre dışı bırakmak veya aralığa not almak

Katılım
17 Ekim 2011
Mesajlar
31
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Selamlar, herkese hayırlı günler diliyorum. Bir kod dizesinin başına tek tırnak işareti koyduğumuzda o kod satırını pasif yapmış oluyoruz. Yani istediğimiz notu yazmak için satırın tamamını kullanabiliyoruz. Peki not almak veya geçersiz kılmak istediğimiz alan kodların ortasında yer alıyorsa bunu pasifleştirmenin bir yolu var mı? Aşağıdaki örnekte daha net anlatmaya çalıştım.

' Range("A1:A" & x).Select = Başında tek tırnak olduğu için bu kod kesinlikle çalışmayacak.
Range("A1:A2" & x).Select = Peki sadece kırmızı renkli alanı devre dışı bırakmanın bir yolu var mıdır?

Yardımcı olan veya yardımcı olmak isteyen herkese şimdiden teşekkürler.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Asıl yapmak istediğiniz nedir, örnekle açıklayabilir misiniz?
 
Katılım
17 Ekim 2011
Mesajlar
31
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Aslında asıl yapmak istediğim bir aralığı geçici bir süre devre dışı bırakmak. Aşağıda bir döngü var bu döngü tamamlandıktan sonra buna benzer bir kaç döngü daha çalışıyor. Ara sıra denemeler yapmak için & satırsay işlevini geçersiz bırakıp daha küçük bir aralığı manuel olarak giriyorum
örneğin: "G2:G10" gibi çünkü toplam kullanılan satır 100000 civarında. Bende her seferinde silip test ettikten sonra sildiklerimi tekrar girmek yerine o an için geçersiz bırakmak istiyorum. Çünkü kod içerisinde bir şeyleri silmek sıkıntılı olabiliyor özellikle "ben neyi silmiştim ya" dediğimde.

satırsay = UsedRange.Rows.Count
For Each a In Range("G2:G" & satırsay).SpecialCells(xlCellTypeVisible)
If WorksheetFunction.CountIf(Range("G2:G" & a.Row), a.Value) = 1 Then
Sheets("Sayfa2").Cells(1, sutun).Value = a.Value
sutun = sutun + 1
End If
Next a
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
satırsay için iki ayrı tanımlama kullanıp birinde manuel birinde de mevcut durumu belirleyebilirsiniz. Deneme yaptığınızda mevcut durum için olanın başına ' koyarsınız, diğer durumlarda manuel olana ' koyarsınız:

'satırsay = UsedRange.Rows.Count
satırsay = 10

gibi.

Ben böyle kullanıyorum.

Ya da deneme için yaptığınızda msgbox ve inputbox ile önce deneme olup olmadığını, eğer denemeyse kaç olduğunu sorabilirsiniz.

PHP:
deneme = MsgBox("Deneme yapmak istiyor musunuz?", vbYesNo)
If deneme = vbYes Then
    satırsay = InputBox("Kaç satırda deneme yapılacak?")
Else
    satırsay = UsedRange.Rows.Count
End If
 

Cengiz Demir

Altın Üye
Katılım
29 Haziran 2018
Mesajlar
605
Excel Vers. ve Dili
Office 365 TR (32 Bit)
Altın Üyelik Bitiş Tarihi
05-04-2025
Bu kodları alt alta yazarsınız. O anlık hangisine ihtiyacınız varsa aktfi edip diğerini devre dışı bırakabilrsiniz.
Range("A1:A2" & x).Select
'Range("A1:A2").Select

Yada bir değişken belirlersiniz.
Değişkeni 0 yaparsanız xxx kodu 1 yaparsanız yyy kodu çalışacak şekilde makronuzda düzenleme yapabilirsiniz.
 
Katılım
17 Ekim 2011
Mesajlar
31
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
İtiraf etmek gerekirse söylediğiniz metotlar aklıma gelmemişti. Anladığım kadarıyla aralığı geçersiz kılma durumu yok ama göstermiş olduğunuz yöntemler de işimi görecek. Yardımlarınız için her ikinize de çok teşekkür ediyorum.
 
Üst