2016-05-06 10 views
3

Я полный новичок, когда дело доходит до написания в VBA и искал ответ, который я мог бы использовать, чтобы исправить мою проблему без везения. Я видел некоторые связанные вопросы, но ничего не смог применить.Excel VBA Macro - запуск в выбранных ячейках

У меня есть записанный макрос, который просто добавляет ведущее число 0 к числу с помощью функции concatenate. Я использую Relative References, так что макрос будет выполняться в зависимости от того, какая ячейка выбрана в столбце A. Это работает, если я хочу добавить начальный ноль в каждую ячейку один за другим. Тем не менее, я хотел бы иметь возможность просто выбирать ячейки в столбце A. Я хочу добавить ведущее значение 0, а затем запустить макрос во всех выбранных ячейках сразу. Любая помощь очень ценится!

Sub leadingzerotake2() 
ActiveCell.Offset(0, 10).Range("A1").Select 
ActiveCell.FormulaR1C1 = "=CONCATENATE(""0"",RC[-10])" 
ActiveCell.Select 
Selection.Copy 
ActiveCell.Offset(0, -10).Range("A1").Select 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
ActiveCell.Offset(0, 10).Range("A1").Select 
Application.CutCopyMode = False 
Selection.ClearContents 
ActiveCell.Offset(0, -10).Range("A1").Select 
End Sub 

спасибо !!!

ответ

0

просто поместить этот код в модуль листа -

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
If Target.Column = 1 And Target.Count < 1000 Then 
    For Each cell In Target.Cells 
     'run your fuction here 
    Next 
End If 

End Sub

так как эта функция может potentioly запустить действительно долгое время, я ограничен эту операцию до максимального 1000 выбора ячеек , вы можете удалить эту часть, если хотите.

КСТАТИ Если вы Simpy хотите добавить ведущие нули к содержанию выбранной ячейки, я бы просто поставить -

cell.Value = "0" & cell.Value