2017-03-21 85 views
5

içine eklemek bir Excel Makro olun Bir gün için sorar ve sonra bir sonraki açık hücreye ekler bir Excel Makro yapmaya çalışıyorum. İşte kullanmaya çalıştığım kod.Bir gün için sorar ve sonra bir sonraki açık hücre

Sub Button7_Click() 
    Dim AddName As String 
    AddName = InputBox("Date: Month/Year", "Add Date", "01/00") 
    Sheets("Sheet2").Select 
    Selection.End(xlUp).Select 
    ActiveCell.Offset(1, 0).Range("A1").Select 
    Range("A1").Value = AddName 
End Sub 

Ben olursa olsun içinde ne A1 hücresine yazın gün koyarak, sonra cevap gibi hissediyorum

kadar basit ama bir satır A'da bir sonraki açık hücreyi seçmektir bunu anlayamıyorum!

cevap

4

Bkz. How to avoid using Select in Excel VBA macros.

Sub Button7_Click() 
    Dim AddName As String 
    AddName = InputBox("Date: Month/Year", "Add Date", "01/00") 
    With Worksheets("Sheet2") 
     .Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0) = AddName 
    End With 
End Sub 

Orijinal sorun A sütununda son kullanılan hücreden bir satır aşağı offset bir hücreyi seçtikten sonra, değeri yazmak için bu seçimi kullanır vermedi vardı; sadece yerine A1 yazdı. Kodunuzun son satırı Selection = AddName olarak değiştirilebilir, ancak mümkün olduğunda seçmeyi ve etkinleştirmeyi kullanmak daha iyidir.

Application.InputBox'a bakmak isteyebilirsiniz. Excel Application.InputBox Method standart bir VBA InputBox function'dan biraz farklıdır ve bir tür dönüş belirtmesine izin verir.

4

Burada başka var:

Sub Button7_Click() 
    Dim AddName As String 
    AddName = InputBox("Date: Month/Year", "Add Date", "01/00") 
    Sheets("Sheet2").Select 
    Range("A" & ActiveSheet.UsedRange.SpecialCells(xlLastCell).Row + 1) = AddName 
End Sub 
+1

ActiveSheet.UsedRange.SpecialCells kullanmanın bir başka avantaj (xlLastCell) .Row o –

+0

Teşekkür silinmiş hücreler için herhangi bir eski bellek konumlarını temizlemek için excel zorlar olduğunu! işe yaradı! –