Имам потребителска форма за въвеждане в excel, когато потребителят въвежда данни в три различни текстови полета. Това е моят код
Private Sub Process_Click()
Worksheets("1").Range("A1").Value = Date.Value
Worksheets("1").Range("B1").Value = Name.Value
Worksheets("1").Range("C1").Value = Amount.Value
End Sub
Така че при първото натискане на процеса ще пишеданните в тези клетки А1, В1 и С1. Това, което искам да направя, е, че всеки път, когато отворя формуляра и кликвам върху формата си, бих искал тези стойности да слязат по ред, например следващия път, когато щракна върху процеса, той ще премине към A2, b2 и c2, и така На.
Отговори:
2 за отговор № 1Това е подобно на отговора на Баранка.
Основната идея е същата. Проверявате за последно попълнения ред и добавяте данните си един ред по-ниско от този.
Методът, използван тук за намиране на последно попълнения ред, може да е малко по-ефективен от използването на a while
цикъл, но трябва да тествате и двете, за да се убедите сами:
Private Sub Process_Click()
Dim appendRow As Long
" add 1 to get the row after the last-populated row
appendRow = Worksheets("1").Cells(Rows.Count,1).End(XlUp).Row + 1
Worksheets("1").Range("A" & appendRow).Value = Date.Value
Worksheets("1").Range("B" & appendRow).Value = Name.Value
Worksheets("1").Range("C" & appendRow).Value = Amount.Value
End Sub
0 за отговор № 2
Първо, трябва да знаете коя е била последната запълнена клетка. Това може да се направи лесно в навигацията на обхвата. Ако приемем, че и трите колони са запълнени с данни, можете да прочетете само една (нека да кажем A
), за да получите последния ред:
Dim i as Integer
i = 1
while Worksheets("1").Range("A" & i).Value <> "" or Worksheets("1").Range("A" & i).Value <> 0
i = i + 1
wend
Сега, когато знаете последния попълнен ред:
Worksheets("1").Range("A" & i).Value = Date.Value
Worksheets("1").Range("B" & i).Value = Name.Value
Worksheets("1").Range("C" & i).Value = Amount.Value
Това е просто начин да го решите и той работи, ако вашият набор от данни не е предназначен да бъде наистина голям. Недостатък е, ако имате много дълга таблица, while
може да отнеме известно време, за да проследите последния попълнен ред.
Надявам се това да ви помогне