Перейти к содержимому

Фото
- - - - -

VBA Excel


  • Вы не можете создать новую тему
  • Please log in to reply
14 ответов в этой теме

#1 Vitalts

Vitalts
  • Постоялец
  • 1 852 сообщений

Отправлено 07 ноября 2008 - 10:08

В столбце D на первом листе книги Book1 имеются в целочисленном эквиваленте очень большие значения. Формат ячеек данного столбца - текстовый. Данные значения вместе с остальными столбцами переносятся в книгу Book2

Book2.worksheets(1).Range("A1:J1205").Value = Book1.worksheets(1).Range("A1:J1205").Value

От метода Range().Copy, избовляющего меня от нижеследующей проблемы пришлось отказаться, по причине необходимости оставить буфер обмена не тронутым.

А проблема следующая, даже при указании столбцу D книги Book2 формата ячеек как текст, до присваивания значений, все равно некоторые значения имею вид

3.75172E+11

Как сие побороть? Установка формата ячеек = 0, хоть и приводит значения к нужному внешнему виду, все же не годится, т.к. нужен текстовый формат ячеек, или как вариант, другой не стандартный, но не целочисленный.

ЗЫ: Варианты решения, отдельно для каждой ячейки, не предлагать.
  • 0

#2 Vitalts

Vitalts
  • Постоялец
  • 1 852 сообщений

Отправлено 07 ноября 2008 - 11:13

Обнаружилась еще одна проблема. Пропадает 0 в начале значений.

Сообщение изменено: Vitalts (07 ноября 2008 - 11:46 )

  • 0

#3 Vitalts

Vitalts
  • Постоялец
  • 1 852 сообщений

Отправлено 07 ноября 2008 - 13:01

Проблема решена. Проглядел промежуточный лист.
  • 0

#4 Zero

Zero

    TRUST NO ONE

  • Постоялец
  • 10 668 сообщений
  • Откуда:Таллин

Отправлено 07 ноября 2008 - 13:07

Vitalts, а в ВБа нельзя указывать типы переменных, только Variant?
  • 0
Моя Родина - СССР! Пролетарии всех стран, соединяйтесь!
-----------------------------------------------------------------------
Ясность - одна из форм полного тумана. Форумчане, давайте жить дружно!

#5 Vitalts

Vitalts
  • Постоялец
  • 1 852 сообщений

Отправлено 07 ноября 2008 - 14:33

Переменных? Где вы их видите? В подобных действиях никакие переменные (разве что номер строки) участия не принимают.
Перед тем, как умничать, "уважаемый", внимательно ознакомьтесь с вопросом.

Сообщение изменено: Vitalts (07 ноября 2008 - 14:37 )

  • 0

#6 Zero

Zero

    TRUST NO ONE

  • Постоялец
  • 10 668 сообщений
  • Откуда:Таллин

Отправлено 07 ноября 2008 - 14:49

Vitalts, как же меня это достало... Где я писал, что вашем случае используются переменные. ГДЕ?

В подобных действиях никакие переменные (разве что номер строки) участия не принимают.

Я где-то утверждал обратное? Покажите.

Перед тем, как умничать, "уважаемый", внимательно ознакомьтесь с вопросом.

Хамить в ответ не буду, не заинтересован. На VBA не пишу, поэтому и спросил про переменные, чисто из интереса. На VB пишу много лет.
  • 0
Моя Родина - СССР! Пролетарии всех стран, соединяйтесь!
-----------------------------------------------------------------------
Ясность - одна из форм полного тумана. Форумчане, давайте жить дружно!

#7 Vitalts

Vitalts
  • Постоялец
  • 1 852 сообщений

Отправлено 07 ноября 2008 - 15:05

Если много лет пишите на VB и имели дело с управлением Excel, Word и иже с ними в VB, то должны с легкостью понять следующую строку:
Book2.worksheets(1).Range("A1:J1205").Value = Book1.worksheets(1).Range("A1:J1205").Value
Ни одного намека на переменные, хранящие значения ячеек. Отсюда и столь грубый ответ.
  • 0

#8 Zero

Zero

    TRUST NO ONE

  • Постоялец
  • 10 668 сообщений
  • Откуда:Таллин

Отправлено 07 ноября 2008 - 15:08

Vitalts, я-то понимаю эту строку. Но, еще раз.

Где я писал, что вашем случае используются переменные. ГДЕ?

Я не писал "вы используете variant. А что, другие типы нельзя?
Я спросил "А есть ли в VBA другие типы?"
Чувствуете разницу? Надо внимательно читать, не придется тратиться на грубости.

Сообщение изменено: Zero (07 ноября 2008 - 15:09 )

  • 0
Моя Родина - СССР! Пролетарии всех стран, соединяйтесь!
-----------------------------------------------------------------------
Ясность - одна из форм полного тумана. Форумчане, давайте жить дружно!

#9 Vitalts

Vitalts
  • Постоялец
  • 1 852 сообщений

Отправлено 07 ноября 2008 - 15:16

а в ВБа нельзя указывать типы переменных, только Variant?


"А есть ли в VBA другие типы?"


А вы чувствуете разницу? Я лично, в первом вопросе, вижу указания на то, что переменная не была явно объявлена, в следствии чего имеет тип Variant.
Задумайтесь о своем оправдании, человек много лет пишуший на VB, интересуется о наличии в VBA, типов данных, отличных от Variant

Считаю дальнейшую полемику не уместной
  • 0

#10 Zero

Zero

    TRUST NO ONE

  • Постоялец
  • 10 668 сообщений
  • Откуда:Таллин

Отправлено 07 ноября 2008 - 15:26

А проблема следующая, даже при указании столбцу D книги Book2 формата ячеек как текст, до присваивания значений, все равно некоторые значения имею вид

Эта проблема решена? Проблема в преобразовании типов, после присвоения формат остается "нормальным". мантисса+порядок, естественно, что если опять в текст преобразовать (если формат ячейки текстовый), все так и останется, это очевидно...

А вы чувствуете разницу?

я - нет.

Я лично, в первом вопросе, вижу указания на то, что переменная не была явно объявлена, в следствии чего имеет тип Variant.

Ничего подобного я не имел в виду. Не надо искать смысл между строк там, где все прямо и ясно написано.

Задумайтесь о своем оправдании

оправдывается тот, кто виноват. А это не я неправильно понял слова собеседника, мне оправдываться незачем.

человек много лет пишуший на VB, интересуется о наличии в VBA, типов данных, отличных от Variant

И что такого? Это. мягко говоря, совсем не один и тот же язык... Я в VBA не имею опыта, потому и спрашиваю человека, который сейчас на нем пишет, есть ли там различные типы. Ничего особого в этом не вижу.

Считаю дальнейшую полемику не уместной

Конечно, неуместно продолжать. Один человек не понял другого - ничего такого, со всеми случается. Тем более, мы выяснили вроде, какие мои слова были не так поняты.
  • 0
Моя Родина - СССР! Пролетарии всех стран, соединяйтесь!
-----------------------------------------------------------------------
Ясность - одна из форм полного тумана. Форумчане, давайте жить дружно!

#11 Vitalts

Vitalts
  • Постоялец
  • 1 852 сообщений

Отправлено 07 ноября 2008 - 15:46

Эта проблема решена? Проблема в преобразовании типов, после присвоения формат остается "нормальным". мантисса+порядок, естественно, что если опять в текст преобразовать (если формат ячейки текстовый), все так и останется, это очевидно...


Да, проблема решена. Был еще промежуточный лист, в котором формат ячейки изменен не был, а по умолчанию General, вот на этом листе значения и портились. А явное преобразование типов отсутствует. И более того, не примелемо. С этими данными никаких математических действий не совершается. Они должны оставться без изменений. Изменял их эксел, по указаниям фотмата ячейки.


Ничего подобного я не имел в виду. Не надо искать смысл между строк там, где все прямо и ясно написано.


Сравните:

а в VBA нельзя указывать типы переменных, только Variant?


а в VBA можно указывать типы переменных, или только Variant?


ИМХО разница огромна. А я ведь изменил только два слова. Тогда как, чтобы вопрос звучал именно так, как вы утверждаете, необходимо внести еще не мало изменений.

Если считаете, что оскорбил вас не заслуженно, пусть же мимо проходящие рассудят. Как бы они поняли ваш первый пост.

Сообщение изменено: Vitalts (07 ноября 2008 - 15:48 )

  • 0

#12 Zero

Zero

    TRUST NO ONE

  • Постоялец
  • 10 668 сообщений
  • Откуда:Таллин

Отправлено 07 ноября 2008 - 15:58

ИМХО разница огромна.

ИМХО разницы нет. Вот если б там было слово "существуют"в одном месте, а в другом "указывать" - сооовсем другое дело...

Если считаете, что оскорбил вас не заслуженно, пусть же мимо проходящие рассудят. Как бы они поняли ваш первый пост.

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

Сообщение изменено: Zero (07 ноября 2008 - 16:01 )

  • 0
Моя Родина - СССР! Пролетарии всех стран, соединяйтесь!
-----------------------------------------------------------------------
Ясность - одна из форм полного тумана. Форумчане, давайте жить дружно!

#13 Vitalts

Vitalts
  • Постоялец
  • 1 852 сообщений

Отправлено 07 ноября 2008 - 16:12

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

И что бы вы не говорили, я ни зачто не поверю, что вы, человек хорошо знающий VB, интересуетесь положением дел с типами данных в VBA, вопросом, заданным в подобной форме. Не говоря уже о том, где и когда он был задан.
  • 0

#14 Slash

Slash
  • Пользователь
  • 78 сообщений
  • Откуда:Estonia - Tallinn

Отправлено 07 ноября 2008 - 20:21

Реакция автора поста на столь безобидный вопрос мне показалась как минимум странной, как максимум неадекватной. Позитив в массы, и не будет недопонимания.

Мнение "проходящего мимо" :)
  • 0

#15 Vitalts

Vitalts
  • Постоялец
  • 1 852 сообщений

Отправлено 07 ноября 2008 - 21:58

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

Да, чуть не забыл, удовлетворю лубопытство Zero. Может конечно камуто это покажется странным, но тем не менее, тыпы данных в VBA, ничем не оличаются от типов данных в VB. :)

Сообщение изменено: Vitalts (07 ноября 2008 - 22:04 )

  • 0