2016-04-18 10 views
1

Я пытаюсь написать макрос, который позволяет пользователю вводить новый серийный номер банкноты. Макрос требует 3 входа (валюта, номинал и серийный номер). Я новичок в VBA, но код, который я пытался написать, приведен ниже. Может ли кто-нибудь указать, где я ошибся, или что нужно изменить, чтобы заставить его работать? Благодаря!Определение ячеек в VBA

Sub TestSub() 
Dim Note_Serial As Variant 
Dim Note_Currency As Variant 
Dim Note_Denomination As Variant 
'Defining 3 inputs 

Note_Currency = InputBox("Enter Currency (in 3 letter form):") 
Note_Denomination = InputBox("Enter Note Denomination (with $ sign):") 
Note_Serial = InputBox("Enter Serial Number:") 
'Getting 3 inputs 

Dim Currency_Cell As Range 
Dim Denomination_Cell As Range 
Dim Serial_Cell As Range 
'Defining cells to write inputs 

Currency_Cell = (D3) 
Denomination_Cell = (E3) 
Serial_Cell = (F3) 
'Starting cells 

Currency_Cell = Note_Currency 
Denomination_Cell = Note_Denomination 
Serial_Cell = Note_Serial 
'Writing inputs to spreadsheet 

Currency_Cell.Offset (1) 
Denomination_Cell.Offset (1) 
Serial_Cell.Offset (1) 
'Moving all cells down 1 place 
End Sub 

ответ

2

Вместо того чтобы писать Currency_Cell = (D3), вы хотите написать Set Currency_Cell = Range("D3") (при условии, что вы не переключите активный рабочий лист).

EDIT: Для того, чтобы предотвратить перезапись ранее введенных данных, используйте вместо этого:

Set Currency_Cell = Cells(Rows.Count, Range("D3").Column).End(xlUp).Offset(1, 0) 

Это будет выбрать первую пустую ячейку в колонке D.

Чтобы переместить ссылку на ячейку, вы должны также использовать Set и дать смещение в строках и столбцах:

Set Currency_Cell = Currency_Cell.Offset (1, 0) 
+0

Спасибо! Входы теперь работают и записываются в правильные ячейки. Однако, когда я ввожу вторую ноту, она перезаписывает первую ноту. Можете ли вы объяснить, почему это происходит? Еще раз спасибо – 1937827

+0

Это потому, что вы всегда начинаете в строке 3, перезаписывая ранее записанные данные. Я обновил свой ответ, чтобы этого не случилось. – Verzweifler

Смежные вопросы