AccessTr.neT
Makro Veya Kod Nasıl Oluştururum - Baskı Önizleme

+- AccessTr.neT (https://accesstr.net)
+-- Forum: Microsoft Excel (https://accesstr.net/forum-microsoft-excel.html)
+--- Forum: Excel Cevaplanmış Soruları (https://accesstr.net/forum-excel-cevaplanmis-sorulari.html)
+--- Konu Başlığı: Makro Veya Kod Nasıl Oluştururum (/konu-makro-veya-kod-nasil-olustururum.html)

Sayfalar: 1 2 3


RE: Makro Veya Kod Nasıl Oluştururum - feraz - 16/10/2020

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



RE: Makro Veya Kod Nasıl Oluştururum - HORZUM - 18/10/2020

(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....


RE: Makro Veya Kod Nasıl Oluştururum - feraz - 18/10/2020

Formül olayı iş değil bence yinede siz bilirsiniz.
Verdiğim kod hem exceli yormaz hemde hızlı çalışır hemde dinamik idi.


RE: Makro Veya Kod Nasıl Oluştururum - HORZUM - 19/10/2020

(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ı


RE: Makro Veya Kod Nasıl Oluştururum - feraz - 19/10/2020

(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ı _)


RE: Makro Veya Kod Nasıl Oluştururum - feraz - 19/10/2020

(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.