2014-11-26 3 views
0

В настоящее время я пытаюсь добавить скрипт в excel. Извините мою терминологию, я не так горяч с программированием!Добавление «A1, A2, A3 ..» в «B1, B2, B3 ..» Затем строка «A» сбрасывает значение до нуля

я все мои учета по Excel 2003, и я хотел бы иметь возможность добавить значение, скажем, ячеек f6 к f27 к клеткам e6 к e27 соответственно. Дело в том, что я хочу, чтобы значение столбца «f» было сброшено каждый раз.

До сих пор я нашел этот код, который работает, если я копирую и вставляю его в VBA. но это только позволяет мне использовать его на одной строке:

Private Sub Worksheet_Change(ByVal Target As Range) 
    Application.EnableEvents = False 
    If Target.Address = Range("f7").Address Then 
     Range("e7") = Range("e7") + Range("f7") 
     Range("f7").ClearContents 
    End If 
    Application.EnableEvents = True 
End Sub 

бы кто-то будет достаточно любезен, чтобы объяснить, как я могу изменить это, чтобы сделать то же самое через все мои нужные ячейки? Я попытался добавить Range («f7», [f8], [f9] и т. Д., Но я действительно не знаю.

+2

Пожалуйста, отредактируйте t ваш вопрос к чему-то, что описывает проблему, которую вы имеете. Вы указали, что речь идет о Excel и VBA в ваших тегах, и ясно, что вам нужна помощь, или вы не спрашиваете здесь, а это означает, что в заголовке есть нулевой значимый контент, как сейчас. Ваше название должно указывать на проблему, и должно быть полезно, чтобы будущие читатели находили ее в результатах поиска. –

ответ

0

Прежде всего, вам нужно определить диапазон, который должен быть «пойман»; . в, определяю диапазон, который вы хотите отслеживать изменения, я нашел пример here Затем просто добавить значения в другую ячейку:.

Private Sub Worksheet_Change(ByVal Target as Range) 
    Dim r as Range ' The range you'll track for changes 
    Set r = Range("F2:F27") 

    ' If the changed cell is not in the tracked range, then exit the procedure 
    ' (in other words, if the intersection between target and r is empty) 
    If Intersect(Target, r) Is Nothing Then 
     Exit Sub 
    Else 
     ' Now, if the changed cell is in the range, then update the required value: 
     Cells(Target.Row, 5).Value = Cells(Target.Row, 5).Value + Target.Value 
     ' ----------------^ 
     ' Column 5 = 
     '  column "E" 

     ' Clear the changed cell 
     Target.ClearContents 
    End if 
End Sub 

Надеется, что это помогает

+0

Привет. Большое спасибо за ваш ответ. Извините, им это действительно не здорово. Я интерпретировал, что я должен ввести это в VBA ?? Private Sub Worksheet_Change (ByVal Target As Range) Dim г Как Диапазон Установить г = Range ("F2: F27") Если Intersect (Target, г) ничего после этого Exit Sub Else Cells (Target.Row, 5) .Value = Cells (Target.Row, 5) .Value + Target.Value Target.ClearContents End If End Sub –

+0

большое спасибо. просто нужно было отключить макро-безопасность! –

+0

@RhysDavies Счастливые помочь. Кстати, если вы найдете это полезным, проголосуйте за него и/или примите его;) – Barranka

0

Попробуйте

Private Sub Worksheet_Change(ByVal Target As Range) 
    On Error GoTo ErrHandler 
    Application.ScreenUpdating = False 
    Application.EnableEvents = False 
    If Intersect(Target, Range("B1:B5,F6:F27")) Then 'U can define any other range 
     Target.Offset(0, -1) = Target.Offset(0, -1).Value + Target.Value ' Target.Offset(0,-1) refer to cell one column before the changed cell column. 
     'OR: Cells(Target.row, 5) = Cells(Target.row, 5).Value + Target.Value ' Where the 5 refer to column E 
     Target.ClearContents 
    End If 

ErrHandler: 
    Application.EnableEvents = True 
    Application.ScreenUpdating = True 
End Sub 
+0

Я очень ценю, что он отлично работал. –

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