Я пишу сценарий для запуска ping
на машинах. Сценарий выглядит в текстовый файл с именами хостов, и возвращает имя хоста в колонке А & статус ping
(вверх или вниз) в столбце B.Установить цвет ячейки в Excel на основе текстового значения - VBA
мне нужны цвета столбцов B меняется на зеленый, если вверх, и Красный, если вниз.
код без проблем:
'# call excel applicationin visible mode
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Add
intRow = 2
'# Define Labels
objExcel.Cells(1, 1).Value = "Machine Name"
objExcel.Cells(1, 2).Value = "Results"
'# Create file system object for reading the hosts from text file
Set Fso = CreateObject("Scripting.FileSystemObject")
Set InputFile = fso.OpenTextFile("MachineList.Txt")
'# Loop thru the text file till the end
Do While Not (InputFile.atEndOfStream)
HostName = InputFile.ReadLine
'# Create shell object for Pinging the host machines
Set WshShell = WScript.CreateObject("WScript.Shell")
Ping = WshShell.Run("ping -n 1 " & HostName, 0, True)
objExcel.Cells(intRow, 1).Value = HostName
'# use switch case for checking the machine updown status
Select Case Ping
Case 0 objExcel.Cells(intRow, 2).Value = "up"
Case 1 objExcel.Cells(intRow, 2).Value = "down"
End Select
intRow = intRow + 1
Loop
'# Format the excel
objExcel.Range("A1:B1").Select
objExcel.Selection.Interior.ColorIndex = 19
objExcel.Selection.Font.ColorIndex = 11
objExcel.Selection.Font.Bold = True
objExcel.Cells.EntireColumn.AutoFit
То, что я пытался по цвету (много вопросов):
Sub ColorCells()
Dim cel As Range
Application.ScreenUpdating = False
Application.EnableEvents = False
For Each cel In Range("B2:B90")
Select Case LCase(Left(cel.Value, 1))
Case "up"
cel.Interior.Color = vbGreen
Case Else
cel.Interior.ColorIndex = xlColorIndexNone
End Select
Next cel
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Что я получаю:
То, что я хочу :
Сразу я вижу ваш код не может начинаться или заканчиваться 'Sub'' End Sub', за исключением' Sub ColorCells() ', поэтому он даже не работает на моей стороне. Вы также должны ссылаться на «Лист» при использовании «Диапазон», иначе я считаю, что он выполнит действие на активном листе. Есть ли какой-то код, который вы оставили? –
@ Jean-PierreOosthuizen Никакого кода не было. Я только что собрал вещи, и это самое близкое, что мне нужно для достижения цели. Я новичок в VBA. – Vandal
В вашем коде есть так много проблем, что сложно даже знать, с чего начать. Выбрать Case LCase (слева (cel.Value, 1)) Корпус «Вниз» Если в нижнем регистре значение никогда не будет равно " Down "с капиталом D SO начните с малого, постройте строку и запустите код и добавьте материал – dgorti