Новости:

Интересные и полезные статьи по работе с Excel и VBA
можно найти в разделе ХИТРОСТИ

Главное меню

Выделить фрагмент текста из ячейки типа Variant

Автор Evgenij_M, 19.09.2018, 11:46:07

« назад - далее »

Evgenij_M

Доброго всем здоровья, уважаемые.
Так как я абсолютный новичок в VBA, то никак не могу выделить 46 символов слева из текста, хранящегося в ячейке типа Variant.
На мою попытку применить функцию Left() программа отвечает сообщением о несоответствии типов. А функцию, которая согласилась бы конвертировать мне содержимое типа Variant в строку - я что-то ну никак не вижу  ??? . CStr() - так же ругается на несоответствие типов.
Работаю я на самых последних лицензионных домашних версиях как Винодовс, так и Офиса. На данный момент, у меня просто тупик  :(
Буду очень благодарен за подсказку...

Дмитрий Щербаков(The_Prist)

Без примера подсказать нечего. Скорее всего в ячейке даже не Variant, т.к. Left по определению сама конвертирует входной параметр. Приложите пример данных и как пытаетесь использовать функции.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

Evgenij_M

(ох и наплясался я с бубном, пока это сообщение удалось отправить  :o - "Ошибка", пишет,.. типа, "превысил ты свой один час."... "Выйди и зайди по-новому.". Я выходить - а не тут-то было  :D - "Ошибка", пишет,.. типа, "превысил ты свой один час."... "Выйди и зайди по-новому.". Спасся только тем, что с другого компа зашёл на форум... и вышел из учётной записи)

Ну, теперь - к делу...
Прежде всего спасибо Вам, Дмитрий, за отзывчивость Вашу.
Прикладываю исходный файл. В макросе "Назначение_платежа" выделил строку, вызывающую ошибку.
(и чего я только с этой строкой ни делал  :o . Даже пытался считать содержимое ячейки в строковую переменную... Не дали... Опять "Несоответствие типов" у них... Считывается только в переменную типа Variant,.. а ни Left(), ни конвертация с ней работать не стали  :( . Хоть убейся...)

Дмитрий Щербаков(The_Prist)

Так а зачем Вы туда пытаетесь значение целого массива передать, а не одной ячейки? Формируйте адрес на основании одной ячейки и не будет ошибок:
v_workRange = "C" + v_intToString
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

Evgenij_M

Во,.. не даром я сразу сказал, что я - новичок  ;D
Я, по своей наивности, решил, что объединённые в одну ячейки - это уже ОДНА ячейка  :o
И ещё (я только-что испробовал),.. если вручную изменить формат этой ячейки на текстовой, то проблема исчезает  ::)

Evgenij_M

Йииесссссс!!!.....  :D
Получииилооооось!..
Только-что добрался до компа и обратился к объединённой ячейке по адресу первой из диапазона - и всё заработало!..

Огромное Вам спасибо, уважаемый Дмитрий  :)
Дай Бог здоровья и удачи и Вам... и всем добрым людям  ;)

Аминь  ;D

Яндекс.Метрика Рейтинг@Mail.ru