Advertisement
sinancetinkaya

Excel Denemelerim

Mar 11th, 2012
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VB.NET 3.81 KB | None | 0 0
  1. 'Aşağıdaki örnek Workbook_SheetChange event'ini kullanarak aşağıdaki işlemleri yapar
  2. '1. formül girerken sizi her defasında '=' yazmaktan kurtarır. 5+5 yazdığınızda =5+5 şekline çevirir
  3. '2. eğer soldaki hücrede #Kasa!3Ödemeler gibi bir kod var ise Kasa sayfasının tüm 1. satırında 'Ödemeler' kelimesini arar ve bulduğunda 3 kolonunda bulunduğunuz sayfanın ismini arar, bulduğunda sağındaki hücreye girdiğiniz veriyi yazar.
  4. 'Örnek: 'otomobil' isimli bir sayfada 'masraf#Kasa!3Ödemeler' hücresinin sağına 1000 yazdık. Aşağıdaki kod 'Kasa' sayfasında 'Ödemeler' kolonunundan sonra 3. kolonda 'otomobil' satırının arar ve bulunca sağına 1000 yazar :)
  5.  
  6. Private Sub Workbook_SheetChange(ByVal SAYFA As Object, ByVal HUCRE As Range)
  7.  
  8.  
  9. If HUCRE.Cells.Count > 100 Then Exit Sub
  10.  
  11. If SheetChangeKontrol = 1 Then SheetChangeKontrol = 0: Exit Sub  'gereksiz Workbook_SheetChange çağrılarının önüne geçmek için
  12.  
  13. If HUCRE.HasFormula = False Then 'eğer değişen hücredeki veri bir formül değilse formül olabiliyor mu bak
  14.     If IsNumeric(Evaluate(HUCRE.Value)) = True Then 'hücre verisi bir formül olarak çalıştırıldığında çıkan sonuç bir sayı mı
  15.         SheetChangeKontrol = 1  'Değer değişikliğinden önce bunu 1 yaparak değer değişikliği sırasında Workbook_SheetChange tekrar çağrılacağı için işlem yapmadan çıkılmasını sağlıyoruz
  16.         HUCRE.Formula = "=" + HUCRE.Formula    'eğer bir sayı ise değişen hücredeki verinin başına = koy
  17.     End If
  18. End If
  19.        
  20.  
  21. If HUCRE.Column = 1 Then Exit Sub 'değişen hücre eğer 1. kolondaysa solunda bir adres hücresi olamayacağı için yordamdan çık işlem yapma
  22.  
  23. ReferansHucre = HUCRE.Offset(0, -1) 'değişen hücrenin sol tarafındaki adres bilgisinin olduğu hücrenin içeriğini al
  24.  
  25. If InStr(1, ReferansHucre, "#") > 0 Then
  26.        
  27.        
  28.         HedefBirim = Mid(ReferansHucre, InStr(1, ReferansHucre, "#") + 1, (InStr(1, ReferansHucre, "!") - InStr(1, ReferansHucre, "#") - 1))    'değişecek olan hücrenin bulunduğu sayfanın adı
  29.         'Adres olarak direk hücre adresi verilmiş mi?
  30.         If InStr(1, ReferansHucre, "!'") Then
  31.             Set HedefHucre = Sheets(HedefBirim).Range(Mid(ReferansHucre, InStr(1, ReferansHucre, "!'") + 2)) 'Eğer verilmiş ise verilen hücreyi HedefHucre'ye bağla
  32.         Else 'Hücre adresi belirtilmemiş ise o zaman Hedef Hücre adresini kendimiz bulmamız gerekiyor
  33.             Urun = Mid(ReferansHucre, InStr(1, ReferansHucre, "!") + 2) 'değişecek olan hücre hangi ürün bloğunda
  34.             Kolon = Mid(ReferansHucre, InStr(1, ReferansHucre, "!") + 1, 1) 'değişen hücrenin sayfa ismi ürün bloğunun hangi kolonunda aranacak
  35.            
  36.             'Hedef adresi bulmak için önce hedef birimin sayfasında ürün isimleri içinde ürünü ara sonra ürünü bulunca ilgili KOLON'un sol tarafında değişen hücrenin bulunduğu sayfanın(birimin) ismini ara
  37.             On Error Resume Next
  38.             HedefKolon = Columns(Sheets(HedefBirim).Range("1:1").Find(What:=Urun, LookAt:=xlWhole).Column + Kolon - 1).Address
  39.             Set HedefHucre = Sheets(HedefBirim).Range(HedefKolon).Find(SAYFA.Name, LookAt:=xlPart).Offset(, 1)
  40.             Hata = Err
  41.             On Error GoTo 0
  42.             If Hata <> 0 Then MsgBox ("ÜRÜN veya BİRİM bulunamadı!"): Exit Sub  'Eğer arama sonucu hedef hücre bulunamamışsa değer boş olacağı için hata ver çık
  43.            
  44.  
  45.         End If
  46.        
  47.         'Eğer Hedef Hücrenin içeriği değiştirmek istediğimiz veri ile aynı ise işlem yapma
  48.         'Bu kontrolü yapmak gerekiyor çünkü her değiştirmede Workbook_SheetChange tekrar çağrılıyor ve fonksiyon sonsuz döngüye giriyor
  49.         If HedefHucre.Formula <> HUCRE.Formula Then HedefHucre.Formula = HUCRE.Formula
  50.  
  51. End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement