Я пытаюсь выделить все ячейки в столбце A диапазоном, если значение ячейки начинается с 5 пробелов. В настоящее время это то, что я пытаюсь; выдает код ошибки: Run-time error '13': Type mismatch
Sub Bold ()
Set BoldRange = Sheets("Formatted Data").Range("A13:A100000")
If BoldRange.Value Like " *" Then
BoldRange.Font.Bold = True
End If
End Sub
Обратите внимание: ошибка возникает в режиме онлайн If BoldRange.Value Like " *" Then
. Не слишком уверен в том, что я делаю не так?
Как было предложено выше, я модифицировал использование цикла For...Next.
Sub Bold ()
Dim rcell As Range, BoldRange As Range
Set BoldRange = Sheets("Formatted Data").Range("A13:A100000")
For Each rcell In BoldRange.Cells
If rcell.Value Like " *" Then rcell.Font.Bold = True
Next rcell
End Sub
Несколько советов, которые помогут сделать ваш код более эффективным.
Документация Майкрософт:
Sub Bold()
Dim rcell As Range, dataRange As Range, BoldRange As Range
Dim lastRow As Long, oSht As Worksheet
Set oSht = Sheets("Formatted Data") ' modify as needed
lastRow = oSht.Cells(oSht.Rows.Count, "A").End(xlUp).Row
Set dataRange = oSht.Range("A13:A" & lastRow)
Dim arrData: arrData = dataRange.Value
Dim i As Long
For i = LBound(arrData) To UBound(arrData)
If arrData(i, 1) Like " *" Then
If BoldRange Is Nothing Then
Set BoldRange = oSht.Cells(i, 1)
Else
Set BoldRange = Application.Union(BoldRange, oSht.Cells(i, 1))
End If
End If
Next i
If Not BoldRange Is Nothing Then
BoldRange.Font.Bold = True
End If
End Sub
Если я попробую это в новой книге, она будет работать отлично, однако, если я попробую это в своей текущей книге, все в столбце A будет выделено жирным шрифтом. Есть идеи, почему это может происходить?
Вы проводили тестирование в тех же условиях If
и с тем же набором данных? например. If arrData(i, 1) Like "abc*" Then
Да, оба одинаковые. Однако я не знаю, сможете ли вы определить это без моей настоящей рабочей тетради, поэтому не думаю, что открою эту банку с червями! Ваше решение по-прежнему работает, и, скорее всего, проблема вызвана чем-то скрытым в моей книге. Цените помощь в этом!
Трудно ответить. Вы можете отладить код шаг за шагом (нажмите F8
в VBE, чтобы запустить код) и проверить значение arrData(i, 1)
.
Что ты нашел? Что с этим не так?
Отладка всего макроса ничего не дает, пока я не дойду до последней строки If Not BoldRange Is Nothing Then BoldRange.Font.Bold = True
. Тогда кажется, что вся моя колонка А выделена жирным шрифтом.
Если BoldRange
не присвоено никакого значения (объект Range), то BoldRange.Font.Bold = True
не запустится. Я обновил последний If
пункт. Это проще для отладки.
Для этого вам придется перебирать диапазон ячейка за ячейкой с помощью цикла For....Next.