Здравствуйте! Прошу помочь в вопросе лузеру (т.е. мне)! есть таблица с разными данными - числа, даты, названия, суммы (деньги 0,00 руб) и т.д. можно ли эту таблицу загнать в массив чтоб все данные были строковыми
[vba]
Код
dim MyArr() as string MyArr=usedrange.value
[/vba] - вылетает в type mismatch
или надо загонять в массив вариант, а потом преобразовывать циклом?
Заранее спасибо за помощь!!!
Здравствуйте! Прошу помочь в вопросе лузеру (т.е. мне)! есть таблица с разными данными - числа, даты, названия, суммы (деньги 0,00 руб) и т.д. можно ли эту таблицу загнать в массив чтоб все данные были строковыми
[vba]
Код
dim MyArr() as string MyArr=usedrange.value
[/vba] - вылетает в type mismatch
или надо загонять в массив вариант, а потом преобразовывать циклом?
Sub test() Dim myArr() myArr = Me.Range("A1:D1").Value For f = 1 To UBound(myArr, 1) If IsNumeric(myArr(f, 1)) Then myArr(f, 1) = Str(myArr(f, 1)) If IsDate(myArr(f, 1)) Then myArr(f, 1) = Str(DateTime.DateValue(myArr(f, 1))) Next f
End Sub
[/vba]
так?
[vba]
Код
Sub test() Dim myArr() myArr = Me.Range("A1:D1").Value For f = 1 To UBound(myArr, 1) If IsNumeric(myArr(f, 1)) Then myArr(f, 1) = Str(myArr(f, 1)) If IsDate(myArr(f, 1)) Then myArr(f, 1) = Str(DateTime.DateValue(myArr(f, 1))) Next f
или надо загонять в массив вариант, а потом преобразовывать циклом?
Юрий, Вы лучше опишите поподробнее причину возникновения такой хотелки. Зачем Вам это все нужно? Кстати, если действительно так надо, то не удобнее ли будет сунуть все в массив как есть, а потом преобразовывать данные по мере необходимости? И да, не совсем ясно как Вам нужно преобразовывать даты. Допустим, у них разные форматы- дата 05.06.19 и дата 5 июнь 2019 года - как тогда нужно?
или надо загонять в массив вариант, а потом преобразовывать циклом?
Юрий, Вы лучше опишите поподробнее причину возникновения такой хотелки. Зачем Вам это все нужно? Кстати, если действительно так надо, то не удобнее ли будет сунуть все в массив как есть, а потом преобразовывать данные по мере необходимости? И да, не совсем ясно как Вам нужно преобразовывать даты. Допустим, у них разные форматы- дата 05.06.19 и дата 5 июнь 2019 года - как тогда нужно?_Boroda_
Это нужно для обработки данных вытянутых из разных систем (бухгалтерия) - в одной системе инвентарка в числовом, в другой строкой записана, даты также по в разных форматах и когда начинаешь писать условие, сравнивая, например, инвентарку - не находит совпадений, пока не приведу к общему формату. Приходится заглядывать в Локалс и смотреть в каком формате находятся данные, а так я знаю, что все данные - строковые, сравнивать напрямую, сумма, разность и т.д. с преобразованием в числовой и т.д. Мне кажется так код писать проще! (или может мне так только кажется?)
Это нужно для обработки данных вытянутых из разных систем (бухгалтерия) - в одной системе инвентарка в числовом, в другой строкой записана, даты также по в разных форматах и когда начинаешь писать условие, сравнивая, например, инвентарку - не находит совпадений, пока не приведу к общему формату. Приходится заглядывать в Локалс и смотреть в каком формате находятся данные, а так я знаю, что все данные - строковые, сравнивать напрямую, сумма, разность и т.д. с преобразованием в числовой и т.д. Мне кажется так код писать проще! (или может мне так только кажется?)urlchik
А почему Вы не хотите преобразовывать в момент сравнивания?
Я только познаю VBA. И наткнулся на такую бяку: если значение строковое, то CStr() дает ошибку(не помню какую)! Вот и пришла мысль в голову, здедать массив строковым, а при надобности преобразовывать в нужный формат. И еще, иногда (не знаю по какой причине) из одной и той же софтины отчет в ексель по конкретному полю кидает то строкой то числом... Ковырять в софтине не дают...
А почему Вы не хотите преобразовывать в момент сравнивания?
Я только познаю VBA. И наткнулся на такую бяку: если значение строковое, то CStr() дает ошибку(не помню какую)! Вот и пришла мысль в голову, здедать массив строковым, а при надобности преобразовывать в нужный формат. И еще, иногда (не знаю по какой причине) из одной и той же софтины отчет в ексель по конкретному полю кидает то строкой то числом... Ковырять в софтине не дают...urlchik
[/vba] На самом деле разговор ни о чем. Нужны конкретные файлы (без конф. инфы), конкретные макросы и описаните конкретных хотелок (по одной на каждую тему)
Ну напишите вместо CStr вот так [vba]
Код
a(i,1) & ""
[/vba] На самом деле разговор ни о чем. Нужны конкретные файлы (без конф. инфы), конкретные макросы и описаните конкретных хотелок (по одной на каждую тему)_Boroda_