Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Попробовал. За-ши-бись: The conditional formatting may be set incorrectly when you use VBA in Excel (Last Updated: 8/01/2017), четыре часа псу под хвост.

Теперь пробуйте Вы:
Скрытый текст
Код: Выделить весь код
Option Explicit

Const xlDown        = &HFFFFEFE7
Const xlToRight     = &HFFFFEFBF

Const xlExpression  = 2


Dim strSourceFile
Dim objFSO


If WScript.Arguments.Count = 1 Then
	Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
	
	strSourceFile = objFSO.GetAbsolutePathName(WScript.Arguments.Item(0))
	
	If objFSO.FileExists(strSourceFile) Then
		Select Case LCase(objFSO.GetExtensionName(strSourceFile))
			Case "xls", "xlsx"
				With WScript.CreateObject("Excel.Application")
					With .Workbooks.Open(strSourceFile)
						With .Worksheets.Item(1).Range("B7")
							If .Value = "Время" Then
								With .Parent.Range(.Offset(1, 0), .Offset(1, 0).End(xlDown))
									.Value = .Value
									
									With .Parent.Range(.Offset(0, -1), .End(xlToRight))
										.Select
										
										With .FormatConditions
											.Delete
											.Add(xlExpression, , "=ИЛИ(И($C9 = ""вход""; $B9 > " & CDbl(#08:35:00#) & "); И($C9 = ""выход""; $B9 < " & CDbl(#17:25:00#) & "))").Interior.ColorIndex = 40
										End With
									End With
								End With
								
								.Parent.Range("A1").Select
							Else
								WScript.Echo "Can't find value [Время] in [B7] cell."
								.Select
								.Application.Visible = True
								
								WScript.Quit 4
							End If
						End With
						
						.Save
						.Close
					End With
					
					.Quit
				End With
			Case Else
				WScript.Echo "Probably source file [" & strSourceFile & "] not an Excel Workbook."
				WScript.Quit 3
		End Select
	Else
		WScript.Echo "Can't find source file [" & strSourceFile & "]."
		WScript.Quit 2
	End If
	
	Set objFSO = Nothing
Else
	WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <Source file>"
	WScript.Quit 1
End If

WScript.Quit 0

Я всё же внёс значимые на мой взгляд изменения:
  • время в исходном формате текстовых строк я по-прежнему считаю правильным преобразовывать в численные значения;
  • поэтому в формуле сравниваются не строки текста, а численные значения времени;
  • я заменил в формуле арифметическое сложение логических значений на функцию Рабочего листа «ИЛИ()»;
  • раздражающий красный цвет заменил на бледно-оранжевый.
и попутно обнаружил, что некоторые вместо выхода делают ещё один вход:
Скрытый текст
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:59, 23-12-2017 | #12