2015-05-08 2 views
0

Я пытаюсь добавить код заполнения цвета в частную подстанцию ​​workheet_change, чтобы выделить ячейку, где значение даты было изменено. Этот макрос также обновил базу данных, на которую ссылается, после внесения каких-либо изменений в столбец даты (столбец 1 или A). Вот код:Определенная пользователем или объектная ошибка или цветовое заполнение

Private Sub Worksheet_Change(ByVal Target As Range) 
    If strChk = "Don't Change Yet" Then Exit Sub 
    Dim r As Integer, c As Integer 
    r = Target.Row 
    c = Target.Column 
    If openMode = True Then Exit Sub 
    If Trim(Cells(Target.Row, 1)) = "" Then Exit Sub 
    If r = 2 Then Exit Sub 
    If r = 3 Then Exit Sub 
    If Not c = 1 Then Exit Su 
    If Not IsNumeric(Cells(Target.Row, 2)) Then 
     MsgBox "no orca number" 
     Exit Sub 
     End If 

    If Not IsDate(Cells(Target.Row, 1)) Then 
     MsgBox "Target date is invalid! Weird, right?" 
     Exit Sub 
    End If 

    Dim strsqla As String 
     strsqla = "select target_date, orca, cow from orca " & _ 
     "where orca_id = " & Cells(Target.Row, 2) 


    Dim adoSQLcon As ADODB.Connection 

    Set adoSQLcon = New ADODB.Connection 
    adoSQLcon.Open "Provider=SQLOLEDB;Persist Security Info=False;Integrated Security=SSPI;Initial Catalog=ENV_AC_Nording_dw_DEV;Data Source=S0662K806" 

    Dim adoSQLRst As ADODB.Recordset 

    Set adoSQLRst = New ADODB.Recordset 
    adoSQLRst.Open strsqla, adoSQLcon, adOpenStatic, adLockOptimistic 

    If adoSQLRst.RecordCount > 0 Then 
     If IsDate(Target.Value) Then 
      adoSQLRst!target_date = Cells(Target.Row, 1).Value 
      MsgBox "Date Updated" 
     End If 
     If Not Cells(Target.Row, 4).Value = "" Then 
      adoSQLRst!ORCA = Cells(Target.Row, 4).Value 
      MsgBox "ORCA Description Updated" 
     End If 
     If Not Cells(Target.Row, 8).Value = "" Then 
      adoSQLRst!COW = Cells(Target.Row, 8).Value 
      MsgBox "CoW Devices Updated" 
     End If 
     adoSQLRst.Update 
    End If 


    adoSQLRst.Close 
    Set adoSQLRst = Nothing 

    adoSQLcon.Close 
    Set adoSQLcon = Nothing 


    Cells(Target.Row, 1).Interior.Color = RGB(255, 255, 0) 

End Sub 

Поэтому код я добавил это "Клетки (Target.Row, 1) .Interior.Color = RGB (255, 255, 0)". Поэтому я хочу выделить ячейку после изменения. Но это закончилось тем, что это ошибка времени выполнения «1004»: ошибка, определяемая приложением или объектная ошибка. Поэтому мне было интересно, сможет ли кто-нибудь помочь мне в этом. Потому что я пробовал все разные типы цветов, которые я могу найти на сайте, но все они породили эту ошибку. Большое спасибо за любую помощь.

+1

Можете ли вы предоставить дополнительную информацию о контексте? (отметьте вопрос пожалуйста) – Blusky

+0

Благодарим вас за ответ. Поэтому у меня есть таблица, в которой первый столбец является датой для разных задач. Теперь я хочу вручную изменить ячейку даты и хочу выделить измененный цвет ячейки желтым (RGB (255,255,0)). Кроме того, измененная дата будет обновлена ​​обратно в базу данных, на которую ссылается. Но код, который я добавил, не работает, и он сгенерировал определенную приложением или объектную ошибку. – Richard

+1

В контексте, я считаю, @Blusky означает, это макрос VBA в Excel? Включение этих тегов помогает привлечь нужных людей к вашему вопросу. – adamdc78

ответ

0

Первый заменить:

If Not c = 1 Then Exit Su 

с

If Not c = 1 Then Exit Sub 

Там могут быть и другие проблемы.

+0

Студент Гэри, спасибо за ваш ответ. Извините, я пропустил «b», когда я вставил код здесь. – Richard

0

пытаются использовать Cells(Target.Range.Row, 1).Interior.Color = RGB(255, 255, 0)

Я не уверен, что это будет работать, но это, как я использовал его в своем собственном сценарии.

+0

Привет, Divin3, спасибо за ваш ответ. Но кажется, что это приводит к другой ошибке: Ошибка компиляции: аргумент не является обязательным. – Richard

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