Üç Sütunda Çift Tık Uygulaması ile Seçmeli Veri Yazdırma

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Değerli Üstadlarım;
F4:F300 aralığında herhangi bir hücreye çift tık ile
Birinci Çift Tık İle VAR, İkinci Çift Tık İle YOK

H4:H300 aralığında herhangi bir hücreye çift tık ile
Birinci Çift Tık İle EVLİ, İkinci Çift Tık İle BEKAR

I4:I300 aralığında herhangi bir hücreye çift tık ile
Birinci Çift Tık İle Erkek, İkinci Çift Tık İle Bayan

Veri doğrulama liste ile değil, makro kodu için yardımcı olabilir misiniz?
Selam ve Dua ile
 
VBA:
If not Intersect(Target, Range("F4:F300")) Is Nothing Then
cancel = true
  if target.value = "VAR" then target.value = "YOK"

  if target.value = "YOK" then target.value = "VAR"

end if

Diğerleride benzer şekilde yapılır.
Sayfanın Worksheet_BeforeDoubleClick olayını eklemeniz gerekiyor.
 
Kod:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("F4:F300")) Is Nothing Then
Cancel = True
  If Target.Value = "VAR" Then Target.Value = "YOK"
  If Target.Value = "YOK" Then Target.Value = "VAR"
End If


If Not Intersect(Target, Range("H4:H300")) Is Nothing Then
Cancel = True
  If Target.Value = "EVLİ" Then Target.Value = "BEKAR"
  If Target.Value = "BEKAR" Then Target.Value = "EVLİ"
End If
If Not Intersect(Target, Range("I4:I300")) Is Nothing Then
Cancel = True
  If Target.Value = "ERKEK" Then Target.Value = "BAYAN"
  If Target.Value = "BAYAN" Then Target.Value = "ERKEK"
End If
End Sub

Hatam nerede üstad
 
VBA:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("F4:F300")) Is Nothing Then
Cancel = True
  If Target.Value = "VAR" Then
    Target.Value = "YOK"
  ElseIf Target.Value = "YOK" Then
    Target.Value = "VAR"
  End If
End If
If Not Intersect(Target, Range("H4:H300")) Is Nothing Then
Cancel = True
  If Target.Value = "EVLİ" Then
    Target.Value = "BEKAR"
  ElseIf Target.Value = "BEKAR" Then
    Target.Value = "EVLİ"
  End If
End If
If Not Intersect(Target, Range("I4:I300")) Is Nothing Then
Cancel = True
  If Target.Value = "ERKEK" Then
    Target.Value = "BAYAN"
  ElseIf Target.Value = "BAYAN" Then
    Target.Value = "ERKEK"
  End If
End If
End Sub

Kodlar peş peşe olunca birinin ardından diğeri iptal olmuş.
Bu haliyle denedim.
İstediğiniz gibi çalışıyor.
 
Merhaba.
Sayın @Mesut Topal 'ın müsadeleriyle; ben de alternatif cevap vereyim dedim.
-- ÇİFT TIKLAMA ile ilgili olarak aşağıdaki kodu kullanabilirsiniz (ilgili sayfanın kod bölümüne)
C:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("F2:F300, H2:H300, I2:I300")) Is Nothing Then Exit Sub
    If Target.Column = 6 And (Target = "" Or Target = "YOK") Then: Target = "VAR": GoTo 10
    If Target.Column = 6 And Target = "VAR" Then: Target = "YOK": GoTo 10
   
    If Target.Column = 8 And (Target = "" Or Target = "BEKAR") Then: Target = "EVLİ": GoTo 10
    If Target.Column = 8 And Target = "EVLİ" Then: Target = "BEKAR": GoTo 10
   
    If Target.Column = 9 And (Target = "" Or Target = "BAYAN") Then: Target = "ERKEK": GoTo 10
    If Target.Column = 9 And Target = "ERKEK" Then: Target = "BAYAN": GoTo 10
10: Cancel = True
End Sub
-- LİSTELEME kodlarını aşağıdakiyle değiştirin.
C:
Sub RaporListe()
Dim a: Dim Son As Long
Set p = Sheets("PERSONEL"): Set s = Sheets("SONUÇ")
Son = p.[B65536].End(xlUp).Row

Application.ScreenUpdating = False
If s.[B7] = "" Then p.Range("$A$1:$I" & Son).AutoFilter Field:=5
If s.[B7] <> "" Then kriter = "*" & Mid(s.[B7], 2, 255) & "*"
If kriter <> "" Then p.Range("$A$1:$I" & Son).AutoFilter Field:=5, Criteria1:=kriter

If Sheets("PERSONEL").Cells(Rows.Count, 2).End(3).Row > 1 Then
    s.Range("A9:H" & Rows.Count).Clear
    p.Range("$B$2:$I$" & Son).SpecialCells(xlVisible).Copy s.[A9]
End If

p.Range("$A$1:$I" & Son).AutoFilter Field:=5
Application.ScreenUpdating = True
End Sub
-- TEMİZLEME işlemiyle ilgili kodları aşağıdakiyle değiştirin.
C:
Private Sub CommandButton3_Click()
Set s = Sheets("SONUÇ")
    s.Range("B7").Validation.Delete
    s.[B7] = ""
    If s.Cells(Rows.Count, 1).End(3).Row > 8 Then _
        s.Range("A9:H" & s.Cells(Rows.Count, 1).End(3).Row).Clear
End Sub
 
Ömer Abi
Çift tıklama ve Temizleme tamam. Ellerine Sağlık Teşekkür ederim.
Yalnız Listeleme kodunda (benden kaynaklı bir hata olarak) tüm listeyi getiriyor. Bunun yerine sadece seçilen branşa ait öğretmenlerin listesinin gelmesi için kod da bir değişiklik yapabilir misiniz?

Ellerinizden öper saygılarımı sunarım.
 
Ömer Abi
Dosya ekte. Yeni kodu da denedim olmadı. Büyük ihtimal hata bende. Bakabilmeniz mümkün mü
İşlem Sırası:
1 - Sonuç Sayfasında Branş Seç butonu ile açılan listboxta branş seç, seçilen branşı aktar
2 - B7 hücresine aktarılan branş unvanından Personel sayfasında kaç öğretmen var ise listele

ama ben beceremedim.
 

Ekli dosyalar

Koşulun uyduğu satırlar için PERSONEL sayfası C sütununa bakılacaksa,
verdiğim koddaki AutoFilter Field:=5 kısımlarını (3 yerde var) AutoFilter Field:=3 olarak değiştirin.
Ben koşul için E sütununa bakılacağını düşünmüştüm.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Benzer Konular Popüler İçerikler Daha Fazlası
Geri
Üst