2016-02-17 2 views
0

Я пытаюсь сделать простой бюджет в excel, и я хочу, чтобы макрос увидел, к какой категории я внес изменения, а затем добавьте изменение в общий обзор денег используемые в этой категории.Изменение значения ячейки на основе категории в бюджете

То есть у меня в верхней части моего листа ячейка для категории «Еда». Далее по листу я поставил следующее: Дата; Категория; Используемая сумма.

Мой код был использован кнопкой до сих пор. Кнопка проверяет, имеет ли ячейка 5 слева значение «Dagligvare», а затем изменяет значение в другом месте на листе. Моя проблема в том, что иногда кнопка распознает слово, а иногда нет. Поэтому мой вопрос: может ли кто-нибудь понять, почему он работает только иногда, хотя я ничего не меняю?

Private Sub CommandButton1_Click() 
    Dim celltxt As String 
    celltxt = ActiveCell.Offset(0, -5).Text 
    If InStr(1, celltxt, "Dagligvare") Then 
     Range("C9") = 3 
    Else 
     MsgBox ("Nope") 
    End If 
End Sub 
+1

Вы определяете ячейку путем смещения; это означает, что он вычисляется относительно активной ячейки. Вы уверены, что всегда находитесь в правильной ячейке, прежде чем нажимать кнопку? –

+0

Знаете ли вы, что 'InStr()' по умолчанию чувствителен к регистру? поэтому 'Dagligvare' и' dagligvare' будут давать разные результаты. –

+0

рассмотрим событие «Worksheet_Change», которое будет срабатывать при каждом изменении на листе, но также может быть ограничено стрельбой, когда меняются только определенные ячейки. Или рассмотрите простую формулу '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''. –

ответ

1

Вы могли бы добавить еще MsgBox, чтобы обеспечить пользователю имеет правильную ActiveCell

Private Sub CommandButton1_Click() 
    Dim celltxt As String 

    if (activecell.column = 10) then '<<change 10 to appropriate column 

     celltxt = ActiveCell.Offset(0, -5).Text 
     If InStr(1, celltxt, "Dagligvare") Then 
      Range("C9") = 3 
     Else 
      MsgBox ("Nope") 
     End If 
    else 
      MsgBox ("Oi! You need to have a cell in column 10 selected") 
    end 

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