Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Казахский язык в коде макроса
 
К примеру, в документе макросом нужно найти казахское слово "Жұма":

Код
Sub search()
Cells.find(What:="Жұма", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
End Sub
По идее, это элементарная задача, но проблема в том, что специфическая казахская буква "ұ" не отображается в редакторе:

На первый взгляд, в этом случае поможет функция "ChrW()" и пошаговае покодовая разборка слова:
Код
ChrW(0416) & ChrW(04B1) & ChrW(043C) & ChrW(0430)

Всё бы ничего, но Excel "съедает" первые нули, превращая код в совершенно другой:
Код
ChrW(416) & ChrW(4B1) & ChrW(43C) & ChrW(430)
После чего, как следствие, ещё и ругаться начинает на встречу с неожиданными символами...
Есть какие-нибудь идеи?

p.s.
Microsoft Office Excel 2016
Отучить макросы коверкать формат ячеек
 
Есть два вполне себе рабочих макроса:

1 (удаление заданного значения):
Код
Sub delete_numbers()
Cells.Replace What:="123", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub

2 (удаление первого пробела в ячейке):
Код
Sub delete_spaces()
Dim MyCell As Range
On Error Resume Next
Selection.Cells.SpecialCells(xlCellTypeConstants, 23).Select
For Each MyCell In Selection.Cells
MyCell.Value = LTrim(MyCell.Value)
Next
On Error GoTo 0
End Sub


Проблема макроса "1": значение "10/5" в ячейке меняет на "05.окт" и т.д.
Проблема макроса "2": значение "10%" меняет на "0,1".

Каким волшебным образом можно отучить их пакостить? Настройки Excel перебрал - не помогает. Менял формат на текстовый - да, в этом случае изменений нет, но для всех ячеек изменить нельзя, а выборочно выделять ВСЕ проблемные ячейки - сам точно в этой жизни не успею, детям останется, да ещё и внукам хватит наверняка
:(
Перемещение данных определённых строк в другой столбец
 
У меня на первый взгляд вполне себе тривиальная задачка, но я и сам не смог её решить, и гугл после получасового прессинга так и не смог ничем мне помочь :(

Дано: куча данных, небрежно собранных в одном-единственном столбце.
Задача: ускорить для читабельности (на носу проверки) банальным переносом однотипных данных (в моём случае - ответов) в соседний столбец. По картинкам, наверное, куда проще понять, что же мне нужно. Строки, подлежащие переносу, ВСЕГДА начинаются с нумерации (в моём случае в качестве нумерации используются буквы латинского алфавита и следующие за ними закрывающие скобки), при этом количество строк одного варианта ВСЕГДА равно 6.

Что сейчас:



Что нужно:



Помогите, пожалуйста, с макросом. Строк более 20000, плюс они разбросаны в нескольких файлах - мне так и недели не хватит на то, чтобы вручную это всё перебирать :(
Excel + ID (Присвоение ID всем строкам в соответствии с подзаголовком)
 
Здравствуйте.

Есть таблица: в ней есть подзаголовки и позиции. В настоящий момент приходится ручками присваивать id каждой позиции перед тем, как грузить в программу. Хотелось бы узнать у уважаемых знатоков, есть ли способ каким-нибудь хитрым макросом автоматизировать эту рутину?

Выглядит рутина так: получаю файл, в котором ячейки от A до K объединены в подзаголовки, а под каждым из них (в обычных ячейках) указаны позиции (количество позиций всегда варьируется от нуля до трёх сотен). Присваиваю в соответствии с эталонным списком каждому подзаголовку уникальный id (эталонный список вообще-то пока на бумаге, но я для примера указал его на закладке "список id") в столбце M, после чего тупо растягиваю id от одного подзаголовка до следующего - просто чтобы было видно, какая позиция к какой группе (т.е. подзаголовку) относится. Признаться, изрядно надоело. Но ума не приложу, как это можно автоматизировать, и можно ли вообще  :sceptic:

Спасибо за внимание.
Изменено: iOne - 20.07.2015 03:47:39
Procedure too large, vba procedure 64kb error
 
Здравствуйте, уважаемые. Один товарищ настойчиво отправлял меня к вам, и вот я здесь.

Суть: в некоем экселевском файле УЖЕ есть куча ФИО. Задача макроса сравнить эти ФИО с записями в БД, и в случае 100% совпадения вместо каждой ФИО прописать её уникальный id (то бишь соответствующий ей ordinal). Макрос, который я показываю - лишь один из нескольких (остальные занимаются предварительной косметикой, без которой никак нельзя: тримят, убирают пустые страницы, и прочее), но Excel падает только когда из MySQL вместо пары-тройки сотен приходит пара-тройка тысяч записей.

Как выглядит макрос в Delphi (чтобы было понимание, откуда что берётся):
Скрытый текст

Как выглядит код в VBA-редакторе:
Скрытый текст

Проблема: когда пользователей было ~300 - всё было хорошо, макрос отрабатывал без единой ошибки, быстро и чётко. Но после расширения пользователей стало ~3000, и макрос выпадает с печально известной vba-ошибкой "procedure too large" :(

Как видите, я понятия не имею, каким образом можно сократить этот макрос, чтобы данная ошибка ушла и больше ко мне не возвращалась :(
Спасибо за внимание.
Удаление точки в конце строки, ... но точки проставлены не во всех строках.
 
Здравствуйте.

Нужно удалить точку в конце строки. Засада в том, что точка в конце есть не во всех строках, на одной строке могут находиться несколько предложений (разделённых точками, которые удалять нельзя), а длина и количество всех предложений заранее неизвестна. Есть ли какое-нибудь решение для таких случаев?



Красным - как есть.
Зелёным - как нужно.
Удалить текст по условию
 
В колонке "A" понадобилось убрать текст, находящийся в скобках, вместе с самими скобками. Текст без чёткой структуры/форматирования, т.е. внутри скобок может находиться любое количество любых символов в любом порядке. Скобки с текстом всегда находятся в конце предложения, иногда даже после знака препинания. Таблица с зелёной заливкой ("22.png"  ;)  - результат, который необходимо получить в итоге. Попробовал свои кривые руки в комбинации с одной небезызвестной надстройкой - не получилось. Посмотрел полное описание всех макросов и функций надстройки PLEX - тоже искомого в списке не нашёл  :(
Excel 2013 (x86) + макрос, корректное выделение области с данными
 
Здравствуйте.

Задача: выделить и перенести на новую страничку все данные, ничего не пропустив. Для этого открываю файл с данными и начинаю запись макроса. После этого по шагам: устанавливаю курсор в ячейку "A1" > нажимаю "Ctrl + A" (чтобы выделить вся область с данными) > копирую выделенную область в буфер > создаю в этой же книге новую страничку > устанавливаю курсор в ячейку "A1" > вставляю данные > останавливаю запись.

После проверяю получившийся макрос:

Код
    Range("A1:P105").Select
    Selection.Copy
    Sheets.Add After:=ActiveSheet
    ActiveSheet.Paste

Всё бы ничего, вот только Excel чётко определил и указал диапазон, а это очень плохо в моей задаче  :(  
Выходит, если в следующем файле записей будет больше, чем на 105 строк - он их просто не захватит. Как изменить код так, чтобы Excel, как говорится, немного "думал", т.е. интеллектуально определял диапазон с данными?

Надеюсь, это осуществимо, т.к. файлов нереально много и хотелось бы избавить себя от рутины, поэтому вся надежда на Вас  :(  



Заранее спасибо!
Страницы: 1
Наверх