[ÇÖZÜLDÜ] Makro Sorunu

Katılım
11 Eylül 2008
Mesajlar
40
Excel Vers. ve Dili
2003
Ekteki dosyada yine bu siteden bulup kullandığım güzel bir makro(kod) çalışıyor.

Bu kod A sütunundaki değer silindiğinde veya değiştiğinde, aynı satırdaki sonraki hücreleri boşaltıyor.

Sorunum şu, bu kod tüm sayfada çalışıyor, ben bunun tüm sayfada çalışmasını istemiyorum satırlarda çalışmasını istiyorum. Yani 2.satırda çalışsın sadece. mesela 2.satırı 5.satıra kopyalarsam o zaman 5.satırdada çalışsın. Ne demek istediğimi anlamak için ekteki dosyadaki A10 hücresindeki yazıyı silin, görürsünüz.

Yardım bekliyorum, tşk ederim..
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
merhaba
[A2:A65536] A sütununda bir hücreyi sildiğinizde o satır üzerindeki A:G hücre değerlerini siliyor.
sadece belli aralıkda derseniz olur A2:A10 mesela. zaten A2:A65536 ile bir aralık belirlenmiş.
başlangıçta sadece 2. satırda çalışsın ama 5. satırda çalışmasını istiyorsam orada da çalışsın mı demek istiyorsunuz?

birde bu şekilde deneyin. A sütununda bir hücreyi çift tıklayınca çalışır.

Kod:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Intersect(Target, [A2:A65536]) Is Nothing Then Exit Sub
    Target = Empty
    Target.Next = Empty
    Target.Next.Next = Empty
    Target.Next.Next.Next = Empty
    Target.Next.Next.Next.Next = Empty
    Target.Next.Next.Next.Next.Next = Empty
    Target.Next.Next.Next.Next.Next.Next = Empty
End Sub
 
Katılım
11 Eylül 2008
Mesajlar
40
Excel Vers. ve Dili
2003
Hocam yazdığınız kodu denedim. Eski koddan daha iyi bu ama benim istediğim tüm sayfada değil sadece 2.satırda çalışsın başlangıçta. 2.satırı aşağı hangi satıra kopyalıyorsam o satırdada çalışsın. Ayrıca DoubleClick yerine A hücresindeki seçim değiştiğinde çalışsın istiyorum.

Yardımınız için tşk ederim.
 
Katılım
11 Eylül 2008
Mesajlar
40
Excel Vers. ve Dili
2003
Herhalde uzman arkadaşlar çok yoğun yada ben imkansız bişey istedim :)
 
Katılım
11 Eylül 2008
Mesajlar
40
Excel Vers. ve Dili
2003
Umudumu kesmeye başladım. Son umudum espiyonajl'di ama ondanda ses çıkmadı.
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
Hocam yazdığınız kodu denedim. Eski koddan daha iyi bu ama benim istediğim tüm sayfada değil sadece 2.satırda çalışsın başlangıçta. 2.satırı aşağı hangi satıra kopyalıyorsam o satırdada çalışsın. Ayrıca DoubleClick yerine A hücresindeki seçim değiştiğinde çalışsın istiyorum.

Yardımınız için tşk ederim.
merhaba
başlangıçta sadece 2. satırda ama 2. satırı başka yere kopyalayınca makronun çalışması ne gibi bir avantaj sağlayacak? nedenini bilirsek belki çözüm üretebiliriz.
ayrıca tüm A:A sütununda çalışmasının ne mahsuru var onuda anlamış değilim.

ister çift tıklayarak ister A sütununda bir hücre silerek, hangisini istiyorsanız o kodu kullanın.
 
Katılım
11 Eylül 2008
Mesajlar
40
Excel Vers. ve Dili
2003
merhaba
başlangıçta sadece 2. satırda ama 2. satırı başka yere kopyalayınca makronun çalışması ne gibi bir avantaj sağlayacak? nedenini bilirsek belki çözüm üretebiliriz.
ayrıca tüm A:A sütununda çalışmasının ne mahsuru var onuda anlamış değilim.

ister çift tıklayarak ister A sütununda bir hücre silerek, hangisini istiyorsanız o kodu kullanın.
Hocam sondan başlıyayım.

Çift tıklayarak veya A sütununda bir hücre silerek kodu çalıştırmak işimi görmüyor çünkü A sütununda 1.seçimim (veri doğrulamam) var. Ordan seçim yapıldığında yani seçim değiştiğinde sonraki hücrelerin boşalması daha mantıklı. Sizin dediğiniz de mümkün tabi önce o hücreyi çift tıklayıp sonraki hücreleri boşaltmak ve 2.işlemle seçim yapmak, yada ilk önce o hücreyi silip, 2.etapta seçim yapmak. Gördüğünüz gibi o durumda işlem 2 etaplı oluyor. Ama benim istediğim gibi yeni seçim yapıldığında sonraki hücreler boşalırsa 2 işlemle değil 1 işlemle sonuç almış oluruz.

Kodun sabit olararak A:A da çalışmasının mahsuru şu: Hesap tablom sayfa içinde A:A dan başlamak zorunda kalır. Yani ben A sütununun soluna bir veya birkaç sütun ekleyemem, hesap tablom bozulur.

Son olarak, benim hesap tablom 2.satırın alt alta defalarca kopyalanması şeklinde oluşacak. Şablonum tek satır yani 2.satır. 2.satırı alt alta kopyalıcam ve farklı farklı malzemeler seçerek alt toplam alıp ağırlık hesabı yapıcam.

Yapamıyorsak çaresiz böyle kalacak, benim excel ve VB yazılım bilgim şu an için bunu çözecek düzeyde değil. Sizin gibi uzmanların 10 dkda yaptığı şeyi haftalarca uğraşsamda yapamıyorum :))

Yardımınız için tşk ederim..
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
merhaba

birde böyle deneyin bakalım istediğiniz bunu gibi birşey mi?

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, [A2:A65536]) Is Nothing Then Exit Sub
    If Target <> "" Then
    Target.Next = Empty
    Target.Next.Next = Empty
    Target.Next.Next.Next = Empty
    Target.Next.Next.Next.Next = Empty
    Target.Next.Next.Next.Next.Next = Empty
    Target.Next.Next.Next.Next.Next.Next = Empty
    End If
End Sub
 
Katılım
11 Eylül 2008
Mesajlar
40
Excel Vers. ve Dili
2003
Hocam yine güzel bir ilerleme kaydetmişsiniz. 2.satırda seçim yaptığımda sonraki hücreler boşaltılıyor, ben bunu istiyordum zaten tşk ederim. Ancak 2.satırı aşağı kopyaladığımda bir hata veriyor. Dosyayı ekledim, bi bakabilirseniz memnun olurum.
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
merhaba
bu mudur?

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo hatal&#305;ysam_affet
    If Intersect(Target, [A2:A65536]) Is Nothing Then Exit Sub
    If Target <> "" Then
    Target.Next = Empty
    Target.Next.Next = Empty
    Target.Next.Next.Next = Empty
    Target.Next.Next.Next.Next = Empty
    Target.Next.Next.Next.Next.Next = Empty
    Target.Next.Next.Next.Next.Next.Next = Empty
    End If
hatal&#305;ysam_affet:
End Sub

not:
sorular&#305;n&#305;za tatmin edici cevap ald&#305;&#287;&#305;n&#305;z&#305; d&#252;&#351;&#252;n&#252;yorsan&#305;z;
konu ara&#231;lar&#305; / bu soruyu [&#199;&#214;Z&#220;LD&#220;] olarak i&#351;areyle'yiniz
 
Katılım
11 Eylül 2008
Mesajlar
40
Excel Vers. ve Dili
2003
Hocam çok teşekkürler, elinize sağlık. Bir tek A:A dan kurtaramadık ama bu şekilde de işimi görüyor. Bir boş vaktinizde onuda çözeceğinize inanıyorum, acelesi yok. Sağlıcakla kalın, iyi geceler..
 
Katılım
11 Eylül 2008
Mesajlar
40
Excel Vers. ve Dili
2003
Sn. Uzmanamele hocam;

dün yazdığınız koda ben bazı ilaveler yaptım ama çalışmıyor. bakabilirseniz sevinirim. dosyam ektedir..tşk.
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
merhaba
A:A s&#252;tununa ilave olarak B:B s&#252;tunu se&#231;mi&#351;siniz, sebebi nedir?
&#351;unu mu yapmaya &#231;al&#305;&#351;&#305;yorsunuz;
se&#231;ti&#287;iniz bir s&#252;tunda herhangi bir veriyi de&#287;i&#351;tirdi&#287;inizde soldaki h&#252;cre de&#287;eri de&#287;i&#351;mesin ama sa&#287;dakiler silinsin mi istiyorsunuz?

ilave etti&#287;iniz kod &#231;al&#305;&#351;maz, Worksheet_Change gibi ayn&#305; prosed&#252;r&#252; 2 kez kullanamazs&#305;n&#305;z. kodlar&#305; birle&#351;tirmeniz gerekir.
 
Katılım
11 Eylül 2008
Mesajlar
40
Excel Vers. ve Dili
2003
merhaba
A:A sütununa ilave olarak B:B sütunu seçmişsiniz, sebebi nedir?
şunu mu yapmaya çalışıyorsunuz;
seçtiğiniz bir sütunda herhangi bir veriyi değiştirdiğinizde soldaki hücre değeri değişmesin ama sağdakiler silinsin mi istiyorsunuz?

ilave ettiğiniz kod çalışmaz, Worksheet_Change gibi aynı prosedürü 2 kez kullanamazsınız. kodları birleştirmeniz gerekir.
Evet hocam aynen söylediğinizi yapmaya çalışıyorum. Kodları nasıl birleştirebiliriz?
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
merhaba
bu &#351;ekilde dener misiniz

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo son
    If Intersect(Target, [A2:F65536]) Is Nothing Then Exit Sub
    If Target.Count > 1 Then Exit Sub
    If Target <> "" Then
    Target.Next = Empty
    Target.Next.Next = Empty
    Target.Next.Next.Next = Empty
    Target.Next.Next.Next.Next = Empty
    Target.Next.Next.Next.Next.Next = Empty
    Target.Next.Next.Next.Next.Next.Next = Empty
    End If
son:
End Sub
 
Katılım
11 Eylül 2008
Mesajlar
40
Excel Vers. ve Dili
2003
merhaba
bu şekilde dener misiniz

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo son
    If Intersect(Target, [A2:F65536]) Is Nothing Then Exit Sub
    If Target.Count > 1 Then Exit Sub
    If Target <> "" Then
    Target.Next = Empty
    Target.Next.Next = Empty
    Target.Next.Next.Next = Empty
    Target.Next.Next.Next.Next = Empty
    Target.Next.Next.Next.Next.Next = Empty
    Target.Next.Next.Next.Next.Next.Next = Empty
    End If
son:
End Sub
Hocam bunu denedim. Eksiği yok fazlası var :).

İlk yazdığınız kod A:A daki değişimde sonraki 6 hücreyi boşaltıyordu.

Bu yazdığınız kod hep sonraki 6 hücreyi boşaltıyor. Yani ben F:F de değişim yaptığımda H,G,I,J,K,L hücrelerindeki formüllerim gidiyor.

Benim istediğim tam olarak şu: A:A daki değişimden sonra 6 hücreyi boşaltmasından sonra, B:B deki değişimden sonrada 5 hücreyi, C:C deki değişimden sonrada 4 hücreyi boşatması. Bir başka deyişle B,C,D,E,F,G hücrelerinin dışında başka hücrede boşaltma yapmasın.

ilginiz ve yardımınız için tşk ederim..
 

uzmanamele

Uzman
Uzman
Katılım
26 Eylül 2007
Mesajlar
9,421
Excel Vers. ve Dili
excel 2010
merhaba
bu şekilde kullanabilirsiniz.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo son
    If Intersect(Target, [A2:F65536]) Is Nothing Then Exit Sub
    If Target.Count > 1 Then Exit Sub
    If Target <> "" Then

For j = (Target.Column + 1) To 7
Cells((Target.Row), j) = Empty
Next
    End If
son:
End Sub
not:
sorularınızda ne istediğinizi açık ve net anlatmaya çalışın, gerekirse örnek verin.
verilecek cevap, sizin ne anlattığınıza göre değil bizim ne anladığımız göre şekillenir. sorunuza bukadar uzun sürede cevap bulmanızın nedeni arkadaşlarımızın soruyu anlamamış olmasından kaynaklanıyor.
benden kat kat üstün makro bilgisi olan arkadaşlar var, onlar 3-5 dakika içersinde sorunuzun cevabını verebilirlerdi.
 
Katılım
11 Eylül 2008
Mesajlar
40
Excel Vers. ve Dili
2003
merhaba
bu şekilde kullanabilirsiniz.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo son
    If Intersect(Target, [A2:F65536]) Is Nothing Then Exit Sub
    If Target.Count > 1 Then Exit Sub
    If Target <> "" Then

For j = (Target.Column + 1) To 7
Cells((Target.Row), j) = Empty
Next
    End If
son:
End Sub
not:
sorularınızda ne istediğinizi açık ve net anlatmaya çalışın, gerekirse örnek verin.
verilecek cevap, sizin ne anlattığınıza göre değil bizim ne anladığımız göre şekillenir. sorunuza bukadar uzun sürede cevap bulmanızın nedeni arkadaşlarımızın soruyu anlamamış olmasından kaynaklanıyor.
benden kat kat üstün makro bilgisi olan arkadaşlar var, onlar 3-5 dakika içersinde sorunuzun cevabını verebilirlerdi.
Tamamdır hocam işte istediğim kod bu. tşk ederim. elinize sağlık.

Not:

Soruları doğru anlatamayışımın 2 sebebi var.

Birincisi excel ve kod bilgim yeterli değil, neyin nasıl yapılabileceğini kestiremiyorum.

İkincisi projeme devam ettikçe yeni ihtiyaçlar meydana geliyor. Yeni bir konu açmak yerine devamını aynı konuda soruyorum. Aslında bu konu çoktan çözüldü ama projem geliştikçe kodu daha geliştirmenin daha iyi olacağını düşündüm, bu yüzden uzadı.
 
Üst