Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Макрос для обработки строк в зависимости от значения столбца - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос для обработки строк в зависимости от значения столбца (Макросы/Sub)
Макрос для обработки строк в зависимости от значения столбца
nvk_ivan Дата: Пятница, 21.11.2014, 11:49 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте. Помогите, пожалуйста, макросом
1. В строке, где значение столбца "B" равно "УДАЛИТЬ" (в примере строка 5)
- Перенести значения столбцов "C", "D", "E", "F", "H" в текстовый файл
- Удалить значения столбцов "B", "D", "E", "F", "I", "J"
- В столбце "G" поставить значение "-"
- В столбце "C" поставить значение "я"
- Снять свойство защищаемая ячейка и убрать заливку со столбцов "C", "D", "J"
2. В строке, где значение столбца "C" отличается от "я" (в примере строка 9)
- Поставить свойство защищаемая ячейка и окрасить столбцы "C", "D", "J" в светло-серый цвет
К сообщению приложен файл: tmp.xlsm (11.2 Kb)


Сообщение отредактировал nvk_ivan - Пятница, 21.11.2014, 12:51
 
Ответить
СообщениеЗдравствуйте. Помогите, пожалуйста, макросом
1. В строке, где значение столбца "B" равно "УДАЛИТЬ" (в примере строка 5)
- Перенести значения столбцов "C", "D", "E", "F", "H" в текстовый файл
- Удалить значения столбцов "B", "D", "E", "F", "I", "J"
- В столбце "G" поставить значение "-"
- В столбце "C" поставить значение "я"
- Снять свойство защищаемая ячейка и убрать заливку со столбцов "C", "D", "J"
2. В строке, где значение столбца "C" отличается от "я" (в примере строка 9)
- Поставить свойство защищаемая ячейка и окрасить столбцы "C", "D", "J" в светло-серый цвет

Автор - nvk_ivan
Дата добавления - 21.11.2014 в 11:49
Rioran Дата: Пятница, 21.11.2014, 16:54 | Сообщение № 2
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
nvk_ivan, здравствуйте.

- Перенести значения столбцов "C", "D", "E", "F", "H" в текстовый файл
Конкретика была бы уместна.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
Сообщениеnvk_ivan, здравствуйте.

- Перенести значения столбцов "C", "D", "E", "F", "H" в текстовый файл
Конкретика была бы уместна.

Автор - Rioran
Дата добавления - 21.11.2014 в 16:54
nvk_ivan Дата: Воскресенье, 23.11.2014, 09:00 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Конкретика была бы уместна.

В идеале в текстовый файл archive создаваемый в том же месте, где находится книга. Ну или C:\archive.txt. Знак разделителя - табуляция.
 
Ответить
Сообщение
Конкретика была бы уместна.

В идеале в текстовый файл archive создаваемый в том же месте, где находится книга. Ну или C:\archive.txt. Знак разделителя - табуляция.

Автор - nvk_ivan
Дата добавления - 23.11.2014 в 09:00
nvk_ivan Дата: Понедельник, 24.11.2014, 07:45 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Вроде набросал код, что надо сделать с ячейками. Остается вопрос, как подставить нужные номера ячеек.

[vba]
Код
Sub Макрос1()
'
' Удаление помеченных объектов
'

'
     ' Ячейка B
     Range("B5").Select ' Выбираем ячейку
     Selection.ClearContents ' Очищаем содержимое выбранной ячейки
      
     ' Ячейка C
     Range("C5").Select ' Выбираем ячейку
     ActiveCell.FormulaR1C1 = "я" ' Ставим значение ячейки "я"
     Selection.Locked = False ' Отключаем свойство "Защищаемая ячейка"
     Selection.FormulaHidden = False
     With Selection.Interior ' Внешний видя ячейки
         .Pattern = xlNone
         .TintAndShade = 0
         .PatternTintAndShade = 0
     End With
      
     ' Ячейка D
     Range("D5").Select ' Выбираем ячейку
     Selection.ClearContents ' Очищаем содержимое выбранной ячейки
     Selection.Locked = False ' Отключаем свойство "Защищаемая ячейка"
     Selection.FormulaHidden = False
     With Selection.Interior ' Внешний видя ячейки
         .Pattern = xlNone
         .TintAndShade = 0
         .PatternTintAndShade = 0
     End With
      
     ' Ячейка E
     Range("E5").Select ' Выбираем ячейку
     Selection.ClearContents ' Очищаем содержимое выбранной ячейки
      
     ' Ячейка F
     Range("F5").Select ' Выбираем ячейку
     Selection.ClearContents ' Очищаем содержимое выбранной ячейки
      
     ' Ячейка G
     Range("G5").Select ' Выбираем ячейку
     ActiveCell.FormulaR1C1 = "-" ' Ставим значение ячейки "-"
      
     ' Ячейка H
     Range("H5").Select ' Выбираем ячейку
     ActiveCell.FormulaR1C1 = "0" ' Ставим значение ячейки "0"
      
     ' Ячейка I
     Range("I5").Select ' Выбираем ячейку
     Selection.ClearContents ' Очищаем содержимое выбранной ячейки
      
     ' Ячейка J
     Range("J5").Select ' Выбираем ячейку
     Selection.ClearContents ' Очищаем содержимое выбранной ячейки
     Selection.Locked = False ' Отключаем свойство "Защищаемая ячейка"
     Selection.FormulaHidden = False
     With Selection.Interior ' Внешний видя ячейки
         .Pattern = xlNone
         .TintAndShade = 0
         .PatternTintAndShade = 0
     End With

End Sub

Sub Макрос2()
'
' Защита добавленных клиентов
'

     ' Ячейка C
     Range("C9").Select ' Выбираем ячейку
     Selection.Locked = True ' Включаем свойство "Защищаемая ячейка"
     Selection.FormulaHidden = False
     With Selection.Interior ' Внешний видя ячейки
         .Pattern = xlSolid
         .PatternColorIndex = xlAutomatic
         .ThemeColor = xlThemeColorDark1
         .TintAndShade = -0.149998474074526
         .PatternTintAndShade = 0
     End With
      
     ' Ячейка D
     Range("D9").Select ' Выбираем ячейку
     Selection.Locked = True ' Включаем свойство "Защищаемая ячейка"
     Selection.FormulaHidden = False
     With Selection.Interior ' Внешний видя ячейки
         .Pattern = xlSolid
         .PatternColorIndex = xlAutomatic
         .ThemeColor = xlThemeColorDark1
         .TintAndShade = -0.149998474074526
         .PatternTintAndShade = 0
     End With
      
     ' Ячейка J
     Range("J9").Select ' Выбираем ячейку
     Selection.Locked = True ' Включаем свойство "Защищаемая ячейка"
     Selection.FormulaHidden = False
     With Selection.Interior ' Внешний видя ячейки
         .Pattern = xlSolid
         .PatternColorIndex = xlAutomatic
         .ThemeColor = xlThemeColorDark1
         .TintAndShade = -0.149998474074526
         .PatternTintAndShade = 0
     End With
End Sub
[/vba]
 
Ответить
СообщениеВроде набросал код, что надо сделать с ячейками. Остается вопрос, как подставить нужные номера ячеек.

[vba]
Код
Sub Макрос1()
'
' Удаление помеченных объектов
'

'
     ' Ячейка B
     Range("B5").Select ' Выбираем ячейку
     Selection.ClearContents ' Очищаем содержимое выбранной ячейки
      
     ' Ячейка C
     Range("C5").Select ' Выбираем ячейку
     ActiveCell.FormulaR1C1 = "я" ' Ставим значение ячейки "я"
     Selection.Locked = False ' Отключаем свойство "Защищаемая ячейка"
     Selection.FormulaHidden = False
     With Selection.Interior ' Внешний видя ячейки
         .Pattern = xlNone
         .TintAndShade = 0
         .PatternTintAndShade = 0
     End With
      
     ' Ячейка D
     Range("D5").Select ' Выбираем ячейку
     Selection.ClearContents ' Очищаем содержимое выбранной ячейки
     Selection.Locked = False ' Отключаем свойство "Защищаемая ячейка"
     Selection.FormulaHidden = False
     With Selection.Interior ' Внешний видя ячейки
         .Pattern = xlNone
         .TintAndShade = 0
         .PatternTintAndShade = 0
     End With
      
     ' Ячейка E
     Range("E5").Select ' Выбираем ячейку
     Selection.ClearContents ' Очищаем содержимое выбранной ячейки
      
     ' Ячейка F
     Range("F5").Select ' Выбираем ячейку
     Selection.ClearContents ' Очищаем содержимое выбранной ячейки
      
     ' Ячейка G
     Range("G5").Select ' Выбираем ячейку
     ActiveCell.FormulaR1C1 = "-" ' Ставим значение ячейки "-"
      
     ' Ячейка H
     Range("H5").Select ' Выбираем ячейку
     ActiveCell.FormulaR1C1 = "0" ' Ставим значение ячейки "0"
      
     ' Ячейка I
     Range("I5").Select ' Выбираем ячейку
     Selection.ClearContents ' Очищаем содержимое выбранной ячейки
      
     ' Ячейка J
     Range("J5").Select ' Выбираем ячейку
     Selection.ClearContents ' Очищаем содержимое выбранной ячейки
     Selection.Locked = False ' Отключаем свойство "Защищаемая ячейка"
     Selection.FormulaHidden = False
     With Selection.Interior ' Внешний видя ячейки
         .Pattern = xlNone
         .TintAndShade = 0
         .PatternTintAndShade = 0
     End With

End Sub

Sub Макрос2()
'
' Защита добавленных клиентов
'

     ' Ячейка C
     Range("C9").Select ' Выбираем ячейку
     Selection.Locked = True ' Включаем свойство "Защищаемая ячейка"
     Selection.FormulaHidden = False
     With Selection.Interior ' Внешний видя ячейки
         .Pattern = xlSolid
         .PatternColorIndex = xlAutomatic
         .ThemeColor = xlThemeColorDark1
         .TintAndShade = -0.149998474074526
         .PatternTintAndShade = 0
     End With
      
     ' Ячейка D
     Range("D9").Select ' Выбираем ячейку
     Selection.Locked = True ' Включаем свойство "Защищаемая ячейка"
     Selection.FormulaHidden = False
     With Selection.Interior ' Внешний видя ячейки
         .Pattern = xlSolid
         .PatternColorIndex = xlAutomatic
         .ThemeColor = xlThemeColorDark1
         .TintAndShade = -0.149998474074526
         .PatternTintAndShade = 0
     End With
      
     ' Ячейка J
     Range("J9").Select ' Выбираем ячейку
     Selection.Locked = True ' Включаем свойство "Защищаемая ячейка"
     Selection.FormulaHidden = False
     With Selection.Interior ' Внешний видя ячейки
         .Pattern = xlSolid
         .PatternColorIndex = xlAutomatic
         .ThemeColor = xlThemeColorDark1
         .TintAndShade = -0.149998474074526
         .PatternTintAndShade = 0
     End With
End Sub
[/vba]

Автор - nvk_ivan
Дата добавления - 24.11.2014 в 07:45
Rioran Дата: Понедельник, 24.11.2014, 10:01 | Сообщение № 5
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
nvk_ivan, предлагаю дополнить Ваш код следующими элементами:

1). Нахождение в таблице последней строки. Многие работают через Cells(Rows.Count, 1).End(xlUp).Row
2). Добавить For ... Next для перебора строк от второй до последней заполненной в таблице.
3). Для выбора вариантов действия можно использовать оператор If ... Then или Select Case

Предлагаю с сохранением в .TXT разобраться после успешного выполнения этих пунктов.

Кстати, Ваш первый макрос можно переписать так:

[vba]
Код
Sub Макрос1()
'
' Удаление с пятой строки
'
Range("B5, D5, E5, F5, I5, J5").Value = ""
Range("C5").Value = "я"
Range("G5").Value = "-"
Range("H5").Value = "0"

With Range("C5, D5, J5")
        .Locked = False
        .FormulaHidden = False
        .Interior.Pattern = xlNone
        .Interior.TintAndShade = 0
        .Interior.PatternTintAndShade = 0
End With

End Sub
[/vba]
Сам перебор строк. Допустим, Вы объявили переменную X, с помощью которой цикл For X = [Первая проверяемая строка] to [Последняя проверяемая строка] step 1 (...) Next X перебирает строки по очереди. Номер строки везде будет заменён на Х. Ваш первый макрос примет вид:

[vba]
Код
Sub Макрос1()
'
' Удаление всего подряд со 2-й по 10-ю строку
'
Dim X As Long 'Для перебора строк

For X = 2 To 10 Step 1
       Range("B" & X & ", D" & X & ", E" & X & ", F" & X & ", I" & X & ", J" & X).Value = ""
       Range("C" & X).Value = "я"
       Range("G" & X).Value = "-"
       Range("H" & X).Value = "0"
          
       With Range("C" & X & ", D" & X & ", J" & X)
           .Locked = False
           .FormulaHidden = False
           .Interior.Pattern = xlNone
           .Interior.TintAndShade = 0
           .Interior.PatternTintAndShade = 0
       End With
Next X

End Sub
[/vba]
Те же действия можно сделать более сложной и оптимальной (короткой) записью, но для начала работы с VBA стоит начать с избыточных записей для большего понимания происходящего.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279


Сообщение отредактировал Rioran - Понедельник, 24.11.2014, 15:15
 
Ответить
Сообщениеnvk_ivan, предлагаю дополнить Ваш код следующими элементами:

1). Нахождение в таблице последней строки. Многие работают через Cells(Rows.Count, 1).End(xlUp).Row
2). Добавить For ... Next для перебора строк от второй до последней заполненной в таблице.
3). Для выбора вариантов действия можно использовать оператор If ... Then или Select Case

Предлагаю с сохранением в .TXT разобраться после успешного выполнения этих пунктов.

Кстати, Ваш первый макрос можно переписать так:

[vba]
Код
Sub Макрос1()
'
' Удаление с пятой строки
'
Range("B5, D5, E5, F5, I5, J5").Value = ""
Range("C5").Value = "я"
Range("G5").Value = "-"
Range("H5").Value = "0"

With Range("C5, D5, J5")
        .Locked = False
        .FormulaHidden = False
        .Interior.Pattern = xlNone
        .Interior.TintAndShade = 0
        .Interior.PatternTintAndShade = 0
End With

End Sub
[/vba]
Сам перебор строк. Допустим, Вы объявили переменную X, с помощью которой цикл For X = [Первая проверяемая строка] to [Последняя проверяемая строка] step 1 (...) Next X перебирает строки по очереди. Номер строки везде будет заменён на Х. Ваш первый макрос примет вид:

[vba]
Код
Sub Макрос1()
'
' Удаление всего подряд со 2-й по 10-ю строку
'
Dim X As Long 'Для перебора строк

For X = 2 To 10 Step 1
       Range("B" & X & ", D" & X & ", E" & X & ", F" & X & ", I" & X & ", J" & X).Value = ""
       Range("C" & X).Value = "я"
       Range("G" & X).Value = "-"
       Range("H" & X).Value = "0"
          
       With Range("C" & X & ", D" & X & ", J" & X)
           .Locked = False
           .FormulaHidden = False
           .Interior.Pattern = xlNone
           .Interior.TintAndShade = 0
           .Interior.PatternTintAndShade = 0
       End With
Next X

End Sub
[/vba]
Те же действия можно сделать более сложной и оптимальной (короткой) записью, но для начала работы с VBA стоит начать с избыточных записей для большего понимания происходящего.

Автор - Rioran
Дата добавления - 24.11.2014 в 10:01
Wasilich Дата: Понедельник, 24.11.2014, 10:18 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Кстати, Ваш первый макрос можно переписать так:

Остается вопрос, как подставить нужные номера ячеек.
:)
Ага, добавил! Теперь мое сообщение лишнее. :D
А, к стати, где Cells(Cells.Count, 1).End(xlUp).Row ?


Сообщение отредактировал Wasilic - Понедельник, 24.11.2014, 10:26
 
Ответить
Сообщение
Кстати, Ваш первый макрос можно переписать так:

Остается вопрос, как подставить нужные номера ячеек.
:)
Ага, добавил! Теперь мое сообщение лишнее. :D
А, к стати, где Cells(Cells.Count, 1).End(xlUp).Row ?

Автор - Wasilich
Дата добавления - 24.11.2014 в 10:18
Rioran Дата: Понедельник, 24.11.2014, 10:43 | Сообщение № 7
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
где Cells(Rows.Count, 1).End(xlUp).Row ?

Возможно, его трудно заметить, но оно сидит вот в этой строке =)

[vba]
Код
For X = 2 To 10 Step 1
[/vba]
Подсказываю - приглядитесь к 10-ке повнимательнее =) Так как Иван попытался разобраться сам (уважаю) и написал свой собственный код - хочу поделиться не рыбой, но удочкой. В дальнейшем 10-ку (последняя строка для просмотра) нужно будет кое-на-что заменить.

UPD: Поправил Cells.Count на Rows.Count


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279


Сообщение отредактировал Rioran - Понедельник, 24.11.2014, 15:16
 
Ответить
Сообщение
где Cells(Rows.Count, 1).End(xlUp).Row ?

Возможно, его трудно заметить, но оно сидит вот в этой строке =)

[vba]
Код
For X = 2 To 10 Step 1
[/vba]
Подсказываю - приглядитесь к 10-ке повнимательнее =) Так как Иван попытался разобраться сам (уважаю) и написал свой собственный код - хочу поделиться не рыбой, но удочкой. В дальнейшем 10-ку (последняя строка для просмотра) нужно будет кое-на-что заменить.

UPD: Поправил Cells.Count на Rows.Count

Автор - Rioran
Дата добавления - 24.11.2014 в 10:43
Wasilich Дата: Понедельник, 24.11.2014, 10:55 | Сообщение № 8
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
Подсказываю - приглядитесь к 10-ке повнимательнее
Это мне? Ну спасибо! Только 10-ка, она и есть 10-ка, не больше и не меньше. :)
И по задаче, в цикле еще одно условие надо выполнить
[vba]
Код
  If Cells(x, 3) <> "" And Cells(x, 3) <> "я" Then
          Range("C" & x & ": D" & x).Interior.ColorIndex = 15
          Range("j" & x).Interior.ColorIndex = 15
     End If
[/vba]


Сообщение отредактировал Wasilic - Понедельник, 24.11.2014, 11:06
 
Ответить
Сообщение
Подсказываю - приглядитесь к 10-ке повнимательнее
Это мне? Ну спасибо! Только 10-ка, она и есть 10-ка, не больше и не меньше. :)
И по задаче, в цикле еще одно условие надо выполнить
[vba]
Код
  If Cells(x, 3) <> "" And Cells(x, 3) <> "я" Then
          Range("C" & x & ": D" & x).Interior.ColorIndex = 15
          Range("j" & x).Interior.ColorIndex = 15
     End If
[/vba]

Автор - Wasilich
Дата добавления - 24.11.2014 в 10:55
nvk_ivan Дата: Вторник, 25.11.2014, 04:33 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 7
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Ну вроде всё получилось. Всем огромное спасибо за помощь.

[vba]
Код
'
' Удаляем клиентов помеченных на удаление
'
  Dim X As Long 'Переменная для перебора
  Dim Y As Long 'Переменная определяющая последнюю строку
  Y = Cells(Rows.Count, 1).End(xlUp).Row 'Определяем последнюю строку

'Начинаем цикл
For X = 2 To Y Step 1
  'Если значение второго столбца "УДАЛИТЬ"
  If Cells(X, 2) = "УДАЛИТЬ" Then
   'То
         Range("B" & X & ", D" & X & ", E" & X & ", F" & X & ", I" & X & ", J" & X).Value = "" 'Очищаем столбцы "B", "D", "E", "F", "I", "J"
   Range("C" & X).Value = "я" 'В столбце "C" ставим значение "я"
   Range("G" & X).Value = "-" 'В столбце "G" ставим значение "-"
   Range("H" & X).Value = "0" 'В столбце "H" ставим значение "0"
         'Снимаем свойство защищаемая ячейка и убрать заливку со столбцов "C", "D", "J"  
   With Range("C" & X & ", D" & X & ", J" & X)
    .Locked = False
    .FormulaHidden = False
    .Interior.Pattern = xlNone
    .Interior.TintAndShade = 0
    .Interior.PatternTintAndShade = 0
   End With
  End If
'Иначе переходим к следующей строке
Next X

End Sub

Sub Макрос2()
'
' Защита добавленных клиентов
'
  Dim X As Long 'Переменная для перебора
  Dim Y As Long 'Переменная определяющая последнюю строку
  Y = Cells(Rows.Count, 1).End(xlUp).Row 'Определяем последнюю строку

'Начинаем цикл
For X = 2 To Y Step 1
  'Если значение третьего столбца отличается от "я" и не пустое
  If Cells(x, 3) <> "" And Cells(x, 3) <> "я" Then
   'То cтавим свойство защищаемая ячейка и делаем заливку ячеек "C", "D", "J"  
   With Range("C" & X & ", D" & X & ", J" & X)
    .Locked = True
    .FormulaHidden = True
    .Interior.Pattern = xlSolid
    .Interior.PatternColorIndex = xlAutomatic
    .Interior.ThemeColor = xlThemeColorDark1
    .Interior.TintAndShade = -0.149998474074526
    .Interior.PatternTintAndShade = 0
   End With
  End If
'Иначе переходим к следующей строке
Next X

End Sub
[/vba]
 
Ответить
СообщениеНу вроде всё получилось. Всем огромное спасибо за помощь.

[vba]
Код
'
' Удаляем клиентов помеченных на удаление
'
  Dim X As Long 'Переменная для перебора
  Dim Y As Long 'Переменная определяющая последнюю строку
  Y = Cells(Rows.Count, 1).End(xlUp).Row 'Определяем последнюю строку

'Начинаем цикл
For X = 2 To Y Step 1
  'Если значение второго столбца "УДАЛИТЬ"
  If Cells(X, 2) = "УДАЛИТЬ" Then
   'То
         Range("B" & X & ", D" & X & ", E" & X & ", F" & X & ", I" & X & ", J" & X).Value = "" 'Очищаем столбцы "B", "D", "E", "F", "I", "J"
   Range("C" & X).Value = "я" 'В столбце "C" ставим значение "я"
   Range("G" & X).Value = "-" 'В столбце "G" ставим значение "-"
   Range("H" & X).Value = "0" 'В столбце "H" ставим значение "0"
         'Снимаем свойство защищаемая ячейка и убрать заливку со столбцов "C", "D", "J"  
   With Range("C" & X & ", D" & X & ", J" & X)
    .Locked = False
    .FormulaHidden = False
    .Interior.Pattern = xlNone
    .Interior.TintAndShade = 0
    .Interior.PatternTintAndShade = 0
   End With
  End If
'Иначе переходим к следующей строке
Next X

End Sub

Sub Макрос2()
'
' Защита добавленных клиентов
'
  Dim X As Long 'Переменная для перебора
  Dim Y As Long 'Переменная определяющая последнюю строку
  Y = Cells(Rows.Count, 1).End(xlUp).Row 'Определяем последнюю строку

'Начинаем цикл
For X = 2 To Y Step 1
  'Если значение третьего столбца отличается от "я" и не пустое
  If Cells(x, 3) <> "" And Cells(x, 3) <> "я" Then
   'То cтавим свойство защищаемая ячейка и делаем заливку ячеек "C", "D", "J"  
   With Range("C" & X & ", D" & X & ", J" & X)
    .Locked = True
    .FormulaHidden = True
    .Interior.Pattern = xlSolid
    .Interior.PatternColorIndex = xlAutomatic
    .Interior.ThemeColor = xlThemeColorDark1
    .Interior.TintAndShade = -0.149998474074526
    .Interior.PatternTintAndShade = 0
   End With
  End If
'Иначе переходим к следующей строке
Next X

End Sub
[/vba]

Автор - nvk_ivan
Дата добавления - 25.11.2014 в 04:33
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос для обработки строк в зависимости от значения столбца (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!