Excel VBA(Makro) Kısa Kodlar 1
Bu yazıda size bazı makrolardan bahsedeceğim. Öncelikle makrolardan herşey beklenmemelidir. Excel VBA ile masaüstü yazılımlar bile yapılabilir ancak Excel bir yazılım platformu değildir. Birçok kişi userformlarla ile kafayı bozmuş durumdadır. Userform çok kullanışlıdır ancak Excel ile Excel’in ötesinde bir yazılım hayal etmek sizi hem çok yorar hem de isteğinizi karşılamaz. Büyük programlar yazmak için C#.Net kullanmanızı tavsiye ederim. C#.Net öğrenmek içinse, C’den başlayıp gelin. Uzun bir yol sizi bekliyor 🙂
Excel Makro kodları’nın temel amacı devamlı olarak yapılan işlerin otomatikleştirilmesidir. Bu kod serisinin 1. parçası aşağıdaki kodlardan oluşmaktadır. Devamı gelecek…
1) Butona Tıklayarak Alan Seçmek
Private sub Commanbutton1_Click() Range(“A5”).Select End Sub
2) Butona Tıklayarak Aralık Seçmek
Private sub Commanbutton1_Click() Range(“A5:A10”).Select End Sub
3) Butona Tıklayarak Tüm Satırı Seçmek
Private sub Commanbutton1_Click() Rows(1).Select End Sub
4) Butona Tıklayarak Tüm Sütunu Seçmek
Private sub Commanbutton1_Click() Columns(1).Select End Sub
5) Seçilen Hücreye Değer Atamak
Private sub Commanbutton1_Click() Cells(1,5).Select Cells(1,5).Value=”BYMMB” End Sub
6) Yeni Bir Sekme Eklemek
Private Sub CommandButton1_Click() Worksheets.Add.Name = "BYMMB" a = Worksheets.Count Worksheets("BYMMB").Move after:=Worksheets(a) End Sub
7) Bir Hücrede Yer Alan Değeri MSGBOX ile Göstermek
Private Sub CommandButton1_Click() MsgBox Range("A1") End Sub
8) Şart’a Bağlı MSGBOX
Private Sub CommandButton1_Click() Dim a a = MsgBox("A1'e BYMMB yazayım mı?", vbYesNo, "Ne yapalım?") If a = vbYes Then Cells(1, 1).Value = "BYMMB" Else MsgBox "A2'ye yazıyorum o zaman" Cells(1, 2).Value = "BYMMB" End If End Sub
9) Bir Alanda Yer Alan MİN/MAX Değerleri Bulmak
Private Sub CommandButton1_Click() Dim a a=Worksheetfunction.Min(Range(“A:A”)) Cells(1,2)=a End Sub
10) Bir Aralıkta Yinelenen Verileri Kaldırmak
Private Sub CommandButton1_Click() Range(“A1:A50”).AdvancedFilter Action:=xlFilterCopy,CopyToRange:=Range(“B1”),Unique:=True End Sub
Faydalı olması dileğiyle…
çok faydalı oldu bu kodlar. çok sağolun.. benim bir sorunum var. istiyorumki butona bastığımda belirlediğim yere belirttiğim isim yazsın.. böyle bir şey mümkünmüdür? teşekkürler.
SUB MAKRO1()
‘
‘ MAKRO1 MAKRO
‘
‘
ActiveCell.FormulaR1C1 = “BYMMB” (BYMMB YAZDIĞIN YERE DİLEDİĞİNİ YAZDIR)
END SUB
Hocam benim bi sorum olacak ben istiyorum ki kaydet düğmesine bastığımda o sayfadaki tabloyu farklı kaydet değerleri yaparak başka bir sayfadaki boş tabloya yapıştırsın
Elinize sağlık hocam. Peki yeni kayıt eklerken (userform ile) örnek olarak a sütunundaki değerleri kontrol edip varsa kayıt edilecek veri ile aynıysa uyarı versin. Bunu nasıl yapabilirim.?
Merhabalar bymmb,
Konu ne zaman paylaşıldı bilmiyorum ama umarım sorumun çözümü vardır ve cevap verirsiniz. Uzunca bir süredir bir sorunun araştırmasını yapıyorum, sorun yada sorum şu; UserForm üzerinde bulunan TextBox’a girdiğim verinin sürekli olarak kayıtlı kalmasını sağlamak. Koşula bağlı bir değer, koşullarını tamamladım fakat kayıtlı kalma sorununu çözemedim. Girdiğim değerin kaydet dendikten sonra çalışma dosyası her açılışında kayıtlı kalmasını istiyorum.
Sorunun net bir şekilde çözülmesi adına: TextBox = “Değer” şeklinde bir kod hatalı olacaktır. Çünkü bu Textboxa gireceğim değer eğer çalışma dosyası farklı bir bilgisayarda açılacaksa hata verecektir. Yani Textboxa değer atanmayacak, userform üzerinden giriş yapılıp kayıtlı kalacaktır.
arkadaşlar yardım edebilirmisiniz? kod un son kısmında çıkış yapamıyor yanlış bir şey mi var?
Dim i As Integer
i = 3
Dim SubTotal As Single
Dim JobSubMax As Integer
Dim ManMax As Integer
Dim JobMax As Integer
Do While Worksheets(“Sheet1”).Range(“K” & i).Value “”
SubTotal = SubTotal + Worksheets(“Sheet1”).Range(“K” & i).Value
If SubTotal >= 1.2 Then
ManMax = ManMax + 1
If JobSubMax > JobMax Then JobMax = JobSubMax
Worksheets(“zehra”).Range(“C” & i).Value = ManMax
Worksheets(“zehra”).Range(“D” & i).Value = JobSubMax
Worksheets(“zehra”).Range(“E” & i).Value = i
JobSubMax = 0
SubTotal = 0
Else
JobSubMax = JobSubMax + 1
i = i + 1
End If
Loop
Worksheets(“zehra”).Range(“D” & 3).Value = ManMax
Worksheets(“zehra”).Range(“D” & 4).Value = JobMax
End Sub
Arkadaşlar 2 sayfalı bir excel dosyam var 1. sayfada (takvim) tüm yılın günlerini içeren hücreler var. D7:AN18 e kadar. 2. sayfamda (özelgünler) ise özel günleri içeren tarihlerin olduğu hücreler var b2:b50 arası yanında ise ogünlere ait açıklamalar var c2:c50 ye kadar. Ben 2. sayfada yazdığım tarih ve karşılığına gelen açıklamayı 1. sayfadaki takvim üzerindeki tarihe denk gelen hücre üzerinde açıklama olarak görünmesini istiyorum bununla ilgili kodda yardımcı olabilirmisiniz.