Excel Forum
ALTIN ÜYELİK Hakkında Bilgi


Geri Git   Excel Forum > EXCEL-Soruları > Makro-VBA
Atatürk
Şifremi Unuttum

DUYURU SİSTEMİ / REKLAM PANOSU

Makro-VBA Makro veya VBA ile ilgili sorularınızı buraya gönderebilirsiniz.
Dosya ekleyebilirsiniz

Özel Arama


Kapalı Konu
 
Paylaş Konu Araçları Görünüm Modları
Eski 26-09-2017, 14:14   #1
ilkersan
Altın Üye
 
Giriş: 23/04/2005
Şehir: İstanbul
Mesaj: 34
Excel Vers. ve Dili:
Office 2010
Varsayılan Aktarma makrosu daha kısa yazılabilir mi?

Merhaba,

Ekli dosyadaki excel şablonlarına makro ile beri aktarıyorum. Makro 15 ayrı koşula göre çalışıyor. Her koşul için ayrı kod grubu oluşturdum. Aşağıdaki örnekte görüldüğü gibi sadece kırmızı fontlu kod satırında değişiklik yaparak.
Benim merak ettiğin 15 ayrı makro yazmak yerine tek bir makroda aktarım yapacak bir kod yazılabiliyor mi?
Yardım, görüş ve önerileriniz için şimdiden teşekkürler.



Alıntı:
Sub aktar()
Application.ScreenUpdating = False
Dim S1 As Worksheet
Dim S2 As Worksheet
Set S1 = Sheets("Formlar") 'sayfa ad değiştir
Set S2 = Sheets("Takip") 'sayfa ad değiştir
's1 veri alınan sayfa
's2 veri yazılan sayfa

S1_son_sat = S1.[b65536].End(3).Row
a = 5
b = 1
For i = 2 To S1_son_sat
If S1.Cells(i, "e") = Range("I4").Value2 Then
'If S1.Cells(i, "B") = "FSC ASIAN HA TECH 5" Then ' teknisyen

S2.Cells(a, "B") = S1.Cells(i, "b")
S2.Cells(a, "c") = S1.Cells(i, "r")
S2.Cells(a, "d") = S1.Cells(i, "ap")
S2.Cells(a, "f") = S1.Cells(i, "au")
S2.Cells(a, "h") = S1.Cells(i, "n")
'S2.Cells(a, "b") = b
b = b + 1
a = a + 1

Else
End If
Next i

'Application.ScreenUpdating = True
'MsgBox " B İ T T İ "
End Sub
Eklenmiş Dosyalar
Dosya Türü: xlsm örnek.xlsm (106.2 KB, 4 Görüntülenme)
__________________
Excel 2007 - Türkçe
ilkersan Çevrimdışı  
Eski 26-09-2017, 14:57   #2
PLİNT
 
Giriş: 30/12/2014
Şehir: Gürün
Mesaj: 1,198
Excel Vers. ve Dili:
Excel 2010
Varsayılan

Merhaba
Koşulları "or" ("yada") ile birleştirerek olabilir.
Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
If S1.Cells(i, "e") = Range("I4").Value2 Or _
S1.Cells(i, "B") = "FSC ASIAN HA TECH 5" Or _
S1.Cells(i, "e") = Range("I4").Value2 Then

Bu mesaj en son " 26-09-2017 " tarihinde saat 15:03 itibariyle PLİNT tarafından düzenlenmiştir....
PLİNT Çevrimiçi  
Eski 26-09-2017, 15:47   #3
ilkersan
Altın Üye
 
Giriş: 23/04/2005
Şehir: İstanbul
Mesaj: 34
Excel Vers. ve Dili:
Office 2010
Varsayılan

Sayın PLİNT,
Cevap teşekkürler "or" yapısını kullanamıyorum. Kod sayfamda 15 adet aktarma makrosu var. Aktarım yapılan sayfada 15 adet şablonum her kod şablonda farklı satır aralıklarında veri aktarıyor. Bu yüzden 15 makro oluşturdum. Sanırım başka çözüm yolu yok.



Alıntı:
PLİNT tarafından gönderildi Mesajı Görüntüle
Merhaba
Koşulları "or" ("yada") ile birleştirerek olabilir.
Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
If S1.Cells(i, "e") = Range("I4").Value2 Or _
S1.Cells(i, "B") = "FSC ASIAN HA TECH 5" Or _
S1.Cells(i, "e") = Range("I4").Value2 Then
__________________
Excel 2007 - Türkçe
ilkersan Çevrimdışı  
Eski 26-09-2017, 16:38   #4
unlimitted
Altın Üye
 
Giriş: 07/01/2015
Şehir: ankara
Mesaj: 210
Excel Vers. ve Dili:
2013 english
Varsayılan

VBA için "case" yapısını araştırın derim.
bence yapılabilir.
unlimitted Çevrimdışı  
Eski 26-09-2017, 16:50   #5
Orion1
Uzman
 
Orion1 kullanıcısının avatarı
 
Giriş: 01/03/2005
Mesaj: 19,604
Excel Vers. ve Dili:
Win7 Home Basic TR 64 Bit Ofis-2010-TR 32 Bit
Varsayılan

Pragmatik procedure ile çözdüm.
Dosya ektedir.
Eklenmiş Dosyalar
Dosya Türü: rar örnek59.rar (68.3 KB, 9 Görüntülenme)
__________________
evrengizlen@hotmail.com

KOD ANLATILMAZ,YAZILIR!
Bir sümer atasözü;
Madem biliyorsun neden öğretmiyorsun.Boşa vakit geçirdin neye yaradı.
Orion1 Çevrimdışı  
Eski 26-09-2017, 18:46   #6
ilkersan
Altın Üye
 
Giriş: 23/04/2005
Şehir: İstanbul
Mesaj: 34
Excel Vers. ve Dili:
Office 2010
Varsayılan

Sayın unlimitted
Select Case yapısı da uymuyor.

Sayın Orion1

Cevabınız için teşekkürler.
Pragmatik procedure ilgili detaylı bilgiye nasıl ulaşabilirim.
Anladığım kadarıyla veri aktarılacak satırlar parantez içindekiler.
Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
Sub Düğme3_Tıklat()
Call aktar(5)
Call aktar(36)
Call aktar(67)
Call aktar(98)
Call aktar(129)
Call aktar(160)
Call aktar(191)
Call aktar(222)
Call aktar(253)
Call aktar(284)
Call aktar(315)
Call aktar(346)
Call aktar(377)
Call aktar(408)
Call aktar(439)
Bu prosedürü çalıştırmak için aşağıdaki kod grubu yeterli mi?
Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
Sub aktar(ByRef a As Long)
__________________
Excel 2007 - Türkçe
ilkersan Çevrimdışı  
Eski 26-09-2017, 18:49   #7
Orion1
Uzman
 
Orion1 kullanıcısının avatarı
 
Giriş: 01/03/2005
Mesaj: 19,604
Excel Vers. ve Dili:
Win7 Home Basic TR 64 Bit Ofis-2010-TR 32 Bit
Varsayılan

Düğme3 prosedürünü çalıştırmak yeterli.
oradaki değişkeni aktar prosederünde kullanıyoruz.İlk başlangıç için satır no sudur , onlar.
__________________
evrengizlen@hotmail.com

KOD ANLATILMAZ,YAZILIR!
Bir sümer atasözü;
Madem biliyorsun neden öğretmiyorsun.Boşa vakit geçirdin neye yaradı.
Orion1 Çevrimdışı  
Kapalı Konu


Konu Araçları
Görünüm Modları

Gönderme Kuralları
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
SimgelerAçık
[IMG] kodu Açık
HTML kodu Kapalı


Saat 22:39


Bu forum Elit NET - www.elitnet.com.tr tarafından sunulmaktadır.

Excel Eğitimi - Mobil Uygulama - Çorlu - Torna - Çorlu Web Tasarım - Tarot Falı - invest in turkey - Lingerie - Dyeing Machine - Çorlu Temizlik- Karton Bardak- Çorlu Özel Eğitim- Site Yönetimi- Led Aydınlatma- Pronet Tekirdağ- Çorlu Kamera- Pronet Edirne- Pronet Kırklareli- Pronet Çerkezköy- Pronet Çorlu- Pronet Lüleburgaz- Pronet Keşan- Çorlu Araç Takip- Çorlu Su Arıtma- Boru Profil- Gebze Emlak- Beylikdüzü Temizlik- İstanbul Burun Estetiği- Su Deposu Temizliği- Bakır Sülfat- Rampa- Rotary- Çorlu İnternet Sitesi-
Powered by vBulletin Version 3.7.2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Advertisement System V2.6 By   Branden