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

Вход

Регистрация

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

 

= Мир MS Excel/Копировать число без потери нуля вначале. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копировать число без потери нуля вначале. (Макросы/Sub)
Копировать число без потери нуля вначале.
Roman777 Дата: Вторник, 12.05.2015, 17:38 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Добрый день!
Произвожу копирование значений через массивы. Причем массив задан как string.

[vba]
Код
....................
Dim Tablica() As String
.....................

For Each sht In ActiveWorkbook.Worksheets
   If sht.Index <> 1 Then
     i1 = 0 'скидываем на первую строку
     For i = Shapka + 1 To i_n(sht.Index - 1)
      i1 = i1 + 1
      For j = 1 To j1
       Tablica(sht.Index - 1, i1, j) = sht.Cells(i, j)
      Next j
   '    MsgBox (Tablica(sht.Index - 1, i1, j1))
     Next i
   End If
Next sht
............................
[/vba]
В ячейках есть значения аля "077342".
При копировании получаю "77342", то есть "0" съедается. Можно ли как-то сохранить этот нолик? Желательно не исправляя формат ячеек с общего на текстовый.


Много чего не знаю!!!!
 
Ответить
СообщениеДобрый день!
Произвожу копирование значений через массивы. Причем массив задан как string.

[vba]
Код
....................
Dim Tablica() As String
.....................

For Each sht In ActiveWorkbook.Worksheets
   If sht.Index <> 1 Then
     i1 = 0 'скидываем на первую строку
     For i = Shapka + 1 To i_n(sht.Index - 1)
      i1 = i1 + 1
      For j = 1 To j1
       Tablica(sht.Index - 1, i1, j) = sht.Cells(i, j)
      Next j
   '    MsgBox (Tablica(sht.Index - 1, i1, j1))
     Next i
   End If
Next sht
............................
[/vba]
В ячейках есть значения аля "077342".
При копировании получаю "77342", то есть "0" съедается. Можно ли как-то сохранить этот нолик? Желательно не исправляя формат ячеек с общего на текстовый.

Автор - Roman777
Дата добавления - 12.05.2015 в 17:38
_Boroda_ Дата: Вторник, 12.05.2015, 17:52 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
А если задать Дим Вариантом, то что получается? Просто вот так
[vba]
Код
Dim Tablica()
[/vba]
Весь файл не видно, весь код тоже, поэтому только предположение


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА если задать Дим Вариантом, то что получается? Просто вот так
[vba]
Код
Dim Tablica()
[/vba]
Весь файл не видно, весь код тоже, поэтому только предположение

Автор - _Boroda_
Дата добавления - 12.05.2015 в 17:52
SAGE Дата: Вторник, 12.05.2015, 17:58 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 5 ±
Замечаний: 0% ±

Excel 2007
Roman777,
без изменения формата самой ячейки Эксель всегда будет считать вариант аля "0775237" как число. Это не исправляется.


Best regards,
SAGE
 
Ответить
СообщениеRoman777,
без изменения формата самой ячейки Эксель всегда будет считать вариант аля "0775237" как число. Это не исправляется.

Автор - SAGE
Дата добавления - 12.05.2015 в 17:58
Roman777 Дата: Вторник, 12.05.2015, 17:59 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
_Boroda_, Попробовал ваш вариант, не работает. Файл пример приложу и код весь прикручу.
К сообщению приложен файл: _12.05.2015.xlsx (51.8 Kb)


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Вторник, 12.05.2015, 17:59
 
Ответить
Сообщение_Boroda_, Попробовал ваш вариант, не работает. Файл пример приложу и код весь прикручу.

Автор - Roman777
Дата добавления - 12.05.2015 в 17:59
Roman777 Дата: Вторник, 12.05.2015, 18:01 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
SAGE, Просто я видел таблицы с общим форматом ячейки, там были числа аля "07332". "0" не пропадал.


Много чего не знаю!!!!
 
Ответить
СообщениеSAGE, Просто я видел таблицы с общим форматом ячейки, там были числа аля "07332". "0" не пропадал.

Автор - Roman777
Дата добавления - 12.05.2015 в 18:01
SAGE Дата: Вторник, 12.05.2015, 18:11 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 5 ±
Замечаний: 0% ±

Excel 2007
Roman777,
если вы используете артикулы для дальнейшего поиска по базам, у которых как я понял встречается ноль вначале, то есть два варианта, менять формат ячейки либо применять строковый символ в конце. либо внутри артикула, но только для значений имеющих ноль вначале
[vba]
Код
if left (sht.Cells(i, j), 1) = "0" then  
  Tablica(sht.Index - 1, i1, j) = sht.Cells(i, j) & "x" ' к примеру
else  
  Tablica(sht.Index - 1, i1, j) = sht.Cells(i, j)
end if
[/vba]

конечно дальнейшая обработка этого значения обратная


Best regards,
SAGE
 
Ответить
СообщениеRoman777,
если вы используете артикулы для дальнейшего поиска по базам, у которых как я понял встречается ноль вначале, то есть два варианта, менять формат ячейки либо применять строковый символ в конце. либо внутри артикула, но только для значений имеющих ноль вначале
[vba]
Код
if left (sht.Cells(i, j), 1) = "0" then  
  Tablica(sht.Index - 1, i1, j) = sht.Cells(i, j) & "x" ' к примеру
else  
  Tablica(sht.Index - 1, i1, j) = sht.Cells(i, j)
end if
[/vba]

конечно дальнейшая обработка этого значения обратная

Автор - SAGE
Дата добавления - 12.05.2015 в 18:11
SAGE Дата: Вторник, 12.05.2015, 18:24 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 5 ±
Замечаний: 0% ±

Excel 2007
Roman777,
в вашем примере тоже общий формат ячейки и ноль не пропадает, при этом Excel выдает ошибку (Типа число представлено как текст)
проверьте разность адаптации Excel одного варианта строковой переменной

[vba]
Код
Sub число_как_текст()

Dim m As String

With ActiveSheet

m = "0123456"

.Cells(1, 2).Value = m '  будет числом

.Cells(2, 2).NumberFormat = "@"
.Cells(2, 2).Value = m ' будет уже строкой текста

End With

End Sub
[/vba]


Best regards,
SAGE


Сообщение отредактировал SAGE - Вторник, 12.05.2015, 18:25
 
Ответить
СообщениеRoman777,
в вашем примере тоже общий формат ячейки и ноль не пропадает, при этом Excel выдает ошибку (Типа число представлено как текст)
проверьте разность адаптации Excel одного варианта строковой переменной

[vba]
Код
Sub число_как_текст()

Dim m As String

With ActiveSheet

m = "0123456"

.Cells(1, 2).Value = m '  будет числом

.Cells(2, 2).NumberFormat = "@"
.Cells(2, 2).Value = m ' будет уже строкой текста

End With

End Sub
[/vba]

Автор - SAGE
Дата добавления - 12.05.2015 в 18:24
nilem Дата: Вторник, 12.05.2015, 18:55 | Сообщение № 8
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
видел таблицы с общим форматом ячейки, там были числа аля "07332". "0" не пропадал.

возможно, там апостроф был в начале
"'07332" будет с нулем


Яндекс.Деньги 4100159601573
 
Ответить
Сообщение
видел таблицы с общим форматом ячейки, там были числа аля "07332". "0" не пропадал.

возможно, там апостроф был в начале
"'07332" будет с нулем

Автор - nilem
Дата добавления - 12.05.2015 в 18:55
Roman777 Дата: Вторник, 12.05.2015, 19:33 | Сообщение № 9
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
SAGE, Спасибо за информацию. Насчёт добавления символов... я уже думал над таким. Думал просто, что есть вариант по-проще. И ведь хотелось поменьше работать с ячейкой - побольше с массивом (видимо вариант с дополнительным символом тут лучше всего подходит), а то и так для моего конечного файла макросу приходится около 10 минут работать. Хотя, вероятнее всего, вина лежит на установлении определённого форматирования, прописанном в конце макроса))).
nilem, Вряд ли, ведь когда я тыкал на эту ячейку, нолик исчезал и ячейка принимала значение "7332", а пока не тыкал, значение так и оставалось "07332".


Много чего не знаю!!!!
 
Ответить
СообщениеSAGE, Спасибо за информацию. Насчёт добавления символов... я уже думал над таким. Думал просто, что есть вариант по-проще. И ведь хотелось поменьше работать с ячейкой - побольше с массивом (видимо вариант с дополнительным символом тут лучше всего подходит), а то и так для моего конечного файла макросу приходится около 10 минут работать. Хотя, вероятнее всего, вина лежит на установлении определённого форматирования, прописанном в конце макроса))).
nilem, Вряд ли, ведь когда я тыкал на эту ячейку, нолик исчезал и ячейка принимала значение "7332", а пока не тыкал, значение так и оставалось "07332".

Автор - Roman777
Дата добавления - 12.05.2015 в 19:33
wild_pig Дата: Вторник, 12.05.2015, 20:20 | Сообщение № 10
Группа: Проверенные
Ранг: Обитатель
Сообщений: 517
Репутация: 97 ±
Замечаний: 0% ±

2003, 2013
Если выгружать весь массив сразу, excel не выделывается
[vba]
Код
Dim a(1 To 1) As String
a(1) = "01235"
Cells(1, 1) = a
[/vba]
 
Ответить
СообщениеЕсли выгружать весь массив сразу, excel не выделывается
[vba]
Код
Dim a(1 To 1) As String
a(1) = "01235"
Cells(1, 1) = a
[/vba]

Автор - wild_pig
Дата добавления - 12.05.2015 в 20:20
Roman777 Дата: Среда, 13.05.2015, 08:48 | Сообщение № 11
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
wild_pig, подскажите пожалуйста, что вы имели в виду, ато я даже по вашему примеру не очень понял, что значит "выгружать весь массив сразу", такое подойдет только при массиве размерностью в один элемент?


Много чего не знаю!!!!
 
Ответить
Сообщениеwild_pig, подскажите пожалуйста, что вы имели в виду, ато я даже по вашему примеру не очень понял, что значит "выгружать весь массив сразу", такое подойдет только при массиве размерностью в один элемент?

Автор - Roman777
Дата добавления - 13.05.2015 в 08:48
Hugo Дата: Среда, 13.05.2015, 08:58 | Сообщение № 12
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3255
Репутация: 707 ±
Замечаний: 0% ±

2019
Ну так это если As String...
По задаче ведь не так.
Думаю проще всего если первый 0, то добавлять в массив впереди апостоф.


excel@nxt.ru
webmoney: E265281470651 Z422237915069


Сообщение отредактировал Hugo - Среда, 13.05.2015, 08:59
 
Ответить
СообщениеНу так это если As String...
По задаче ведь не так.
Думаю проще всего если первый 0, то добавлять в массив впереди апостоф.

Автор - Hugo
Дата добавления - 13.05.2015 в 08:58
Roman777 Дата: Среда, 13.05.2015, 09:18 | Сообщение № 13
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Hugo, Изначально, я всё же делал
[vba]
Код
Dim Tablica() As String
[/vba]
Но массив я выгружаю циклом на каждой следующей строке. Я всё же не очень понимаю, что значит "выгружать весь массив сразу"...)


Много чего не знаю!!!!
 
Ответить
СообщениеHugo, Изначально, я всё же делал
[vba]
Код
Dim Tablica() As String
[/vba]
Но массив я выгружаю циклом на каждой следующей строке. Я всё же не очень понимаю, что значит "выгружать весь массив сразу"...)

Автор - Roman777
Дата добавления - 13.05.2015 в 09:18
nilem Дата: Среда, 13.05.2015, 09:41 | Сообщение № 14
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
что значит "выгружать весь массив сразу".

как раз тот случай, когда
...таблицы с общим форматом ячейки, там были числа аля "07332". "0" не пропадал.
но
когда я тыкал на эту ячейку, нолик исчезал и ячейка принимала значение "7332"
даже если
Dim Tablica() As String

Имхо, только 2 варианта: формат ячеек текстовый или ставить впереди апостроф, чтобы превратить число в текст


Яндекс.Деньги 4100159601573
 
Ответить
Сообщение
что значит "выгружать весь массив сразу".

как раз тот случай, когда
...таблицы с общим форматом ячейки, там были числа аля "07332". "0" не пропадал.
но
когда я тыкал на эту ячейку, нолик исчезал и ячейка принимала значение "7332"
даже если
Dim Tablica() As String

Имхо, только 2 варианта: формат ячеек текстовый или ставить впереди апостроф, чтобы превратить число в текст

Автор - nilem
Дата добавления - 13.05.2015 в 09:41
Roman777 Дата: Среда, 13.05.2015, 09:52 | Сообщение № 15
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
nilem, наверное Вы правы, добавлю условие:
[vba]
Код
     If Left(Tablica(k, i, j), 1) = 0 Then
         Worksheets(1).Cells(i2, j).NumberFormat = "@"
      End If
         Worksheets(1).Cells(i2, j) = Tablica(k, i, j)
[/vba]
Хочу уточнить, апостроф просто сделает число строкой? и в дальнейшем, если я захочу выполнить что-то типа ВПР (сравнение массивов), буду сравнивать "'07332" и "07332", мне естественно, этот апостроф надо будет удалять?


Много чего не знаю!!!!
 
Ответить
Сообщениеnilem, наверное Вы правы, добавлю условие:
[vba]
Код
     If Left(Tablica(k, i, j), 1) = 0 Then
         Worksheets(1).Cells(i2, j).NumberFormat = "@"
      End If
         Worksheets(1).Cells(i2, j) = Tablica(k, i, j)
[/vba]
Хочу уточнить, апостроф просто сделает число строкой? и в дальнейшем, если я захочу выполнить что-то типа ВПР (сравнение массивов), буду сравнивать "'07332" и "07332", мне естественно, этот апостроф надо будет удалять?

Автор - Roman777
Дата добавления - 13.05.2015 в 09:52
Hugo Дата: Среда, 13.05.2015, 10:06 | Сообщение № 16
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3255
Репутация: 707 ±
Замечаний: 0% ±

2019
Апостроф мешать не должен. Но можно ведь проверить.
0123 0123 TRUE
одно "число" было с апострофом (общий формат ячейки), второе без (текстовый формат ячейки) - формула отличий не нашла.


excel@nxt.ru
webmoney: E265281470651 Z422237915069


Сообщение отредактировал Hugo - Среда, 13.05.2015, 10:09
 
Ответить
СообщениеАпостроф мешать не должен. Но можно ведь проверить.
0123 0123 TRUE
одно "число" было с апострофом (общий формат ячейки), второе без (текстовый формат ячейки) - формула отличий не нашла.

Автор - Hugo
Дата добавления - 13.05.2015 в 10:06
Roman777 Дата: Среда, 13.05.2015, 10:29 | Сообщение № 17
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Hugo, Спасибо! Ну проверить можно всегда частный случай, вдруг какие-нибудь исключения существуют, о которых мне могли сообщить))).


Много чего не знаю!!!!
 
Ответить
СообщениеHugo, Спасибо! Ну проверить можно всегда частный случай, вдруг какие-нибудь исключения существуют, о которых мне могли сообщить))).

Автор - Roman777
Дата добавления - 13.05.2015 в 10:29
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Копировать число без потери нуля вначале. (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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