Skip to main content

AccessTr.neT


Makro Veya Kod Nasıl Oluştururum

Makro Veya Kod Nasıl Oluştururum

#7
Yada alttaki kod.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim bul As Range

With ThisWorkbook.Sheets("Sayfa2")
If Target.Column = 1 Then
If Target.Cells.Count = 1 Then
Set bul = .Range("A:A").Find(Target.Value, , , 1)
Target.Offset(, 1).Value = Empty
If Not bul Is Nothing Then Target.Offset(, 1).Value = bul.Offset(, 1).Value
End If
End If
End With
Set bul = Nothing
End Sub
Cevapla
#8
(16/10/2020, 16:49)berduş yazdı: kusura bakmayın formül eksik olmuş
=DÜŞEYARA(A1;Sayfa2!A:B;2;0)
yada
=EĞERHATA(DÜŞEYARA(A1;Sayfa2!A:B;2;0);"")
düzeltmelisiniz
yoksa mesela siz Zyazsanız bile sonucu 30 gösteriyor

FARKINDAYIM. DÜZELTİM

(18/10/2020, 10:22)HORZUM yazdı:
(16/10/2020, 16:49)berduş yazdı: kusura bakmayın formül eksik olmuş
=DÜŞEYARA(A1;Sayfa2!A:B;2;0)
yada
=EĞERHATA(DÜŞEYARA(A1;Sayfa2!A:B;2;0);"")
düzeltmelisiniz
yoksa mesela siz Zyazsanız bile sonucu 30 gösteriyor

FARKINDAYIM. DÜZELTİM

İLGİN ALAKANDAN DOLAYI TEŞEKKÜR EDERİM....
Son Düzenleme: 18/10/2020, 10:27, Düzenleyen: HORZUM.
Cevapla
#9
Formül olayı iş değil bence yinede siz bilirsiniz.
Verdiğim kod hem exceli yormaz hemde hızlı çalışır hemde dinamik idi.
Cevapla
#10
(18/10/2020, 11:36)feraz yazdı: Formül olayı iş değil bence yinede siz bilirsiniz.
Verdiğim kod hem exceli yormaz hemde hızlı çalışır hemde dinamik idi.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim bul As Range

With ThisWorkbook.Sheets("Sayfa2")
If Target.Column = 1 Then
If Target.Cells.Count = 1 Then
Set bul = .Range("A:A").Find(Target.Value, , , 1)
Target.Offset(, 1).Value = Empty
If Not bul Is Nothing Then Target.Offset(, 1).Value = bul.Offset(, 1).Value
End If
End If
End With
Set bul = Nothing
End Sub

Bu kodda sadece A hücresine girilen bilgiyi B hücresine aktarıyor E hücresinden F hücresine nasıl olacak. Birkaç deneme yaptım olmadı
Cevapla
#11
(19/10/2020, 09:12)HORZUM yazdı:
(18/10/2020, 11:36)feraz yazdı: Formül olayı iş değil bence yinede siz bilirsiniz.
Verdiğim kod hem exceli yormaz hemde hızlı çalışır hemde dinamik idi.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim bul As Range

With ThisWorkbook.Sheets("Sayfa2")
If Target.Column = 1 Then
If Target.Cells.Count = 1 Then
Set bul = .Range("A:A").Find(Target.Value, , , 1)
Target.Offset(, 1).Value = Empty
If Not bul Is Nothing Then Target.Offset(, 1).Value = bul.Offset(, 1).Value
End If
End If
End With
Set bul = Nothing
End Sub

Bu kodda sadece A hücresine girilen bilgiyi B hücresine aktarıyor E hücresinden F hücresine nasıl olacak. Birkaç deneme yaptım olmadı
Koddaki sayfa2 A:A aralığındaki verileri arar.
E sütununda aranacaksa E:E ile değişecek.

If Target.Column = 1 Then burdaki 1 demek ilk sütunda değişiklik olunca demek E sütunu için 4 yazılmalı.
Gerisi aynı kalabilir sanıyorum.
Eğer Sayfa2 A sütununda aranacaksa yukarda yazdığım 1 yerine 4 yazılmalı.

(19/10/2020, 09:12)HORZUM yazdı: Bu kodda sadece A hücresine girilen bilgiyi B hücresine aktarıyor
Doğrusu heralde A sütununa girilen veri sayfa2 A sütunda varsa B sütununa sayfa2 nin B sütunundaki veri gelir olmalı _)
Cevapla
#12
(19/10/2020, 09:12)HORZUM yazdı:
(18/10/2020, 11:36)feraz yazdı: Formül olayı iş değil bence yinede siz bilirsiniz.
Verdiğim kod hem exceli yormaz hemde hızlı çalışır hemde dinamik idi.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim bul As Range

With ThisWorkbook.Sheets("Sayfa2")
If Target.Column = 1 Then
If Target.Cells.Count = 1 Then
Set bul = .Range("A:A").Find(Target.Value, , , 1)
Target.Offset(, 1).Value = Empty
If Not bul Is Nothing Then Target.Offset(, 1).Value = bul.Offset(, 1).Value
End If
End If
End With
Set bul = Nothing
End Sub

Bu kodda sadece A hücresine girilen bilgiyi B hücresine aktarıyor E hücresinden F hücresine nasıl olacak. Birkaç deneme yaptım olmadı
Kodu açıklayayım tam anlarsınız.
------------------------------------------------------------
If Target.Column = 1 Then
eğer 1.ci sütunda işlem olursa
-------------------------------------------------------------
If Target.Cells.Count = 1 Then
burası önemli değil
-------------------------------------------------------------
Set bul = .Range("A:A").Find(Target.Value, , , 1)
burası Sayfa2 nin A sütununda arama yapar.Aranan ise A sütununa girilen değerdir.
If Target.Column = 1 Then burdaki 1 yerine 4 olsaydı E sütununa girilen değer aranacaktı.
----------------------------------------------------------------------------------------------
Target.Offset(, 1).Value = Empty
Burdaki 1 demek 1.ci sütunun 1 sağı demek.3 yazılsaydı 3 sütun sağı demekti.
Kısaca temizler o hücreyi.
-------------------------------------------------------------------------------------------------
If Not bul Is Nothing Then Target.Offset(, 1).Value = bul.Offset(, 1).Value
bul.Offset(, 1).Value burası ise aranan(bul) sayfa2 nin A sütunu olduğu için ve getirilecek veri sayfa2 B sütunu olduğu için 1 yazıldı.F sütunundan veri istenseydi5 yazılmalıydı.
----------------------------------------------------------------------------------------------------------------------------------

Kısaca Target demek hangi sayfanın hangi sütununa veri girilecekse o hücre (Hedef) demek.Burda Target ise unuttum lakin heralde sayfa1 deki A sütunu olacaktı.
Bul ise Sayfa2 nin A sütunu için.
Offset ise kaydır demek.
Aslında dictionary ile yazılan kod uzun olmasına rağmen daha hızlı çalışır.
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da