2016-06-15 4 views
1

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

например, если его 7:35 и кто-то добавляет его, он должен добавить 1 к строке, которая имеет столбец 7:00. Когда я инициализирую этот код кнопкой vbYesNo и несколькими операциями if, это работает, но когда я использую тот же самый код в кнопке, который нажимает на пользовательскую форму, и это невозможно, и я не могу понять, почему. мой код выглядит следующим образом:

Private Sub CommandButton1_Click() 
Sheets("Front End").Unprotect ("29745") 
h = Hour(Now) 
    For Each c In range("B8:B20") 
     If h = Hour(c) Then 
      c.Offset(0, 6) = c.Offset(0, 3) + 1 
      Exit For 
     End If 
    Next c 
Sheets("Front End").Protect ("29745") 
End Sub 
------------------------------------------------------ 
Private Sub CommandButton2_Click() 
Sheets("Front End").Unprotect ("29745") 
h = Hour(Now) 
    For Each c In range("B8:B20") 
     If h = Hour(c) Then 
      c.Offset(0, 6) = c.Offset(0, 3) - 1 
      Exit For 
     End If 
    Next c 
Sheets("Front End").Protect ("29745") 
End Sub 

кто может помочь мне понять, что я имею неправильно и то, что мне нужно сделать, чтобы исправить это?

спасибо!

+0

Имена кнопок команд одинаковы? Или вы изменили их после? Вы можете отлаживать клики, устанавливая точку останова на них, прежде чем показывать форму – Sgdva

ответ

1

Если вы пытаетесь увеличить на 1 к этому колонку здесь ваша проблема:

c.Offset(0, 6) = c.Offset(0, 3) + 1 

должен быть

c.Offset(0, 6) = c.Offset(0, 6) + 1 'or both 3 

Ваши Смещения не соответствие. Такая же проблема для вычитания. Если вы не пытались вычесть его из значения в столбце 6 и поместить его в столбец 3. В этом случае этот код должен работать нормально.

+0

спасибо, я не могу поверить, что я пропустил это – Vbasic4now