Excel’in Giriş Kutusu Yöntemini kullanmanın faydaları:
- Giriş için veri tipini belirtebilirsiniz (dize(string) ile sınırlı değildir)
- Excel otomatik olarak bir doğrulama gerçekleştirir
- Aralıkları seçebilirsiniz.
Kod |
Açıklama |
0 |
Formül |
1 |
Sayı |
2 |
Yazı
(String) |
4 |
Boolean |
8 |
Aralık
(Range) |
16 |
Hata değeri
(Error value) |
64 |
Değerler
dizisi (Array of values) |
1+2 = 3 |
Sayı + Yazı
(string) |
Örnek:
Sub Excel_InputBox() Dim MusteriAdi As String Dim SonrakiSatir As Long Dim Tutar As Long MusteriAdi = VBA.InputBox("Lütfen Müşteri Adı girin", "Müşteri Girişi") SonrakiSatir = Cells(Rows.Count, 1).End(xlUp).Row + 1 'sayfaya uygun formatta geri yazma Range("A" & SonrakiSatir).Value = Excel.WorksheetFunction.Proper(MusteriAdi) 'Burada Type:=1 kullandığımız için kullanıcı sadece sayı girebilir Tutar = Excel.Application.InputBox(Prompt:="Lütfen tutarı girin", Title:="Tutar", Type:=1) Cells(SonrakiSatir, 2).Value = Tutar End Sub
Örnek:
Sub Excel_InputBox_Range() Dim myRange As Range Dim cellBlank As Long, cellNum As Long, cellOther As Long 'kullanıcının iptali tıklaması durumunda On Error GoTo HATA '8 ile kullanıcı sadece aralık seçebilir Set myRange = Application.InputBox("Hücreleri Say", "Hücre Sayımı...", , , , , , 8) 'Boş Hücrelerin sayısı cellBlank = Excel.WorksheetFunction.CountBlank(myRange) 'Sadece sayı içeren hücrelerin sayısı cellNum = Excel.WorksheetFunction.Count(myRange) 'Sadece yazı içeren hücrelerin sayısı cellOther = Excel.WorksheetFunction.CountA(myRange) - cellNum MsgBox cellBlank & " adet boş hücre var." & vbNewLine _ & cellNum & " adet sayı içeren hücre var." & vbNewLine _ & cellOther & " adet sayı içermeyen hücre var." HATA: End Sub
Örnek: En yüksek 3 değeri bulmak
Sub makro() Dim aralik As Range Dim Top1 As Double, Top2 As Double, Top3 As Double On Error GoTo HATA Set aralik = Application.InputBox(Prompt:="En yüksek 3 değeri bulmak için bir sayı aralığı seçin", _ Title:="En yüksek 3 değer", Type:=8) If Application.WorksheetFunction.Count(aralik) > 2 Then Top1 = Excel.WorksheetFunction.Large(aralik, 1) Top2 = Excel.WorksheetFunction.Large(aralik, 2) Top3 = Excel.WorksheetFunction.Large(aralik, 3) MsgBox "Top1: " & Top1 & vbNewLine & "Top2: " & Top2 & vbNewLine & "Top3: " & Top3 & vbNewLine, , "En yüksek 3 değer" Else MsgBox "Lütfen sayı içeren en az 3 hücre seçin", vbInformation End If HATA: End Sub