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


Yanıtla
 
Paylaş Konu Araçları Görünüm Modları
Eski 09-10-2017, 01:26   #21
Ömer BARAN
Uzman
 
Giriş: 08/03/2011
Şehir: ANKARA / İSTANBUL
Mesaj: 9,301
Excel Vers. ve Dili:
Office 2013 TÜRKÇE
Varsayılan

Tekrar merhaba.

Belgeniz ve userformlar Almanca olduğundan ne olduğu / ne olmadığını anlamak için deneme yanılmadan başka seçenek kalmıyor bana.
Malesef Almanca bilgim yok, İngilizce olsaydı keşke.

-- Sayfa kodlarının başında Option Explicit oyduğuna göre sayfalarda işlem yapacak kodların tümünde,
kullanılan değişkenlerin ilgili kod'un başlığının ardından tanımlanmış olması gerekiyor.
Aşağıdaki konu sayfasında Sayın alpi'nin konuya ilişkin açıklamaları var,
konu sayfasına bakıp, ona göre de belgedeki kodlarda değişken tanımlamaları yapılmalıdır.

Nedir şu Option Explicit-Option Base-Option Compare

-- Ayrıca seri sorular yerine adım adım gitmekte yarar görüyorum.
İlk fark ettiğim şey userform kodlarında, boş geçilmemesi zorunlu alanlar/nesneler varsa (TextBox3 ve TextBox4 gibi),
işlem düğmesi kodlarının başında,
bu nesnelerin dolu/doğru veri türünde veri girişi yapılmış olup olmadığının kontrol edilmesi,
eksik/yanlış bilgi varsa MsgBox uyarısı ve SetFocus gibi kodlarla doldurulması gereken alana odaklanılmasının sağlanması yerinde olur.

Yukarıda belirttiğim gibi önce kullanılan değişkenlerin, ilgili kodların başında
Dim....As.... şeklinde tanımlamalarını yapıp ondan sonra deneyin, oluşan sorunları adım adım sorun isterseniz (örnek belgeyi de buna göre yenileyin tabi).

"bazı makrolar düzenli çalışmıyor" derken muallak olmuş, hangi kod/kodlar onu netleştirin isterseniz.

Bir de belgenin genel akışını pek anlamadım.
Belgenin/userformların kullanım aşamalarını adımlar halinde biraz açıklarsanız (senaryo)
daha iyi olur ve ilk adımdan başlayarak sorunlar çözülmeye başlanabilir ve böylece daha sağlıklı ve geriye dönmeden ilerlemek mümkün olur kanaatindeyim.

Son cevabınızın son kısmındaki "Sizin yaptığınız dosyada değiştirmek istediğim..." diye başladığınız kısıma bakarım.

Bir konuyla ilgilenmeye başladığımıza göre devam edeceğiz demektir.
.
__________________
.
☾✭ İnadına TÜRKÇE ✭☽

-- Sorunuzu, gerçek belgenizle aynı yapıda ve olması gereken sonuçların elle yazıldığı örnek belge ile destekleyiniz.
-- ALTIN ÜYELİK öneriyorum. / FORUM KURALLARInı mutlaka okuyunuz.
-- ALTIN ÜYE olmayanlar, örnek belgeyi dosya.tc, dosya.co gibi bir siteye yükleyip, belgeye erişim adresini verebilir.
-- Özel mesaj ile soru sormayınız. / Geri bildirimde bulunulmayan cevaplarımı siliyorum.
Ömer BARAN Çevrimdışı   Alıntı Yaparak Cevapla
Eski 09-10-2017, 23:13   #22
cenkozkurt
Altın Üye
 
Giriş: 04/02/2017
Şehir: Nürnberg
Mesaj: 35
Excel Vers. ve Dili:
2010
Varsayılan

Merhabalar Ömer bey,

Dediğiniz gibi değişkenleri tanımladım. Öncelikle programı biraz anlatayım. Önemli olan kısım şuanda Prozess1 olduğu Userform.

- İlk olarak en üstte açılan "başlangıç saati" (örneğin=00:00) ve "Zaman aralığı" (örneğin=15) buradaki veriler girildikten sonra, rastgele birgünlük elektrik fiyatı listesi oluşuyor. Program şuanda deneme aşamasında olduğu için böyle birşey öngördüm.

-Daha sonra aşağıdan firmadaki mesai sayıları giriliyor, ürün ve adetleri giriliyor. Herürün eklendikten sonra bizim databankımızdaki üretim sürelerini vs. alarak bize günlük üretim planlaması sağlıyor. Buraya kadar standart bir program. Bunları normalde makrosuz kullanabiliyordum.

-Ancak "Druckluftbedarf" sayfasında elektrik fiyatlarınıda alarak(sizin hazırladıgınız kodlar yardımıyla) üretimi elektrik fiyatlarına göre planyacağız. Yani elektrik ucuz olduğunda elektrik gideri fazla olan ürünlerin üretilmesini sağlayacağız. Güç aktarımı gibi düşünülebilir.

-Berechnung sayfasıda, ürün planının yazdırıldıktan sonra nasıl görüneceğini gösteriyor. İşçilerinde anlayabileceği şekilde tasarlanacak. Genel hatlarıyla program bundan ibaret.

Buarada evet haklısınız, textboxlar boşken herhangi bir uyarı gelmiyor yahut yanlış bir ürün girildiğinde onun içinde uyarı verilmiyor.

Düzenli çalışmayan makroları göstermek için rastgele bir ürün ekledim. Druckbedarf sayfasında I7 hücresinde görebilirsiniz. Ancak aynı anda ürün,sayı ve ta yı vlookuptan getirmedi. Yani J,K,L hücreleri boş kaldı. M hücreside Npt'yi hesaplayamadı. (Ta:Bir parça için üretim süresi)

Ancak Vba'ya girip tek tek makroları çalıştırsam düzeliyor. Yani bir yerde eksiklik yapmışım muhtemelen.

Şimdiden teşekkürler.
Eklenmiş Dosyalar
Dosya Türü: rar PA_v2.rar (121.7 KB, 4 Görüntülenme)
cenkozkurt Çevrimiçi   Alıntı Yaparak Cevapla
Eski 10-10-2017, 20:08   #23
Ömer BARAN
Uzman
 
Giriş: 08/03/2011
Şehir: ANKARA / İSTANBUL
Mesaj: 9,301
Excel Vers. ve Dili:
Office 2013 TÜRKÇE
Varsayılan

Tekrar merhaba.

Önce bir not; SAAT_EKLE kod blokunun başındaki Dim ilksatir As Range kısmı Integer olması lazım.

İlk olarak, SUREC adlı kod'daki aşağıdaki satırı silin veya sol başına TEK TIRNAK ekleyerek etkisiz hale getirin,
(kullandığınız produkt adlı kod'un P sütununa yazdığı değerler daha sonra lazım olmayacak varsayıyorum)
ardından da DAGITIM_DK adlı koddaki sütun adlarını (benim gönderdiğim belgeyi de aynı anda açıp mukayese ederek) kontrol edin.
.
Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
'brn.Range("P1:P" & son).Copy: brn.[Q1].PasteSpecial Paste:=xlPasteValues
Bu işlem sırasında S sütununun önceki işlemden kalan ARTIK dakika için ayrıldığını, dağıtımın aslında T sütunundan başladığını unutmayın.
.
__________________
.
☾✭ İnadına TÜRKÇE ✭☽

-- Sorunuzu, gerçek belgenizle aynı yapıda ve olması gereken sonuçların elle yazıldığı örnek belge ile destekleyiniz.
-- ALTIN ÜYELİK öneriyorum. / FORUM KURALLARInı mutlaka okuyunuz.
-- ALTIN ÜYE olmayanlar, örnek belgeyi dosya.tc, dosya.co gibi bir siteye yükleyip, belgeye erişim adresini verebilir.
-- Özel mesaj ile soru sormayınız. / Geri bildirimde bulunulmayan cevaplarımı siliyorum.
Ömer BARAN Çevrimdışı   Alıntı Yaparak Cevapla
Eski 10-10-2017, 21:54   #24
cenkozkurt
Altın Üye
 
Giriş: 04/02/2017
Şehir: Nürnberg
Mesaj: 35
Excel Vers. ve Dili:
2010
Varsayılan

Merhabalar tekrar,

Sürec'teki değişikliği yaptım. Ancak "P"sütunu süreci hesaplamada kullanılıyor. Tekrar sayısı*60*0.25(elektrik fiyatları arasındaki süre farkı). Aslında formülde bir yanlışlık var burada 0.25 olmamalı, onun yerine "stammdaten" sayfasındaki, K ve J sütunları arasındaki zaman farkını alarak işleme tabi tutmalı.

Bundan sonraki dediğiniz işlemleri henüz yapmadım çünkü "P" sütunu dediğim gibi bir işlevi var. Ne yapmamı önerirsiniz acaba?
cenkozkurt Çevrimiçi   Alıntı Yaparak Cevapla
Eski 10-10-2017, 22:08   #25
Ömer BARAN
Uzman
 
Giriş: 08/03/2011
Şehir: ANKARA / İSTANBUL
Mesaj: 9,301
Excel Vers. ve Dili:
Office 2013 TÜRKÇE
Varsayılan

Şu an bilgisyar başında değilim, mola verdim.
Sütnları bir kaydırmak gerekiyor demektir.
Ya da benim belgede ÖZET BİLGİ için diye belirterek BOŞ bıraktığım R sütunundan vazgeçip, P, Q yu Q R ye kaydırmak çözüm olur.
Biraz (1 saat kadar) sonra bilgisayar başına geçip tekrar bakarım.
__________________
.
☾✭ İnadına TÜRKÇE ✭☽

-- Sorunuzu, gerçek belgenizle aynı yapıda ve olması gereken sonuçların elle yazıldığı örnek belge ile destekleyiniz.
-- ALTIN ÜYELİK öneriyorum. / FORUM KURALLARInı mutlaka okuyunuz.
-- ALTIN ÜYE olmayanlar, örnek belgeyi dosya.tc, dosya.co gibi bir siteye yükleyip, belgeye erişim adresini verebilir.
-- Özel mesaj ile soru sormayınız. / Geri bildirimde bulunulmayan cevaplarımı siliyorum.
Ömer BARAN Çevrimdışı   Alıntı Yaparak Cevapla
Eski 11-10-2017, 01:21   #26
cenkozkurt
Altın Üye
 
Giriş: 04/02/2017
Şehir: Nürnberg
Mesaj: 35
Excel Vers. ve Dili:
2010
Varsayılan

Tamam Ömer bey zamanınız olduğunda bakarsanız bende ona göre düzeltmeleri yaparım.
cenkozkurt Çevrimiçi   Alıntı Yaparak Cevapla
Eski 11-10-2017, 12:24   #27
cenkozkurt
Altın Üye
 
Giriş: 04/02/2017
Şehir: Nürnberg
Mesaj: 35
Excel Vers. ve Dili:
2010
Varsayılan

Merhbalar tekrar,

Dediğiniz gibi kontrol ettim bir yerde hata vardı onu düzelltim. Hepsini bir sütun kaydırdım birtek "I1" hücresinden gösterim için aldığı kodu "H2" ye yazdırdım. Sanırım o değişecek zaten.
cenkozkurt Çevrimiçi   Alıntı Yaparak Cevapla
Eski 11-10-2017, 13:23   #28
Ömer BARAN
Uzman
 
Giriş: 08/03/2011
Şehir: ANKARA / İSTANBUL
Mesaj: 9,301
Excel Vers. ve Dili:
Office 2013 TÜRKÇE
Varsayılan

Ben de tüm kodları gözden geçirip formdaki SAAT ve SAYI tektboxlarına ilişkin ilaveler yaptım.
Berazdan bilgisayar büşına gaçerim.
__________________
.
☾✭ İnadına TÜRKÇE ✭☽

-- Sorunuzu, gerçek belgenizle aynı yapıda ve olması gereken sonuçların elle yazıldığı örnek belge ile destekleyiniz.
-- ALTIN ÜYELİK öneriyorum. / FORUM KURALLARInı mutlaka okuyunuz.
-- ALTIN ÜYE olmayanlar, örnek belgeyi dosya.tc, dosya.co gibi bir siteye yükleyip, belgeye erişim adresini verebilir.
-- Özel mesaj ile soru sormayınız. / Geri bildirimde bulunulmayan cevaplarımı siliyorum.
Ömer BARAN Çevrimdışı   Alıntı Yaparak Cevapla
Eski 12-10-2017, 16:05   #29
cenkozkurt
Altın Üye
 
Giriş: 04/02/2017
Şehir: Nürnberg
Mesaj: 35
Excel Vers. ve Dili:
2010
Varsayılan

Ömer bey merhabalar,

Kodu düzenleyip tek bir modülde birleştirdim. Şuanda buraya kadar sorunsuz çalışıyor. İlk baştaki "with" kısmında hata verdiği için kısaltmaları (s1,s2..) kullanamadım.


Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
Option Explicit

Sub hesap()
Dim z, k, p As Long
Dim i, t, aaa As Integer
Dim lz1, lz2, ss As Long
Dim s1, s2, s3 As Worksheet

Set s1 = Sheets("berechnung")
Set s2 = Sheets("druckluftbedarf")
Set s3 = Sheets("stammdaten")

With ThisWorkbook.Worksheets("druckluftbedarf")
        z = ThisWorkbook.Worksheets("druckluftbedarf").Cells(.Rows.Count, "B").End(xlUp).Row + 1
        k = ThisWorkbook.Worksheets("Archiv").Cells(.Rows.Count, "B").End(xlUp).Row + 1
        p = ThisWorkbook.Worksheets("Archiv").Cells(.Rows.Count, "D").End(xlUp).Row + 1
        ThisWorkbook.Worksheets("druckluftbedarf").Cells(z, "B") = Berechnung.TextBox1.Value
        ThisWorkbook.Worksheets("druckluftbedarf").Cells(z, "C") = Berechnung.TextBox2.Value
        ThisWorkbook.Worksheets("Archiv").Cells(k, "A") = Berechnung.TextBox1.Value
        ThisWorkbook.Worksheets("Archiv").Cells(k, "B") = Berechnung.TextBox2.Value
        ThisWorkbook.Worksheets("Archiv").Cells(p, "D") = Date
        ThisWorkbook.Worksheets("Archiv").Cells(p, "E") = Time
End With

lz1 = s1.Cells(Rows.Count, "A").End(xlUp).Row
lz2 = s2.Cells(Rows.Count, "B").End(xlUp).Row

For t = 2 To lz2
s2.Cells(t, "D") = WorksheetFunction.Vlookup(s2.Cells(t, "B"), s3.Range("A3:g24"), 5, 0)
s2.Cells(t, "E") = WorksheetFunction.Vlookup(s2.Cells(t, "B"), s3.Range("A3:g24"), 6, 0)
Next t

      For t = 2 To Sheets("druckluftbedarf").Cells(Rows.Count, "B").End(3).Row
      If Sheets("druckluftbedarf").Cells(t, "B") <> "" Then
         aaa = (Sheets("druckluftbedarf").Cells(t, "D") + Sheets("druckluftbedarf").Cells(t, "E")) * Sheets("druckluftbedarf").Cells(t, "C")
         Sheets("druckluftbedarf").Cells(t, "A") = (Sheets("druckluftbedarf").Cells(t, "D") + Sheets("druckluftbedarf").Cells(t, "E")) * Sheets("druckluftbedarf").Cells(t, "C")
      End If
      Next t

ss = s2.Range("A" & Rows.Count).End(3).Row
If ss = 1 Then GoTo 10
s2.Range("I2").Resize(ss - 1, 1).Value = s2.Range("A2:A" & ss).Value
s2.Range("I2:I" & ss).Sort Key1:=s2.Range("I2:I" & ss), Order1:=xlDescending, Header:=xlNo
10


For t = 2 To lz2
s2.Cells(t, "J") = WorksheetFunction.Vlookup(s2.Cells(t, "I"), s2.Range("A2:E50"), 2, 0)
s2.Cells(t, "K") = WorksheetFunction.Vlookup(s2.Cells(t, "I"), s2.Range("A2:E50"), 3, 0)
s2.Cells(t, "L") = WorksheetFunction.Vlookup(s2.Cells(t, "J"), s3.Range("A3:g24"), 2, 0)
Next t

      For t = 2 To Sheets("druckluftbedarf").Cells(Rows.Count, "B").End(3).Row
      If s2.Cells(t, "B") <> "" Then
         s2.Cells(t, "M") = s2.Cells(t, "K") * s2.Cells(t, "L")
      End If
      Next t
      
s2.Range("J2:K14").Copy s1.Range("A8:B20")
s3.Range("N1:O50").Copy s2.Range("N2:O51")

 On Error Resume Next
      For t = 2 To s2.Cells(Rows.Count, "P").End(3).Row
      If s2.Cells(t, "I") <> "" Then
         s2.Cells(t, "P") = s2.Cells(t, "O") * 0.25 * 60          'burada bir hata var, 0.25 olmamalı. Onun yerine Saatler arası fark olmalı
      End If
      Next t

End Sub
cenkozkurt Çevrimiçi   Alıntı Yaparak Cevapla
Eski 12-10-2017, 16:37   #30
Ömer BARAN
Uzman
 
Giriş: 08/03/2011
Şehir: ANKARA / İSTANBUL
Mesaj: 9,301
Excel Vers. ve Dili:
Office 2013 TÜRKÇE
Varsayılan

Merhaba.

Son cevabınızı görmeden bir adet özel mesaj yazmıştım.
Yeni halini deneyeceğim.
__________________
.
☾✭ İnadına TÜRKÇE ✭☽

-- Sorunuzu, gerçek belgenizle aynı yapıda ve olması gereken sonuçların elle yazıldığı örnek belge ile destekleyiniz.
-- ALTIN ÜYELİK öneriyorum. / FORUM KURALLARInı mutlaka okuyunuz.
-- ALTIN ÜYE olmayanlar, örnek belgeyi dosya.tc, dosya.co gibi bir siteye yükleyip, belgeye erişim adresini verebilir.
-- Özel mesaj ile soru sormayınız. / Geri bildirimde bulunulmayan cevaplarımı siliyorum.
Ömer BARAN Çevrimdışı   Alıntı Yaparak Cevapla
Yanıtla


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 19:56


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

Excel Eğitimi - Mobil Uygulama - Çorlu - Çorlu Web Tasarım -- Beylikdüzü mali müşavir - Lingerie - Dyeing Machine - Karton Bardak- Çorlu Özel Eğitim- Site Yönetimi- 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- Gebze Emlak- Bakır Sülfat- Rampa- Rotary- Çorlu İnternet Sitesi- youngblood- Çorlu Sürücü Kursu- Çorlu Sandviç Panel- Şişli Avukat- Korona Test Kalemi- Çorlu Vinç- Çorlu Pimapen Tamiri- Çorlu Çelik Konstruksiyon- Çorlu Dans- Edirne Serbest Muhasebeci- Çorlu Etüt- İstanbul Botanik- Çorlu Sigorta-
Powered by vBulletin Version 3.7.2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Advertisement System V2.6 By   Branden