2014-02-03 5 views
0

Я хочу получить автоматическое значение в excel VBA на случай, если я напечатаю букву AOM в ячейке, она отобразит автоматические данные 1. если это буква BOM, она покажет 2. если это COM-буква , это будет показано 3.Auto get value in excel VBA

в примере, АОМ = 1, ВОМ = 2, COM = 3

Как написать код VBA преуспеть, чтобы изменить автоматическое значение ячейки в Excel как условие выше.

С уважением,

+0

вместо ввода ОСО, BOM, COM, почему не только типа 1,2,3? – SeekingAlpha

+0

cus Я хочу создать функцию для автоматического захвата данных. –

+0

Все ли они в одной колонке? – SeekingAlpha

ответ

0
Sub convert() 
Range("A1").Select 
While ActiveCell.Value <> "" 
If ActiveCell.Value = "AOM" Then 
ActiveCell.Value = 1 
ElseIf ActiveCell.Value = "BOM" Then 
ActiveCell.Value = 2 
ElseIf ActiveCell.Value = "COM" Then 
ActiveCell.Value = 3 
Else 
ActiveCell.Value = ActiveCell.Value + " Error!" 
End If 
ActiveCell.Offset(1, 0).Select 
Wend 
End Sub 
+0

Предполагается, что все ваши данные находятся в одном столбце. Трудно определить, что именно вы хотите сделать, исходя из того, что вы только что объяснили.Если вы хотите, чтобы что-то автоматически меняло значение при вводе в ячейку, я не знаю, как сделать макрос, который автоматически знает, где находится ваш курсор, и я бы также утверждал, что это то, что вы хотите просто жестко закодировать данные. – SeekingAlpha

2

Это возможно?

Private Sub Worksheet_Change(ByVal Target As Range) 

On Error GoTo errhandler 
Application.EnableEvents = False 
If Target.Value = "AOM" Then Target.Value = 1 
If Target.Value = "BOM" Then Target.Value = 2 
If Target.Value = "COM" Then Target.Value = 3 
continue: 
Application.EnableEvents = True 

Exit Sub 
errhandler: 
MsgBox Err.Description 
Resume continue 

End Sub 

код Put в любом Sheet Object.
Надеюсь, вам это поможет.

+1

Поскольку вы выключаете события, вы можете увидеть [ЭТО] (http://stackoverflow.com/questions/13860894/ms-excel-crashes-when-vba-code-runs/13861640#13861640) –

+1

@ Сиддхарт. О, никогда не думал об этом. поэтому я пропускаю # 3. Это хорошо знать. :) – L42

+0

Изменил мой ответ, следующий @SiddharthRout посоветуйте. Я также провел некоторое тестирование, и это правда, что если вы столкнулись с ошибкой, событие полностью отключено. Например, вы удаляете диапазон ячеек. без процедуры обработки ошибок, и вы столкнулись с «несоответствием типа», событие терпит неудачу и событие отключено. – L42

1

NON VBA РЕШЕНИЕ

Как уже отмечался в комментариях выше, почему не просто Excel Formula? Если вы хотите обновить одну и ту же ячейку, то почему бы не Data Validation List или сказать AutoCorrect?

Не уверен, что вам известно о опции AutoCorrect в Excel. Вы можете использовать функцию AutoCorrect, чтобы исправить опечатки и слова с ошибками, а также вставить символы и другие фрагменты текста. Мы будем использовать эту функцию, чтобы делать то, что вы хотите ... замените AOM на 1, BOM на 2, COM на 3.

Do This

  1. Перейдите на вкладку File | Options.
  2. В окне Excel Options диалоговое окно, нажмите Proofing.
  3. На вкладке AutoCorrect убедитесь, что установлен флажок Replace text as you type.
  4. В Replace поле введите AOM
  5. В With коробке, типа 1
  6. Нажмите Add.
  7. Повторите BOM и COM
  8. Нажмите OK, и вы сделали :)

enter image description here

+0

+1 очень хороший ответ :) не знаю об этой функции :) Это может быть полезно для меня в будущем :) –