2012-12-09 2 views
0

Я хочу ввести несколько значений в одной ячейке в листе excel на основе определенного условия, как и в случае, если в рабочей книге имеется несколько листов, если любой из листов, начинающихся с имени TC содержит цвет в нем, тогда я должен ввести в раздел Read Me в книге Excel другую информацию. Проблема с моим кодом заключается в том, что он не отображает уникальные листы, содержащие раскраску ... Предположим, что «TC_1» и «TC_3» содержит цвет в любой ячейке, а затем выводятся как «; TC_3; TC_3; TC_3;» хотя ожидаемый вывод здесь «TC_1; TC_3».Ввод нескольких значений в одну ячейку в excel

Здесь есть код:

Sub ErrorInSheet() 
    Dim Row 
    Dim Names As String 
    Names = "" 

    For Row = 2 To tsheet.UsedRange.Rows.Count 
     For Chkcol = 1 To tsheet.UsedRange.Columns.Count 
      If tsheet.Cells(Row, Chkcol).Interior.ColorIndex = 3 Then 
       Names = Names & ";" & tsheet.Name 
      End If 
     Next 
    Next Row 

    Sheets("Read Me").Cells(13, 5).Value = Names 

End Sub 

Sub iterateSheets() 

    For Each sheet1t In Worksheets 

     If InStr(1, sheet1t.Name, "TC") Then 
      Set tsheet = sheet1t 
      Call ErrorInSheet 
     End If 
    Next 
End Sub 

ответ

2

Я думаю, что это будет работать для вас - я проверил это и работает для меня.

Sub FindErrors() 
    Dim sht As Worksheet, cl As Range, shtNames As String 

    shtNames = vbNullString 

    For Each sht In Worksheets 
     If Left$(sht.Name, 2) = "TC" Then 
      For Each cl In sht.UsedRange.Cells 
       If cl.Interior.ColorIndex = 3 Then 
        shtNames = IIf(shtNames = vbNullString, sht.Name, shtNames & ";" & sht.Name) 
       End If 
      Next cl 
     End If 
    Next sht 

    Worksheets("Read Me").Cells(13, 5) = shtNames 
End Sub 

Примечания:

  1. Я явно объявлены переменные
  2. Я предполагаю, что все ваши листы начинаются с «ТС», так что я использовал Left$, но вы можете использовать InStr, если вам нравится
  3. Я использовал тройную IIF заявление, чтобы остановить вас получить ведущую ;
  4. Я положил весь код в одном Sub, но вы можете разделить его, если хотите
+0

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

+0

Без проблем - рад, что это вам помогло. –

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