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

Вход

Регистрация

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

 

= Мир MS Excel/Дизайн постов - Страница 7 - Мир MS Excel

Старая форма входа
Дизайн постов
nerv Дата: Среда, 04.01.2012, 10:38 | Сообщение № 121
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Репутация: 193 ±
Замечаний: 0% ±

Alex_ST, ага) подразумевается поиск по регулярному выражению, только критериев поиска может быть несколько) Можно ли произвести замену по условию или в VB нельзя?


Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


YM 41001156540584 / WM WMR R21924176233

https://github.com/nervgh/vba
 
Ответить
СообщениеAlex_ST, ага) подразумевается поиск по регулярному выражению, только критериев поиска может быть несколько) Можно ли произвести замену по условию или в VB нельзя?

Автор - nerv
Дата добавления - 04.01.2012 в 10:38
nerv Дата: Среда, 04.01.2012, 10:38 | Сообщение № 122
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Репутация: 193 ±
Замечаний: 0% ±

Serge_007, спасибо за мнение) Я даж и не знаю, где спрашивать, чтобы отвечали. Вот здесь вопрос задал, а по существую ответил только ты smile Поменял цвета на "родные". Смотрим здесь http://www.excelworld.ru/forum/5-72-13312-16-1325524132 Строки сделал потемнее. Лучше хуже, твое мнение?

Quote (Serge_007)
Я уж думаю - может отдельную тему создать?

Даже не знаю... Если людям не интересно, то они ни в какой отвечать не будут.


Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


YM 41001156540584 / WM WMR R21924176233

https://github.com/nervgh/vba


Сообщение отредактировал nerv - Вторник, 03.01.2012, 10:11
 
Ответить
СообщениеSerge_007, спасибо за мнение) Я даж и не знаю, где спрашивать, чтобы отвечали. Вот здесь вопрос задал, а по существую ответил только ты smile Поменял цвета на "родные". Смотрим здесь http://www.excelworld.ru/forum/5-72-13312-16-1325524132 Строки сделал потемнее. Лучше хуже, твое мнение?

Quote (Serge_007)
Я уж думаю - может отдельную тему создать?

Даже не знаю... Если людям не интересно, то они ни в какой отвечать не будут.

Автор - nerv
Дата добавления - 04.01.2012 в 10:38
Alex_ST Дата: Среда, 04.01.2012, 10:38 | Сообщение № 123
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3213
Репутация: 609 ±
Замечаний: 0% ±

2003
nerv, я не сразу допер, что это ты, наверное, пытаешься прикрутить для выделения цветом слов в коде VBE… Тогда жди Володю.
И проясни, что ты имел в виду в фразе
Quote (nerv)
вариантов подмены может быть несколько
по какому критерию должен выбираться конкретный вариант?



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
Сообщениеnerv, я не сразу допер, что это ты, наверное, пытаешься прикрутить для выделения цветом слов в коде VBE… Тогда жди Володю.
И проясни, что ты имел в виду в фразе
Quote (nerv)
вариантов подмены может быть несколько
по какому критерию должен выбираться конкретный вариант?

Автор - Alex_ST
Дата добавления - 04.01.2012 в 10:38
Serge_007 Дата: Среда, 04.01.2012, 10:38 | Сообщение № 124
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (nerv)
твое мнение?

Мне нравится.


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (nerv)
твое мнение?

Мне нравится.

Автор - Serge_007
Дата добавления - 04.01.2012 в 10:38
v__step Дата: Среда, 04.01.2012, 10:38 | Сообщение № 125
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 27 ±
Замечаний: 0% ±

Лёша, привет!
Quote (Alex_ST)
изменение на листе гульки IgnoreCase сразу вызывало пересчёт
Это мы сделаем по-другому: в процедуру реакции на изменение галочки добавим только одну новую строчку: Application.Calculate - пересчет всех формул во всех открытых книгах гарантирован!
Но только не волотильность!


С уважением, Владимир

Сообщение отредактировал v__step - Воскресенье, 01.01.2012, 23:32
 
Ответить
СообщениеЛёша, привет!
Quote (Alex_ST)
изменение на листе гульки IgnoreCase сразу вызывало пересчёт
Это мы сделаем по-другому: в процедуру реакции на изменение галочки добавим только одну новую строчку: Application.Calculate - пересчет всех формул во всех открытых книгах гарантирован!
Но только не волотильность!

Автор - v__step
Дата добавления - 04.01.2012 в 10:38
nerv Дата: Среда, 04.01.2012, 10:38 | Сообщение № 126
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Репутация: 193 ±
Замечаний: 0% ±

Quote (Serge_007)
Мне нравится.

Благодарю) Признаться, я поменял почти все стили, а не только выделение слов/текста/комментариев. По совету RAN'а сделал чуть более явную рамку, но в месте с тем оставил небольшое реагирование. Полосу с номерами сделал потемнее, как и сами номера. Пожалуй, я с тобой солидарен, так лучше smile Попытался посмотреть в Opera, так она не захотела новые стили показывать! Пришлось вручную куки чистить...


Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


YM 41001156540584 / WM WMR R21924176233

https://github.com/nervgh/vba
 
Ответить
Сообщение
Quote (Serge_007)
Мне нравится.

Благодарю) Признаться, я поменял почти все стили, а не только выделение слов/текста/комментариев. По совету RAN'а сделал чуть более явную рамку, но в месте с тем оставил небольшое реагирование. Полосу с номерами сделал потемнее, как и сами номера. Пожалуй, я с тобой солидарен, так лучше smile Попытался посмотреть в Opera, так она не захотела новые стили показывать! Пришлось вручную куки чистить...

Автор - nerv
Дата добавления - 04.01.2012 в 10:38
nerv Дата: Среда, 04.01.2012, 10:38 | Сообщение № 127
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Репутация: 193 ±
Замечаний: 0% ±

Quote (Alex_ST)
я не сразу допер, что это ты

Да там вроде ник мой и ава на пол экрана yes

Quote (Alex_ST)
наверное, пытаешься прикрутить для выделения цветом слов в коде VBE…

Не, там вопрос вроде как решен. Если интересно, рега получилась вот такая (см. ниже). Знаки доллара $ решил не выделять.
global = true
".*?"|\b(?:Abs|Access|Alias|And|AppActivate|Array|As|Asc|AscB|AscW|Atn|Base|Beep|Binary|Boolean|ByRef|Byte|ByVal|Call|CallByName|Case|CBool| CByte|CCur|CDate|CDbl|CDec|ChDir|ChDrive|Choose|Chr|ChrB|ChrW|CInt|CLng|Close|Command|Compare|Const|Cos|CreateObject|CSng|CStr|CurDir|Curren cy|CVar|CVDate|CVErr|Database|Date|DateAdd|DateDiff|DatePart|DateSerial|DateValue|Day|DDB|Decimal|Declare|Dim|Dir|Do|DoEvents|Double|Each|El se|ElseIf|Empty|End|Environ|EOF|Eqv|Erl|Error|Exit|Exp|Explicit|False|FileAttr|FileCopy|FileDateTime|FileLen|Filter|Fix|For|Format|FormatCur rency|FormatDateTime|FormatNumber|FormatPercent|FreeFile|Function|FV|Get|GetAllSettings|GetAttr|GetObject|GetSetting|Global|GoSub|GoTo|Hex|H our|If|IIf|IMEStatus|Imp|Input|InputB|InputBox|InStr|InStrB|InstrRev|In|Int|Integer|IPmt|IRR|Is|IsArray|IsDate|IsEmpty|IsError|IsMissing|IsN ull|IsNumeric|IsObject|Join|Kill|LBound|LCase|Left|LeftB|Len|LenB|Let|Lib|Like|LoadPicture|LoadResData|LoadResPicture|LoadResString|Loc|Lock |LOF|Log|Long|Loop|LTrim|MacId|MacScript|Mid|MidB|Minute|MIRR|MkDir|Month|MonthName|New|Next|Not|Nothing|Now|NPer|NPV|Null|Object|ObjPtr|Oct |On|Open|Option|Optional|Or|Output|Param|Partition|Pmt|PPmt|Print|Private|Property|Public|Put|QBColor|Rate|Replace|Reset|Resume|Return|RGB|R ight|RightB|RmDir|Rnd|Round|RTrim|Second|Seek|Select|SendKeys|Set|SetAttr|Sgn|Shell|Sin|Single|SLN|Space|Spc|Split|Sqr|Static|Stop|Str|StrCo mp|StrConv|String|StrPtr|StrReverse|Sub|Switch|SYD|Tab|Tan|Then|Time|Timer|TimeSerial|TimeValue|To|Trim|True|Type|TypeName|TypeOf|UBound|UCa se|Unlock|Until|Val|Variant|VarPtr|VarType|Weekday|WeekdayName|Wend|While|With|WithEvents|Xor|Year)\b\$?|'.*$

Quote (Alex_ST)
по какому критерию должен выбираться конкретный вариант?

Допустим рега такая: [1-5]|[6-9]
А при замене я просто бы указывал условия: If найдено < 6 Then меняем_на_одно Else меняем_на_другое
Такое возможно в VB?


Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


YM 41001156540584 / WM WMR R21924176233

https://github.com/nervgh/vba


Сообщение отредактировал nerv - Понедельник, 02.01.2012, 12:16
 
Ответить
Сообщение
Quote (Alex_ST)
я не сразу допер, что это ты

Да там вроде ник мой и ава на пол экрана yes

Quote (Alex_ST)
наверное, пытаешься прикрутить для выделения цветом слов в коде VBE…

Не, там вопрос вроде как решен. Если интересно, рега получилась вот такая (см. ниже). Знаки доллара $ решил не выделять.
global = true
".*?"|\b(?:Abs|Access|Alias|And|AppActivate|Array|As|Asc|AscB|AscW|Atn|Base|Beep|Binary|Boolean|ByRef|Byte|ByVal|Call|CallByName|Case|CBool| CByte|CCur|CDate|CDbl|CDec|ChDir|ChDrive|Choose|Chr|ChrB|ChrW|CInt|CLng|Close|Command|Compare|Const|Cos|CreateObject|CSng|CStr|CurDir|Curren cy|CVar|CVDate|CVErr|Database|Date|DateAdd|DateDiff|DatePart|DateSerial|DateValue|Day|DDB|Decimal|Declare|Dim|Dir|Do|DoEvents|Double|Each|El se|ElseIf|Empty|End|Environ|EOF|Eqv|Erl|Error|Exit|Exp|Explicit|False|FileAttr|FileCopy|FileDateTime|FileLen|Filter|Fix|For|Format|FormatCur rency|FormatDateTime|FormatNumber|FormatPercent|FreeFile|Function|FV|Get|GetAllSettings|GetAttr|GetObject|GetSetting|Global|GoSub|GoTo|Hex|H our|If|IIf|IMEStatus|Imp|Input|InputB|InputBox|InStr|InStrB|InstrRev|In|Int|Integer|IPmt|IRR|Is|IsArray|IsDate|IsEmpty|IsError|IsMissing|IsN ull|IsNumeric|IsObject|Join|Kill|LBound|LCase|Left|LeftB|Len|LenB|Let|Lib|Like|LoadPicture|LoadResData|LoadResPicture|LoadResString|Loc|Lock |LOF|Log|Long|Loop|LTrim|MacId|MacScript|Mid|MidB|Minute|MIRR|MkDir|Month|MonthName|New|Next|Not|Nothing|Now|NPer|NPV|Null|Object|ObjPtr|Oct |On|Open|Option|Optional|Or|Output|Param|Partition|Pmt|PPmt|Print|Private|Property|Public|Put|QBColor|Rate|Replace|Reset|Resume|Return|RGB|R ight|RightB|RmDir|Rnd|Round|RTrim|Second|Seek|Select|SendKeys|Set|SetAttr|Sgn|Shell|Sin|Single|SLN|Space|Spc|Split|Sqr|Static|Stop|Str|StrCo mp|StrConv|String|StrPtr|StrReverse|Sub|Switch|SYD|Tab|Tan|Then|Time|Timer|TimeSerial|TimeValue|To|Trim|True|Type|TypeName|TypeOf|UBound|UCa se|Unlock|Until|Val|Variant|VarPtr|VarType|Weekday|WeekdayName|Wend|While|With|WithEvents|Xor|Year)\b\$?|'.*$

Quote (Alex_ST)
по какому критерию должен выбираться конкретный вариант?

Допустим рега такая: [1-5]|[6-9]
А при замене я просто бы указывал условия: If найдено < 6 Then меняем_на_одно Else меняем_на_другое
Такое возможно в VB?

Автор - nerv
Дата добавления - 04.01.2012 в 10:38
Serge_007 Дата: Среда, 04.01.2012, 10:38 | Сообщение № 128
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (nerv)
Попытался посмотреть в Opera, так она не захотела новые стили показывать! Пришлось вручную куки чистить

Странно...
Проверил и в опере и в хроме - всё ок.

ЗЫ Тему новую создай, я в неё всё что касается твоей разработки скомпилирую.


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (nerv)
Попытался посмотреть в Opera, так она не захотела новые стили показывать! Пришлось вручную куки чистить

Странно...
Проверил и в опере и в хроме - всё ок.

ЗЫ Тему новую создай, я в неё всё что касается твоей разработки скомпилирую.

Автор - Serge_007
Дата добавления - 04.01.2012 в 10:38
v__step Дата: Среда, 04.01.2012, 10:38 | Сообщение № 129
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 27 ±
Замечаний: 0% ±

Добрый день!
Приношу извинения всем (особенно, Вам, уважаемый Nerv) за невразумительные ответы на дружественной ветке в новогоднюю ночь - дело не в водке, а в манере - вовремя уйти в сторону, если человек начинает сам до всего догадываться
Ладно, по делу
Если я правильно понял, вопрос - о цепочке замен в тексте, который может быть разбит на множество 3-х видов подстрок (плюс пробелы и т.п.): vbaKey; vbaText; vbaComment (первые две подстроки "перемешаны")
Имеется шаблон поиска, по которому можно найти все вхождения
Речь идет об одном шаблоне замены, по которому должны быть заменены все найденные вхождения во всем тексте. Вот так:
1) vbaKey >> <span class=\"vbaKey\">vbaKey</span>
2) vbaText >> <span class=\"vbaText\">vbaText</span>
3) vbaComment >> <span class=\"vbaComment\">vbaComment</span>


С уважением, Владимир

Сообщение отредактировал v__step - Понедельник, 02.01.2012, 12:10
 
Ответить
СообщениеДобрый день!
Приношу извинения всем (особенно, Вам, уважаемый Nerv) за невразумительные ответы на дружественной ветке в новогоднюю ночь - дело не в водке, а в манере - вовремя уйти в сторону, если человек начинает сам до всего догадываться
Ладно, по делу
Если я правильно понял, вопрос - о цепочке замен в тексте, который может быть разбит на множество 3-х видов подстрок (плюс пробелы и т.п.): vbaKey; vbaText; vbaComment (первые две подстроки "перемешаны")
Имеется шаблон поиска, по которому можно найти все вхождения
Речь идет об одном шаблоне замены, по которому должны быть заменены все найденные вхождения во всем тексте. Вот так:
1) vbaKey >> <span class=\"vbaKey\">vbaKey</span>
2) vbaText >> <span class=\"vbaText\">vbaText</span>
3) vbaComment >> <span class=\"vbaComment\">vbaComment</span>

Автор - v__step
Дата добавления - 04.01.2012 в 10:38
nerv Дата: Среда, 04.01.2012, 10:38 | Сообщение № 130
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Репутация: 193 ±
Замечаний: 0% ±

v__step, добрый) Думаю, Вам не за что извиняться smile

Quote (v__step)
вопрос - о цепочке замен в тексте, который может быть разбит на множество 3-х видов подстрок

Так и есть

Quote (v__step)
Имеется шаблон поиска, по которому можно найти все вхождения

ага

Quote (v__step)
Речь идет об одном шаблоне замены

Неа) о трех шаблонах, в зависимости от того, что нашли.


Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


YM 41001156540584 / WM WMR R21924176233

https://github.com/nervgh/vba
 
Ответить
Сообщениеv__step, добрый) Думаю, Вам не за что извиняться smile

Quote (v__step)
вопрос - о цепочке замен в тексте, который может быть разбит на множество 3-х видов подстрок

Так и есть

Quote (v__step)
Имеется шаблон поиска, по которому можно найти все вхождения

ага

Quote (v__step)
Речь идет об одном шаблоне замены

Неа) о трех шаблонах, в зависимости от того, что нашли.

Автор - nerv
Дата добавления - 04.01.2012 в 10:38
v__step Дата: Среда, 04.01.2012, 10:39 | Сообщение № 131
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 27 ±
Замечаний: 0% ±

Для так поставленной задачи ответ простой: к сожалению, нет (причина - перемешанность текста)
Но если не обрабатывать vbaText, то задача решается в два действия:

Для vbaKey
Шаблон поиска: (?:Abs|Access...|Year)
Шаблон замены: <span class=\"vbaKey\">$1</span>

Для vbaComment
Шаблон поиска: ('.*$)
Шаблон замены: <span class=\"vbaComment\">$1</span>

Первая замена выполняется для исходного текста, а вторая - для того, что от него осталось после первой замены

Замечание: для чего применено "(?:" в шаблоне поиска vbaKey, я не разобрался


С уважением, Владимир

Сообщение отредактировал v__step - Понедельник, 02.01.2012, 12:38
 
Ответить
СообщениеДля так поставленной задачи ответ простой: к сожалению, нет (причина - перемешанность текста)
Но если не обрабатывать vbaText, то задача решается в два действия:

Для vbaKey
Шаблон поиска: (?:Abs|Access...|Year)
Шаблон замены: <span class=\"vbaKey\">$1</span>

Для vbaComment
Шаблон поиска: ('.*$)
Шаблон замены: <span class=\"vbaComment\">$1</span>

Первая замена выполняется для исходного текста, а вторая - для того, что от него осталось после первой замены

Замечание: для чего применено "(?:" в шаблоне поиска vbaKey, я не разобрался

Автор - v__step
Дата добавления - 04.01.2012 в 10:39
nerv Дата: Среда, 04.01.2012, 10:39 | Сообщение № 132
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Репутация: 193 ±
Замечаний: 0% ±

Quote (v__step)
Для так поставленной задачи ответ простой: к сожалению, нет (причина - перемешанность текста)

В VBA - нет, в JavaScript - да smile Поэтому я и спрашивал у Алексея

Quote (nerv)
Могу я поинтересоваться, как в VB с помощью RegExp быстрее всего сделать замену, при условии, что вариантов подмены может быть несколько?

думал, мож чего не догоняю, оказывается ни как) И Вы эт подтверждаете.

Quote (v__step)
Замечание: для чего применено "(?:" в шаблоне поиска vbaKey, я не разобрался

(?:x) Находит x, но не запоминает найденное. Это называется "незапоминающие скобки". Найденная подстрока не сохраняется в массиве результатов и свойствах RegExp.Как и все скобки, объединяют находящееся в них в единый подпаттерн.*
Иными словами - это группировка без запоминания.

Quote (v__step)
Замечание: для чего применено "(?:" в шаблоне поиска vbaKey, я не разобрался

Кажется, поначалу немного не понял Ваш вопрос) Для того, чтобы ко всей группе можно было применить \b(?:group)\b\$?, т.е. т.н. "поиск по словам" (определить границу слов) с необязательным долларом на конце.

* по крайней мере в js


Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


YM 41001156540584 / WM WMR R21924176233

https://github.com/nervgh/vba


Сообщение отредактировал nerv - Понедельник, 02.01.2012, 13:20
 
Ответить
Сообщение
Quote (v__step)
Для так поставленной задачи ответ простой: к сожалению, нет (причина - перемешанность текста)

В VBA - нет, в JavaScript - да smile Поэтому я и спрашивал у Алексея

Quote (nerv)
Могу я поинтересоваться, как в VB с помощью RegExp быстрее всего сделать замену, при условии, что вариантов подмены может быть несколько?

думал, мож чего не догоняю, оказывается ни как) И Вы эт подтверждаете.

Quote (v__step)
Замечание: для чего применено "(?:" в шаблоне поиска vbaKey, я не разобрался

(?:x) Находит x, но не запоминает найденное. Это называется "незапоминающие скобки". Найденная подстрока не сохраняется в массиве результатов и свойствах RegExp.Как и все скобки, объединяют находящееся в них в единый подпаттерн.*
Иными словами - это группировка без запоминания.

Quote (v__step)
Замечание: для чего применено "(?:" в шаблоне поиска vbaKey, я не разобрался

Кажется, поначалу немного не понял Ваш вопрос) Для того, чтобы ко всей группе можно было применить \b(?:group)\b\$?, т.е. т.н. "поиск по словам" (определить границу слов) с необязательным долларом на конце.

* по крайней мере в js

Автор - nerv
Дата добавления - 04.01.2012 в 10:39
v__step Дата: Среда, 04.01.2012, 10:39 | Сообщение № 133
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 27 ±
Замечаний: 0% ±

Quote (nerv)
о трех шаблонах
Во всех диалектах RegExp при замене можно воспользоваться только одним шаблоном поиска и одним шаблоном замены. Другое дело, что шаблон поиска может содержать подвыражения (они заключаются в круглые скобки), а шаблон замены может содержать ссылки на подвыражения ($3 - это ссылка на третье подвыражение)
Но при этом возможна работа только с той последовательностью подвыражений, которая зафиксирована в шаблоне поиска. Именно эта тонкость мешает в нашем случае
Если надо выполнить несколько замен с разными шаблонами замены в каждом случае, придется записать такое же количество шаблонов поиска - ничего не поделаешь... Но это совершенно нормально. Хоть сто раз

В нашем случае все было бы просто, если бы не vbaText. Может быть, все-таки, основной текст можно подсветить по умолчанию?


С уважением, Владимир
 
Ответить
Сообщение
Quote (nerv)
о трех шаблонах
Во всех диалектах RegExp при замене можно воспользоваться только одним шаблоном поиска и одним шаблоном замены. Другое дело, что шаблон поиска может содержать подвыражения (они заключаются в круглые скобки), а шаблон замены может содержать ссылки на подвыражения ($3 - это ссылка на третье подвыражение)
Но при этом возможна работа только с той последовательностью подвыражений, которая зафиксирована в шаблоне поиска. Именно эта тонкость мешает в нашем случае
Если надо выполнить несколько замен с разными шаблонами замены в каждом случае, придется записать такое же количество шаблонов поиска - ничего не поделаешь... Но это совершенно нормально. Хоть сто раз

В нашем случае все было бы просто, если бы не vbaText. Может быть, все-таки, основной текст можно подсветить по умолчанию?

Автор - v__step
Дата добавления - 04.01.2012 в 10:39
v__step Дата: Среда, 04.01.2012, 10:39 | Сообщение № 134
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 27 ±
Замечаний: 0% ±

Quote (nerv)
(?:x)
Я просто привык к (?=, но это совсем другое
Бог с ним, для vbaKey при отдельном поиске просмотр вперед не нужен, а вот границы слов и \$? я не записал - поспешил, исправляем:
Шаблон поиска: \b(?:Abs|Access...|Year)\b\$?
Шаблон замены: <span class=\"vbaKey\">$1</span>


С уважением, Владимир

Сообщение отредактировал v__step - Понедельник, 02.01.2012, 13:28
 
Ответить
Сообщение
Quote (nerv)
(?:x)
Я просто привык к (?=, но это совсем другое
Бог с ним, для vbaKey при отдельном поиске просмотр вперед не нужен, а вот границы слов и \$? я не записал - поспешил, исправляем:
Шаблон поиска: \b(?:Abs|Access...|Year)\b\$?
Шаблон замены: <span class=\"vbaKey\">$1</span>

Автор - v__step
Дата добавления - 04.01.2012 в 10:39
nerv Дата: Среда, 04.01.2012, 10:39 | Сообщение № 135
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Репутация: 193 ±
Замечаний: 0% ±

Quote (v__step)
Во всех диалектах RegExp при замене можно воспользоваться только одним шаблоном поиска и одним шаблоном замены.

По сути Вы правы, но на деле я использую ТРИ шаблона замены)

Шаблон поиска один, но включает три подшаблона. Я, конечно, могу привести код js, только поймете ли Вы его? Попробую прокомментировать.
Три шаблона замены достигаются путем передачи в функцию замены функции выбора шаблона smile

Сразу оговорюсь, js нетипизированный и очень свободный язык)

Один поиск и замена по строке, слева на право. При нахождении совпадения оно возвращается во вложенную функцию, в частотности в ее единственный аргумент f строкой. Далее определяем, что именно нашли по первому символу этой строки: двойная кавычка - строка, одинарная - комментарий, все остальное - ключевые слова. Соответственно. к найденному применяем оформление и возвращаем в функцию замены Replace оформленную строку подмены. Т.о. я достигаю трех шаблонов поиска и замены. Не знаю, может быть можно и проще, но я додумался только так)

/тут шаблон реги/
g глобальный поиск
синим сама рега

строка = строка.replace(/".*?"|\b(?:Abs|...|Year)\b\$?|'.*$/g,
_function(f) { // Получаем найденную строку.
___switch(f.charAt(0)) { // Проверяем, что нашли, ориентируясь по первому символу строки и возвращаем одно из трех:
___case "\"": return "<span class=\"vbaText\">" + f + "</span>"; // оформленные текстовые строки,
___case "'": return "<span class=\"vbaComment\">" + f + "</span>"; // оформленные комментарии,
___default: return "<span class=\"vbaKey\">" + f + "</span>"; // оформленные ключевые слова.
__}
_}
);


Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


YM 41001156540584 / WM WMR R21924176233

https://github.com/nervgh/vba


Сообщение отредактировал nerv - Понедельник, 02.01.2012, 13:38
 
Ответить
Сообщение
Quote (v__step)
Во всех диалектах RegExp при замене можно воспользоваться только одним шаблоном поиска и одним шаблоном замены.

По сути Вы правы, но на деле я использую ТРИ шаблона замены)

Шаблон поиска один, но включает три подшаблона. Я, конечно, могу привести код js, только поймете ли Вы его? Попробую прокомментировать.
Три шаблона замены достигаются путем передачи в функцию замены функции выбора шаблона smile

Сразу оговорюсь, js нетипизированный и очень свободный язык)

Один поиск и замена по строке, слева на право. При нахождении совпадения оно возвращается во вложенную функцию, в частотности в ее единственный аргумент f строкой. Далее определяем, что именно нашли по первому символу этой строки: двойная кавычка - строка, одинарная - комментарий, все остальное - ключевые слова. Соответственно. к найденному применяем оформление и возвращаем в функцию замены Replace оформленную строку подмены. Т.о. я достигаю трех шаблонов поиска и замены. Не знаю, может быть можно и проще, но я додумался только так)

/тут шаблон реги/
g глобальный поиск
синим сама рега

строка = строка.replace(/".*?"|\b(?:Abs|...|Year)\b\$?|'.*$/g,
_function(f) { // Получаем найденную строку.
___switch(f.charAt(0)) { // Проверяем, что нашли, ориентируясь по первому символу строки и возвращаем одно из трех:
___case "\"": return "<span class=\"vbaText\">" + f + "</span>"; // оформленные текстовые строки,
___case "'": return "<span class=\"vbaComment\">" + f + "</span>"; // оформленные комментарии,
___default: return "<span class=\"vbaKey\">" + f + "</span>"; // оформленные ключевые слова.
__}
_}
);

Автор - nerv
Дата добавления - 04.01.2012 в 10:39
nerv Дата: Среда, 04.01.2012, 14:59 | Сообщение № 136
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Репутация: 193 ±
Замечаний: 0% ±

Вопрос ко всем: в excel есть такая штука как [строка] (evaluate). По идее в квадратных скобках строка, так вот выделять ее цветом как строку или не стоит?


Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


YM 41001156540584 / WM WMR R21924176233

https://github.com/nervgh/vba
 
Ответить
СообщениеВопрос ко всем: в excel есть такая штука как [строка] (evaluate). По идее в квадратных скобках строка, так вот выделять ее цветом как строку или не стоит?

Автор - nerv
Дата добавления - 04.01.2012 в 14:59
Serge_007 Дата: Среда, 04.01.2012, 15:34 | Сообщение № 137
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (nerv)
выделять ее цветом как строку

Да


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (nerv)
выделять ее цветом как строку

Да

Автор - Serge_007
Дата добавления - 04.01.2012 в 15:34
nerv Дата: Среда, 04.01.2012, 23:53 | Сообщение № 138
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Репутация: 193 ±
Замечаний: 0% ±

Quote (Serge_007)
Да

Ой забыл happy

Немного подправил реги, попытался сделать их чуть поумней) Добавил скрытие/отображение номеров строк по двойному клику smile


Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


YM 41001156540584 / WM WMR R21924176233

https://github.com/nervgh/vba
 
Ответить
Сообщение
Quote (Serge_007)
Да

Ой забыл happy

Немного подправил реги, попытался сделать их чуть поумней) Добавил скрытие/отображение номеров строк по двойному клику smile

Автор - nerv
Дата добавления - 04.01.2012 в 23:53
v__step Дата: Четверг, 05.01.2012, 00:48 | Сообщение № 139
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 225
Репутация: 27 ±
Замечаний: 0% ±

Quote (nerv)
в excel есть такая штука как [строка] (evaluate)
Это мое "увлечение юности". Со временем проходит. sad
Наиболее часто употребляемые слова в Excel.VBA - Range(), Cells(), Worksheets(), Workbooks(), [...] (в основном, вместо Range(), что очень нехорошо, но что поделаешь... для кого-то так привычнее)

Возможно, было бы неплохо выделять переменные, но это нетривиальная задача - стоит ли?

Не стоит превращать листинг в папугая. Не стоит делать его слишком ярким, разве что цвет примечаний можно немного высветлить, а то они почти сливаются с основным текстом
Подсветка активной строки скорее мешает, чем помогает

Прошу сделать скидку на полнейшую субъективность!


С уважением, Владимир

Сообщение отредактировал v__step - Четверг, 05.01.2012, 10:56
 
Ответить
Сообщение
Quote (nerv)
в excel есть такая штука как [строка] (evaluate)
Это мое "увлечение юности". Со временем проходит. sad
Наиболее часто употребляемые слова в Excel.VBA - Range(), Cells(), Worksheets(), Workbooks(), [...] (в основном, вместо Range(), что очень нехорошо, но что поделаешь... для кого-то так привычнее)

Возможно, было бы неплохо выделять переменные, но это нетривиальная задача - стоит ли?

Не стоит превращать листинг в папугая. Не стоит делать его слишком ярким, разве что цвет примечаний можно немного высветлить, а то они почти сливаются с основным текстом
Подсветка активной строки скорее мешает, чем помогает

Прошу сделать скидку на полнейшую субъективность!

Автор - v__step
Дата добавления - 05.01.2012 в 00:48
nerv Дата: Четверг, 05.01.2012, 12:37 | Сообщение № 140
Группа: Редакторы
Ранг: Обитатель
Сообщений: 431
Репутация: 193 ±
Замечаний: 0% ±

v__step, спасибо за помощь smile
[текст] пока в раздумьях выделять или нет. А если уж и выделять, то также, как и текстовые строки. Как Вам такой вариант?

Quote (v__step)
Возможно, было бы неплохо выделять переменные, но это нетривиальная задача - стоит ли?

Думаю, нет)

Quote (v__step)
Не стоит превращать листинг в папугая.

В целом, Вы правы, везде нужна мера. Но, если вы когда нибудь работали в notepad++, то, согласитесь, там весьма удобно (на мой взгляд) реализовано выделение цветом.

Quote (v__step)
Подсветка активной строки скорее мешает, чем помогает

RAN такого же мнения. А я думаю, что можно отвести мышку в сторону (для тех кому это не нравиться) или сделать включение/отключение подсветки строки, или сделать ее реагирование по клику на строку (а не перемещению указателя) Или сделать более мягкий цвет (ближе к белому, т.е. фону форума). Думаю, последний вариант оптимальный. Еще кто как считает?

проверяем, например, здесь http://www.excelworld.ru/forum/5-72-13299-16-1325500486


Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


YM 41001156540584 / WM WMR R21924176233

https://github.com/nervgh/vba


Сообщение отредактировал nerv - Четверг, 05.01.2012, 12:39
 
Ответить
Сообщениеv__step, спасибо за помощь smile
[текст] пока в раздумьях выделять или нет. А если уж и выделять, то также, как и текстовые строки. Как Вам такой вариант?

Quote (v__step)
Возможно, было бы неплохо выделять переменные, но это нетривиальная задача - стоит ли?

Думаю, нет)

Quote (v__step)
Не стоит превращать листинг в папугая.

В целом, Вы правы, везде нужна мера. Но, если вы когда нибудь работали в notepad++, то, согласитесь, там весьма удобно (на мой взгляд) реализовано выделение цветом.

Quote (v__step)
Подсветка активной строки скорее мешает, чем помогает

RAN такого же мнения. А я думаю, что можно отвести мышку в сторону (для тех кому это не нравиться) или сделать включение/отключение подсветки строки, или сделать ее реагирование по клику на строку (а не перемещению указателя) Или сделать более мягкий цвет (ближе к белому, т.е. фону форума). Думаю, последний вариант оптимальный. Еще кто как считает?

проверяем, например, здесь http://www.excelworld.ru/forum/5-72-13299-16-1325500486

Автор - nerv
Дата добавления - 05.01.2012 в 12:37
Поиск:

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