• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

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

  • Konbuyu başlatan Konbuyu başlatan PColik
  • Başlangıç tarihi Başlangıç tarihi
Katılım
17 Ekim 2011
Mesajlar
35
Excel Vers. ve Dili
2021 TR-64Bit
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.
 
Asıl yapmak istediğiniz nedir, örnekle açıklayabilir misiniz?
 
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
 
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
 
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.
 
İ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.
 
Geri
Üst