Nüfus Sayım Formu


Excel’de makro (VBA) kullanarak form yapımı ile ilgili bir örneğimiz var.
 
 
Amaç; Excel’deki hücreleri kısıtlamak ve fazla bilgi girilmesini engellemek. Bunu yapmak için Excel’in yardımından faydalandım. Yardımdaki kod örnekleri de güzel.
 
Kodlardan bazı kısımlar:
 
Private Sub Workbook_Open()   ‘İşte onKEY sayesinde tuşları yakalayabiliyoruz!! ilginç değil mi?
 Sayfa1.Cells(5, 4).Activate
 
 Application.onKey "{RETURN}", "tusIlerle"      ‘ istenen tuş bir prosedür ismine bağlanıyor
 Application.onKey "{ENTER}", "tusIlerle" 
 Application.onKey "{DOWN}", "tusIlerle"
 Application.onKey "{RIGHT}", "tusIlerle"
 Application.onKey "{TAB}", "tusIlerle"
 Application.onKey "+{DOWN}", ""                 ‘ shift aşağı ok tuşu etkisiz hale getiriliyor
 Application.onKey "+{UP}", ""
 Application.onKey "+{LEFT}", ""
 Application.onKey "+{RIGHT}", ""
 Application.onKey "+{RETURN}", "tusGerile"
 Application.onKey "+{ENTER}", "tusGerile"
 Application.onKey "+{TAB}", "tusGerile"
 Application.onKey "{UP}", "tusGerile"
 Application.onKey "{LEFT}", "tusGerile"
 
End Sub

 
Sub tusIlerle()                                        ‘ özel bir tul basıldığında istenen hücreye zıplanıyor

yerX = ActiveCell.Column
yerY = ActiveCell.Row
If yerY <= 9 Then                                   ‘ mod gibi bir durum var burada (10 adet kişi bilgisi var)
  kisi = 0
ElseIf yerY <= 16 Then
  kisi = 7
ElseIf yerY <= 23 Then
  kisi = 14
ElseIf yerY <= 30 Then
  kisi = 21
ElseIf yerY <= 37 Then
  kisi = 28
ElseIf yerY <= 44 Then
  kisi = 35
ElseIf yerY <= 51 Then
  kisi = 42
ElseIf yerY <= 58 Then
  kisi = 49
ElseIf yerY <= 65 Then
  kisi = 56
ElseIf yerY <= 72 Then
  kisi = 63
End If
 
        If (yerY = 5 + kisi) And yerX = 4 Then
        Sayfa1.Cells(8 + kisi, 4).Activate
        ElseIf yerY = 8 + kisi And yerX = 4 Then
        Sayfa1.Cells(7 + kisi, 6).Activate
        ElseIf yerY = 7 + kisi And yerX = 6 Then
        Sayfa1.Cells(7 + kisi, 7).Activate
        ElseIf yerY = 7 + kisi And yerX = 7 Then
        Sayfa1.Cells(7 + kisi, 8).Activate
        ………
      End If
 
 End Sub


Select Case yerX                             ‘Bazı hücrelerde 1 basamak girilebilir, bunun için hata mesajı hazırlıyoruz, ilk karakteri alıyoruz
  Case 6 To 16
   If (yerY = 7 + kisi) And Len(Sayfa1.Cells(yerY, yerX).Value) > 1 Then
    Sayfa1.Cells(yerY, yerX).Value = Mid(Sayfa1.Cells(yerY, yerX).Value, 1, 1)
    MsgBox "Bu hücreye bir basamaktan fazla bilgi girilmemelidir!" & vbCrLf & vbCrLf & "(İlk karakter geçerli sayılmıştır.)"
    SendKeys "+{ENTER 1}"              ‘ hatalı hücreye düzeltilmesi için geri dönülüyor
   End If
End Select

If ((yerY = 5 + kisi) Or (yerY = 8 + kisi)) And yerX = 20 Then
 If Len(Sayfa1.Cells(yerY, yerX).Value) > 1 Then
   Sayfa1.Cells(yerY, yerX).Value = "X"
   MsgBox "Bu hücreye bir basamaktan fazla bilgi girilmemelidir!" & vbCrLf & vbCrLf & "(İlk karakter geçerli sayılmıştır.)"
   SendKeys "+{ENTER 1}"
  End If
End If

Konu ile ilgili olmayan linkler:

Program ile ilgili resimler:

About these ads

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Log Out / Değiştir )

Connecting to %s