Karataev, меня тоже заинтересовал ваш вариант подсветки активной строки, но у меня возникает ошибка "application-defined or object-defined error 1004" в макросе "Private Sub Установить_заливку(CrossRange As Range)" If objFormCond.Type = xlExpression Then 'application-defined or object-defined error If objFormCond.Formula1 = "=1" Then 'application-defined or object-defined error Не подскажите, что вызывает ошибку? У меня Excel 2007
Код
Private Sub Установить_заливку(CrossRange As Range)
Dim objFormCond As Object, i As Long
For i = Me.Cells.FormatConditions.Count To 1 Step -1
Set objFormCond = Me.Cells.FormatConditions(i)
If objFormCond.Type = xlExpression Then 'application-defined or object-defined error
If objFormCond.Formula1 = "=1" Then 'application-defined or object-defined error
objFormCond.ModifyAppliesToRange CrossRange
Exit For
End If
End If
Next
End Sub
Здравствуйте Сделал подсветку строки и столбца через условное форматирование
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim WorkRange As Range
'адрес рабочего диапазона подсветки
Set WorkRange = Range("A4:M35")
'если активная ячейка в рабочем диапазоне и нет УФ: добавить УФ
If WorkRange.Address = Union(WorkRange, ActiveCell).Address And ActiveCell.FormatConditions.Count = 0 Then
i = ActiveCell.Address(0, 0)
MyFormula = "=ИЛИ(И(ЯЧЕЙКА(""строка"")=СТРОКА(" & i & ");ЯЧЕЙКА(""столбец"")<>СТОЛБЕЦ(" & i & "));И(ЯЧЕЙКА(""строка"")<>СТРОКА(" & i & ");ЯЧЕЙКА(""столбец"")=СТОЛБЕЦ(" & i & ")))"
WorkRange.FormatConditions.Add Type:=xlExpression, Formula1:=MyFormula
WorkRange.FormatConditions(WorkRange.FormatConditions.Count).SetFirstPriority
With WorkRange.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 5296274
.TintAndShade = 0
End With
WorkRange.FormatConditions(1).StopIfTrue = False
End If
ActiveCell.Calculate
End Sub
Пожалуйста, помогите изменить формулу:
Код
"=ИЛИ(И(ЯЧЕЙКА(""строка"")=СТРОКА(" & i & ");ЯЧЕЙКА(""столбец"")<>СТОЛБЕЦ(" & i & "));И(ЯЧЕЙКА(""строка"")<>СТРОКА(" & i & ");ЯЧЕЙКА(""столбец"")=СТОЛБЕЦ(" & i & ")))"
- если активная ячейка вне рабочего диапазона - убрать цвет заливки подсветки - при выделении более одной ячейки - убрать цвет заливки подсветки - выделенная строка (клик по ее номеру) - подсвечена полностью в пределах рабочего диапазона - подсвечивать не весь столбец, а только его четвертую ячейку сверху
.FormatConditions.Delete в условии не подходит, так как не будет возможности отмены действий на листе (Ctrl+Z)
Здравствуйте Нужно по столбцу 'C' найти ячейки со словом 'полный' и в ячейках со смещением вправо прибавить к текущей сумме 1000. Если в ячейках (которые со смещением) пусто или не цифра - то пропускать их.
Код
Sub полный()
Set Rng = Columns("C:C").Find("полный")
Rng.Offset(, 4) = Round(Rng.Offset(, 4) + 1000)
Rng.Offset(, 5) = Round(Rng.Offset(, 5) + 1000)
End Sub
Здравствуйте, помогите пожалуйста, с макросом, нужно найти в выделенном диапазоне определенные символы: * - + ? / и в найденном изменить цвет текста на красный
Sub НайтиБелыйЦветЗаливки()
Dim rng As Range
For Each rng In ActiveSheet.UsedRange.Cells
If rng.Interior.ThemeColor = xlThemeColorDark1 And rng.Interior.TintAndShade = 0 Then
MsgBox "цвет заливки: (Белый, Фон 1) " & rng.Address(0, 0)
rng.Interior.ThemeColor = xlNone
MsgBox "цвет заливки: Нет заливки"
End If
Next rng
End Sub
Юрий М, да, так работает, но хотелось бы перед заменой заливки, посмотреть в каком месте листа будет происходить замена: MsgBox "цвет заливки: (Белый, Фон 1) " & rng.Address(0, 0) только MsgBox реагирует и на белый цвет и на все остальные ячейки без заливки
?activecell.Interior.Color 16777215 -это Белый, Фон 1 ?activecell.Interior.Color 16777215 -а здесь ячейка без заливки как я уже писал выше, запись макроса показывает такой код при заливке ячейки (Белый, Фон 1)
Код
Sub Макрос1()
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End Sub
как можно это использовать в макросе? моих знаний не хватает.. и вот тестовый фал
Здравствуйте Нужно найти на листе диапазоны с заливкой (Белый, Фон 1) и изменить на Без заливки (у меня excel 2007) Так конечно не получается:
Код
Sub НайтиБелыйЦветЗаливки()
Dim rng As Range
For Each rng In ActiveSheet.UsedRange.Cells
If rng.Interior.ThemeColor = xlThemeColorDark1 Then
MsgBox "цвет заливки: Белый, Фон 1"
rng.Interior.ThemeColor = xlNone
MsgBox "цвет заливки: Нет заливки"
End If
Next rng
End Sub
если при записи макроса вручную делать цвет заливки (Белый, Фон 1):
Код
'цвет заливки: Белый, Фон 1
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorDark1
.TintAndShade = 0
.PatternTintAndShade = 0
End With
'цвет заливки: Нет заливки
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
sokol92, не подскажите, как узнать ширину заголовка строк? Так не получается
Код
Sub Test()
Dim n As Double
With ActiveWindow
n = .UsableWidth
.DisplayHeadings = False
Debug.Print "Ширина заголовка строк ", .UsableWidth - n
.DisplayHeadings = True
End With
End Sub
Здравствуйте Мне нужно узнать ширину окна без учета полосы прокрутки так, получаю ширину окна с учетом прокрутки
Код
Set w = ActiveWindow
MsgBox w.Width
Теперь нужно узнать ширину полосы прокрутки, что бы вычесть ее от ширины окна
Нашел на форумах такое решение:
Код
Declare Function GetSystemMetrics32 Lib "user32" Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long
Public Const SM_CXVSCROLL = 2
Sub ShowVScrollWidth()
Dim lVScrollWidth As Long
lVScrollWidth = GetSystemMetrics32(SM_CXVSCROLL)
MsgBox lVScrollWidth
End Sub
Макрос разместил в модуле 'ЭтаКнига' Но выдается ошибка: Compile error: Constants, fixed-length strings, arrays, user-defined types and Declare statements not allowed as Public members of object modules
Jack Famous написал: поняли уже, что нужно поменять?
нет, не понял нужно: 1. Смотрю диапазон с А3 и до конца последней заполненной ячейки столбца А 2. Выделяю в этом диапазоне пустые ячейки или ячейки с цифрой 0 или ячейки с формулой, значение которой 0 3. Скрываю строки, ячейки которых выделил