На листе, через VBA, я хочу прочитать значение ячейки и использовать эту ячейку значения и цвета в другом листе?

Sub Sample() Dim wsDiff As Worksheet, wsSheet As Worksheet, wsColorIndex As Worksheet Dim lRow As Long, i As Long, j As Integer Dim delentrysheet As String Dim delentrycell As String Dim delentrycolindex As Integer Set wsDiff = Sheets("Differences") Set wsColorIndex = Sheets("VERSION LOG") lRow = wsDiff.Range("E" & wsDiff.Rows.Count).End(xlUp).row delentrycolindex = wsColorIndex.Range("I3").Interior.ColorIndex For i = 2 To lRow If wsDiff.Range("E" & i).Value = "Entered Value Deleted." Then delentrysheet = wsDiff.Range("A" & i).Value delentrycell = wsDiff.Range("B" & i) Set wsSheet = Sheets(delentrysheet) With wsSheet .Range(delentrycell).Interior.ColorIndex = delentrycolindex End With End If Next End Sub 

Я получаю сообщение об ошибке при запуске этой программы.

«Метод« Диапазон »объекта« Рабочий стол »не выполнен.

Кто-нибудь может помочь? Благодарю.

Вы можете проверить, что delentrysheet существует, прежде чем назначать его.

Для этого я использую функцию:

 Public function WorksheetExists(byval strSheet as string) as Boolean Dim wksCurr as excel.worksheet WorksheetExists = false For each wksCurr in thisworkbook.worksheets If wksCurr.name = strSheet then WorksheetExists = true Exit for End if Next wksCurr End function 

В своем коде проверьте:

Если workheetexists (delentrysheet), то установите xxxx Else End, если

С некоторым кодом для обработки исключений, возможно, в виде сообщений

Замените значение delentrycell (строка, столбец) и попробуйте следующее.

Вместо использования следующего кода:

  .Range(delentrycell).Interior.ColorIndex = delentrycolindex 

Попробуйте использовать следующий код:

  .Cells(1,1).Interior.ColorIndex = delentrycolindex 

Вы можете заменить свои Cells(row,column) на Cells(delentrycell) если delentrycell правильно обозначает (Row,Column) .

Давайте будем гением компьютера.