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

Вход

Регистрация

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

 

= Мир MS Excel/Условное форматирование или макрос для ячейки - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Условное форматирование или макрос для ячейки (Макросы Sub)
Условное форматирование или макрос для ячейки
Постовой Дата: Понедельник, 16.12.2013, 13:29 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 39
Репутация: 0 ±
Замечаний: 40% ±

Excel 2013
Доброго времени суток! Подскажите пожалуйста:
Пример: Есть множество ячеек пусть это будет А1:J10 так вот пусть на всех не определен формат, пусть он будет общий, но допустим в ячейке В2 в вне зависимости от того на каком языке сейчас находится клавиатура при заполнении выполнялся следующий алгоритм: 4 буква на Engl пробел и 7 цифр. тоесть я допустим набираю(пусть был на кирилице) "кявг9988522" а в данной ячейке отображается следующим образом "RZDU 9988522"
Просто у меня форма для ведения статистики по контейнерным перевозкам и мне в одной ячейке для заполнения постоянно приходится переводить язык, потом регистр, пробел и цыфры. Хотелось бы упростить задачу так как все остальное на кирилице. Заранее благодарен PS
 
Ответить
СообщениеДоброго времени суток! Подскажите пожалуйста:
Пример: Есть множество ячеек пусть это будет А1:J10 так вот пусть на всех не определен формат, пусть он будет общий, но допустим в ячейке В2 в вне зависимости от того на каком языке сейчас находится клавиатура при заполнении выполнялся следующий алгоритм: 4 буква на Engl пробел и 7 цифр. тоесть я допустим набираю(пусть был на кирилице) "кявг9988522" а в данной ячейке отображается следующим образом "RZDU 9988522"
Просто у меня форма для ведения статистики по контейнерным перевозкам и мне в одной ячейке для заполнения постоянно приходится переводить язык, потом регистр, пробел и цыфры. Хотелось бы упростить задачу так как все остальное на кирилице. Заранее благодарен PS

Автор - Постовой
Дата добавления - 16.12.2013 в 13:29
igrtsk Дата: Понедельник, 16.12.2013, 14:58 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 314
Репутация: 50 ±
Замечаний: 0% ±

Excel 2016
Ответ нмой е связан с макросами, но полагаю, что программа Punto Switcher вас здорово выручит: набрали в кириллице, шлепнули по клавише Break - раскладка изменилась (если в ручном режиме), если функцию автоматического переключения раскладки изменить. Ну а регистр - это уже ваша будет забота


Инструктор по применению лосей в кавалерийских частях РККА
 
Ответить
СообщениеОтвет нмой е связан с макросами, но полагаю, что программа Punto Switcher вас здорово выручит: набрали в кириллице, шлепнули по клавише Break - раскладка изменилась (если в ручном режиме), если функцию автоматического переключения раскладки изменить. Ну а регистр - это уже ваша будет забота

Автор - igrtsk
Дата добавления - 16.12.2013 в 14:58
RAN Дата: Понедельник, 16.12.2013, 15:29 | Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Массивы раскладок и контролируемый диапазон прописывайте самостоятельно

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
      If Target.Address(0, 0) <> "A2" Then Exit Sub
      Application.EnableEvents = False
      arrRus = Array("к", "я", "в", "г")
      arrEng = Array("r", "z", "d", "u")
      strc = Left$(LCase(Target.Text), 4)
      For i = 1 To 4
          If strc Like "*[а-я]*" Then
              For j = LBound(arrRus) To UBound(arrRus)
                  If Mid$(strc, i, 1) = arrRus(j) Then
                  Mid$(strc, i, 1) = arrEng(j)
                  Exit For
                  End If
              Next
          End If
      Next
      Target = UCase(strc) & " " & Right$(LCase(Cells(2, 1).Text), 7)
      Application.EnableEvents = True
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Понедельник, 16.12.2013, 15:29
 
Ответить
СообщениеМассивы раскладок и контролируемый диапазон прописывайте самостоятельно

[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
      If Target.Address(0, 0) <> "A2" Then Exit Sub
      Application.EnableEvents = False
      arrRus = Array("к", "я", "в", "г")
      arrEng = Array("r", "z", "d", "u")
      strc = Left$(LCase(Target.Text), 4)
      For i = 1 To 4
          If strc Like "*[а-я]*" Then
              For j = LBound(arrRus) To UBound(arrRus)
                  If Mid$(strc, i, 1) = arrRus(j) Then
                  Mid$(strc, i, 1) = arrEng(j)
                  Exit For
                  End If
              Next
          End If
      Next
      Target = UCase(strc) & " " & Right$(LCase(Cells(2, 1).Text), 7)
      Application.EnableEvents = True
End Sub
[/vba]

Автор - RAN
Дата добавления - 16.12.2013 в 15:29
Wasilich Дата: Понедельник, 16.12.2013, 15:35 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1232
Репутация: 326 ±
Замечаний: 0% ±

2003
допустим набираю(пусть был на кирилице) "кявг9988522" а в данной ячейке отображается следующим образом "RZDU 9988522"

А может так пойдет?
Только вот с пробелом не заморочивался. Я понимаю что нажать пробел это сложно, но уж извините. :)
К сообщению приложен файл: _____.xls (26.0 Kb)


Сообщение отредактировал Wasilic - Понедельник, 16.12.2013, 15:36
 
Ответить
Сообщение
допустим набираю(пусть был на кирилице) "кявг9988522" а в данной ячейке отображается следующим образом "RZDU 9988522"

А может так пойдет?
Только вот с пробелом не заморочивался. Я понимаю что нажать пробел это сложно, но уж извините. :)

Автор - Wasilich
Дата добавления - 16.12.2013 в 15:35
Постовой Дата: Понедельник, 16.12.2013, 21:43 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 39
Репутация: 0 ±
Замечаний: 40% ±

Excel 2013
Для наглядности наверное приложу ка я файл, а на листе "ФОРМА ЗАПОЛНЕНИЯ" зеленым цветом обозначу нужную ячейку!!!!
RAN подсоби еще плз ни как привязать немогу к своему примеру.
К сообщению приложен файл: ______.xlsm (64.9 Kb)
 
Ответить
СообщениеДля наглядности наверное приложу ка я файл, а на листе "ФОРМА ЗАПОЛНЕНИЯ" зеленым цветом обозначу нужную ячейку!!!!
RAN подсоби еще плз ни как привязать немогу к своему примеру.

Автор - Постовой
Дата добавления - 16.12.2013 в 21:43
Постовой Дата: Понедельник, 16.12.2013, 21:46 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 39
Репутация: 0 ±
Замечаний: 40% ±

Excel 2013
Сори не выделил, но это ячейка (R16;C3) на sheet("ФОРМА ЗАПОЛНЕНИЯ")
 
Ответить
СообщениеСори не выделил, но это ячейка (R16;C3) на sheet("ФОРМА ЗАПОЛНЕНИЯ")

Автор - Постовой
Дата добавления - 16.12.2013 в 21:46
RAN Дата: Понедельник, 16.12.2013, 21:58 | Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
     If Target(1).Address(0, 0) <> "C16" Then Exit Sub
     Application.EnableEvents = False
     arrRus = Array("к", "я", "в", "г")
     arrEng = Array("r", "z", "d", "u")
     strc = Left$(LCase(Target(1).Text), 4)
     For i = 1 To 4
         If strc Like "*[а-я]*" Then
             For j = LBound(arrRus) To UBound(arrRus)
                 If Mid$(strc, i, 1) = arrRus(j) Then
                     Mid$(strc, i, 1) = arrEng(j)
                     Exit For
                 End If
             Next
         End If
     Next
     Target(1) = UCase(strc) & " " & Right$(LCase(Target(1).Text), 7)
     Application.EnableEvents = True
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
     If Target(1).Address(0, 0) <> "C16" Then Exit Sub
     Application.EnableEvents = False
     arrRus = Array("к", "я", "в", "г")
     arrEng = Array("r", "z", "d", "u")
     strc = Left$(LCase(Target(1).Text), 4)
     For i = 1 To 4
         If strc Like "*[а-я]*" Then
             For j = LBound(arrRus) To UBound(arrRus)
                 If Mid$(strc, i, 1) = arrRus(j) Then
                     Mid$(strc, i, 1) = arrEng(j)
                     Exit For
                 End If
             Next
         End If
     Next
     Target(1) = UCase(strc) & " " & Right$(LCase(Target(1).Text), 7)
     Application.EnableEvents = True
End Sub
[/vba]

Автор - RAN
Дата добавления - 16.12.2013 в 21:58
Постовой Дата: Вторник, 17.12.2013, 08:02 | Сообщение № 8
Группа: Пользователи
Ранг: Новичок
Сообщений: 39
Репутация: 0 ±
Замечаний: 40% ±

Excel 2013
Я извеняюсь конечно, не силен в таких вещах пока что, но вот создаю модуль, прописываю данный код и все - И программа вообще перестает отзываться. Попробуйте, Файл у меня выше выложен, это самый сокращенный вариант который есть.
 
Ответить
СообщениеЯ извеняюсь конечно, не силен в таких вещах пока что, но вот создаю модуль, прописываю данный код и все - И программа вообще перестает отзываться. Попробуйте, Файл у меня выше выложен, это самый сокращенный вариант который есть.

Автор - Постовой
Дата добавления - 17.12.2013 в 08:02
anvg Дата: Вторник, 17.12.2013, 09:59 | Сообщение № 9
Группа: Друзья
Ранг: Ветеран
Сообщений: 581
Репутация: 271 ±
Замечаний: 0% ±

2016, 365
Вариант
К сообщению приложен файл: _to.xlsb (15.8 Kb)


Сообщение отредактировал anvg - Вторник, 17.12.2013, 10:04
 
Ответить
СообщениеВариант

Автор - anvg
Дата добавления - 17.12.2013 в 09:59
Постовой Дата: Вторник, 17.12.2013, 13:42 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 39
Репутация: 0 ±
Замечаний: 40% ±

Excel 2013
Anvq понимаю, итак многое сделано, только если можно немного пояснений, я что бы не просто так с потолка, а что бы немного понимать. Если конечно незатруднит. Заранее спасибо!
 
Ответить
СообщениеAnvq понимаю, итак многое сделано, только если можно немного пояснений, я что бы не просто так с потолка, а что бы немного понимать. Если конечно незатруднит. Заранее спасибо!

Автор - Постовой
Дата добавления - 17.12.2013 в 13:42
RAN Дата: Вторник, 17.12.2013, 14:35 | Сообщение № 11
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
но вот создаю модуль

Поэтому и перестает.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
[/vba]
работает только в модуле соответствующего листа


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
но вот создаю модуль

Поэтому и перестает.
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
[/vba]
работает только в модуле соответствующего листа

Автор - RAN
Дата добавления - 17.12.2013 в 14:35
Постовой Дата: Вторник, 17.12.2013, 17:48 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 39
Репутация: 0 ±
Замечаний: 40% ±

Excel 2013
Поэтому и перестает.

Так а по нагляднее можно, так сказать для особо одаренных :)
 
Ответить
Сообщение
Поэтому и перестает.

Так а по нагляднее можно, так сказать для особо одаренных :)

Автор - Постовой
Дата добавления - 17.12.2013 в 17:48
RAN Дата: Вторник, 17.12.2013, 21:10 | Сообщение № 13
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
:(
К сообщению приложен файл: 9442698.xlsm (67.1 Kb)


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение:(

Автор - RAN
Дата добавления - 17.12.2013 в 21:10
Постовой Дата: Вторник, 17.12.2013, 22:00 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 39
Репутация: 0 ±
Замечаний: 40% ±

Excel 2013
Спасибо огромное!!!! но для меня обьясните если не затруднит почему "If Target(1).Address(0, 0) <> "C16" Then Exit Sub " и вообще как прочитать ету строку. Я просто имею еще множество подобных примеров различающихся только количеством букв, мне понять алгоритмЮ ведь не все же домагать по одинаковым примерам :D
 
Ответить
СообщениеСпасибо огромное!!!! но для меня обьясните если не затруднит почему "If Target(1).Address(0, 0) <> "C16" Then Exit Sub " и вообще как прочитать ету строку. Я просто имею еще множество подобных примеров различающихся только количеством букв, мне понять алгоритмЮ ведь не все же домагать по одинаковым примерам :D

Автор - Постовой
Дата добавления - 17.12.2013 в 22:00
RAN Дата: Вторник, 17.12.2013, 22:29 | Сообщение № 15
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Потому,что:
1. у вас имеется MergeCell (объединенная ячейка), что в переводе на русский язык означает - фу, какая мерзость.
2. эта объединенная ячейка при изменении воспринимается как диапазон (Target) с адресом C16:G16.
3. значение меняется только в первой ячейке (Target(1)) с адресом С16.
4. если адрес первой ячейки изменяемого диапазона не С16 - выходим из процедуры.
5. по поводу address(0,0) - вставьте указатель мыши в середину слова address, нажмите F1, и читайте... :)


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеПотому,что:
1. у вас имеется MergeCell (объединенная ячейка), что в переводе на русский язык означает - фу, какая мерзость.
2. эта объединенная ячейка при изменении воспринимается как диапазон (Target) с адресом C16:G16.
3. значение меняется только в первой ячейке (Target(1)) с адресом С16.
4. если адрес первой ячейки изменяемого диапазона не С16 - выходим из процедуры.
5. по поводу address(0,0) - вставьте указатель мыши в середину слова address, нажмите F1, и читайте... :)

Автор - RAN
Дата добавления - 17.12.2013 в 22:29
Постовой Дата: Среда, 18.12.2013, 02:46 | Сообщение № 16
Группа: Пользователи
Ранг: Новичок
Сообщений: 39
Репутация: 0 ±
Замечаний: 40% ±

Excel 2013
Блин - САПАСИБО!!!!!! Доволен и удовлетворен :)
Маленький вопрос на последок а почему Ваш вариант и вариант товарища Anvq имеют разный код, действие то выполняется одно?????
 
Ответить
СообщениеБлин - САПАСИБО!!!!!! Доволен и удовлетворен :)
Маленький вопрос на последок а почему Ваш вариант и вариант товарища Anvq имеют разный код, действие то выполняется одно?????

Автор - Постовой
Дата добавления - 18.12.2013 в 02:46
RAN Дата: Среда, 18.12.2013, 03:21 | Сообщение № 17
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
А вы не знаете, сколько марок автомобилей существует?
A действие-то выполняется одно - едут. :D


Быть или не быть, вот в чем загвоздка!

Сообщение отредактировал RAN - Среда, 18.12.2013, 07:43
 
Ответить
СообщениеА вы не знаете, сколько марок автомобилей существует?
A действие-то выполняется одно - едут. :D

Автор - RAN
Дата добавления - 18.12.2013 в 03:21
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Условное форматирование или макрос для ячейки (Макросы Sub)
  • Страница 1 из 1
  • 1
Поиск:

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