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

Вход

Регистрация

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

 

= Мир MS Excel/Поочередная вставка и массовая печать - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поочередная вставка и массовая печать (Макросы/Sub)
Поочередная вставка и массовая печать
rty Дата: Среда, 27.02.2019, 20:38 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый вечер!
Прошу помощи так как в макросах не силен:
для вставки данных использовал макрос который был написан одним из участников форума
Проблема в том что при вставке на в нужное поле ячейка А2 и с последующим преобразованием в штрих код
пропадают нули перед число. Например 00102030423 штрих код считается как 102030423
К сообщению приложен файл: 12334.xlsm(43.3 Kb)
 
Ответить
СообщениеДобрый вечер!
Прошу помощи так как в макросах не силен:
для вставки данных использовал макрос который был написан одним из участников форума
Проблема в том что при вставке на в нужное поле ячейка А2 и с последующим преобразованием в штрих код
пропадают нули перед число. Например 00102030423 штрих код считается как 102030423

Автор - rty
Дата добавления - 27.02.2019 в 20:38
_Boroda_ Дата: Среда, 27.02.2019, 21:00 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 14442
Репутация: 5779 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Попробуйте так
[vba]
Код
Sub PrintVse()
    Cells(2, 1).NumberFormat = "@"
    With Sheets(1).Range("Table1")
        For i = 1 To .Count
            Cells(2, 1) = .Cells(i).Text
    '        Me.PrintOut
        Next i
    End With
End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеПопробуйте так
[vba]
Код
Sub PrintVse()
    Cells(2, 1).NumberFormat = "@"
    With Sheets(1).Range("Table1")
        For i = 1 To .Count
            Cells(2, 1) = .Cells(i).Text
    '        Me.PrintOut
        Next i
    End With
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 27.02.2019 в 21:00
rty Дата: Среда, 27.02.2019, 22:30 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
_Boroda_, Спасибо за быстрый ответ!
Завтра на работе про тестирую
 
Ответить
Сообщение_Boroda_, Спасибо за быстрый ответ!
Завтра на работе про тестирую

Автор - rty
Дата добавления - 27.02.2019 в 22:30
rty Дата: Среда, 27.02.2019, 23:07 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
_Boroda_, подскажите пожалуйста вставляю в макрос
[vba]
Код
Sub Paste()

    Dim shSrc As Worksheet, shRes As Worksheet
    Dim lr As Long
    
    Application.ScreenUpdating = False
    
    Set shSrc = Worksheets("Database")
    Set shRes = Worksheets("Pasport")
    Cells(26, 6).NumberFormat = "@"
    lr = shSrc.Cells(shSrc.Rows.Count, "A").End(xlUp).Row
    shRes.Range("F26").Value = shSrc.Cells(lr, "B").Value
    shRes.Range("F8").Value = shSrc.Cells(lr, "C").Value
    shRes.Range("F9").Value = shSrc.Cells(lr, "D").Value
    shRes.Range("F11").Value = shSrc.Cells(lr, "M").Value
    MsgBox "Ok", vbInformation
    Application.ScreenUpdating = True
    ActiveSheet.PrintOut
End Sub
[/vba]

строчку
[vba]
Код
Cells(26, 6).NumberFormat = "@"
[/vba]

в ячейке F26 такая же фигня с номером и не помогает если 00102030423 то 102030423
 
Ответить
Сообщение_Boroda_, подскажите пожалуйста вставляю в макрос
[vba]
Код
Sub Paste()

    Dim shSrc As Worksheet, shRes As Worksheet
    Dim lr As Long
    
    Application.ScreenUpdating = False
    
    Set shSrc = Worksheets("Database")
    Set shRes = Worksheets("Pasport")
    Cells(26, 6).NumberFormat = "@"
    lr = shSrc.Cells(shSrc.Rows.Count, "A").End(xlUp).Row
    shRes.Range("F26").Value = shSrc.Cells(lr, "B").Value
    shRes.Range("F8").Value = shSrc.Cells(lr, "C").Value
    shRes.Range("F9").Value = shSrc.Cells(lr, "D").Value
    shRes.Range("F11").Value = shSrc.Cells(lr, "M").Value
    MsgBox "Ok", vbInformation
    Application.ScreenUpdating = True
    ActiveSheet.PrintOut
End Sub
[/vba]

строчку
[vba]
Код
Cells(26, 6).NumberFormat = "@"
[/vba]

в ячейке F26 такая же фигня с номером и не помогает если 00102030423 то 102030423

Автор - rty
Дата добавления - 27.02.2019 в 23:07
bmv98rus Дата: Среда, 27.02.2019, 23:20 | Сообщение № 5
Группа: Проверенные
Ранг: Старожил
Сообщений: 1797
Репутация: 293 ±
Замечаний: 0% ±

Excel 2013/2016
а что у вас там shSrc.Cells(lr, "B").Value? Если есть уверенность что всегда 9 символов, то лучше
Код
=Right("000000000"&shSrc.Cells(lr, "B").Value,11)
или подобное.


Сообщение отредактировал bmv98rus - Четверг, 28.02.2019, 11:08
 
Ответить
Сообщениеа что у вас там shSrc.Cells(lr, "B").Value? Если есть уверенность что всегда 9 символов, то лучше
Код
=Right("000000000"&shSrc.Cells(lr, "B").Value,11)
или подобное.

Автор - bmv98rus
Дата добавления - 27.02.2019 в 23:20
rty Дата: Среда, 27.02.2019, 23:32 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
bmv98rus, неа, не помогло
 
Ответить
Сообщениеbmv98rus, неа, не помогло

Автор - rty
Дата добавления - 27.02.2019 в 23:32
_Boroda_ Дата: Четверг, 28.02.2019, 00:00 | Сообщение № 7
Группа: Модераторы
Ранг: Местный житель
Сообщений: 14442
Репутация: 5779 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Вы у меня где увидели Value?

.Text дает не реальное значение из ячейки, а видимое. Например, реально в ячейке 1 и стоит формат 00000. Тогда Value даст 1, а Text даст 00001. А у Вас в исходной таблице нолики вначале сделаны с помощью формата
[vba]
Код
shRes.Range("F26").Value = shSrc.Cells(lr, "B").Text
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВы у меня где увидели Value?

.Text дает не реальное значение из ячейки, а видимое. Например, реально в ячейке 1 и стоит формат 00000. Тогда Value даст 1, а Text даст 00001. А у Вас в исходной таблице нолики вначале сделаны с помощью формата
[vba]
Код
shRes.Range("F26").Value = shSrc.Cells(lr, "B").Text
[/vba]

Автор - _Boroda_
Дата добавления - 28.02.2019 в 00:00
bmv98rus Дата: Четверг, 28.02.2019, 11:12 | Сообщение № 8
Группа: Проверенные
Ранг: Старожил
Сообщений: 1797
Репутация: 293 ±
Замечаний: 0% ±

Excel 2013/2016
Если честно, то лучше в ячейке со штрихкодом использовать
Код
=Code_128(RIGHT(REPT(0;11)&A2;11))

тогда отпадет надобность в что-то мудрить в коде.

Александр _Boroda_, прав, что можно использовать .Text, а не .Value, но я б предпочел не опираться на формат ячейки.
 
Ответить
СообщениеЕсли честно, то лучше в ячейке со штрихкодом использовать
Код
=Code_128(RIGHT(REPT(0;11)&A2;11))

тогда отпадет надобность в что-то мудрить в коде.

Александр _Boroda_, прав, что можно использовать .Text, а не .Value, но я б предпочел не опираться на формат ячейки.

Автор - bmv98rus
Дата добавления - 28.02.2019 в 11:12
RAN Дата: Четверг, 28.02.2019, 12:14 | Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4950
Репутация: 986 ±
Замечаний: 0% ±

2010
Не нравится красным, мазни зеленым
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$2" Then
        Application.EnableEvents = 0
        Target.NumberFormat = "@"
        Target.Value = Format(Target.Value, "000000000")
        Application.EnableEvents = -1
    End If
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеНе нравится красным, мазни зеленым
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$2" Then
        Application.EnableEvents = 0
        Target.NumberFormat = "@"
        Target.Value = Format(Target.Value, "000000000")
        Application.EnableEvents = -1
    End If
End Sub
[/vba]

Автор - RAN
Дата добавления - 28.02.2019 в 12:14
rty Дата: Четверг, 28.02.2019, 21:48 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 28
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
_Boroda_, RAN, bmv98rus, Спасибо огромное за помощь
 
Ответить
Сообщение_Boroda_, RAN, bmv98rus, Спасибо огромное за помощь

Автор - rty
Дата добавления - 28.02.2019 в 21:48
boa Дата: Пятница, 01.03.2019, 16:00 | Сообщение № 11
Группа: Проверенные
Ранг: Обитатель
Сообщений: 325
Репутация: 71 ±
Замечаний: 0% ±

2013, 365
rty,
один из способов, что бы не обрезало нули, передать переменную как строку, т.е.
[vba]
Код
shRes.Range("F26").Value = cstr(shSrc.Cells(lr, "B").Text)
[/vba]


 
Ответить
Сообщениеrty,
один из способов, что бы не обрезало нули, передать переменную как строку, т.е.
[vba]
Код
shRes.Range("F26").Value = cstr(shSrc.Cells(lr, "B").Text)
[/vba]

Автор - boa
Дата добавления - 01.03.2019 в 16:00
_Boroda_ Дата: Пятница, 01.03.2019, 16:08 | Сообщение № 12
Группа: Модераторы
Ранг: Местный житель
Сообщений: 14442
Репутация: 5779 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
передать переменную как строку, т.е.
Какую переменную? И что, вот так
shRes.Range("F26").Value = shSrc.Cells(lr, "B").Text
кусок shSrc.Cells(lr, "B").Text - не строка будет?


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
передать переменную как строку, т.е.
Какую переменную? И что, вот так
shRes.Range("F26").Value = shSrc.Cells(lr, "B").Text
кусок shSrc.Cells(lr, "B").Text - не строка будет?

Автор - _Boroda_
Дата добавления - 01.03.2019 в 16:08
boa Дата: Пятница, 01.03.2019, 17:10 | Сообщение № 13
Группа: Проверенные
Ранг: Обитатель
Сообщений: 325
Репутация: 71 ±
Замечаний: 0% ±

2013, 365
_Boroda_,
исправлюсь
передать *значение как строку
значение shSrc.Cells(lr, "B").Text может быть любым и автоформатирование может его преобразовать на свое усмотрение.
Так вот, если передавать значение обработав cstr, даже если формат ячейки куда вставляется значение = "0", будет вставлено как текст, со всеми нулями в начале.




Сообщение отредактировал boa - Пятница, 01.03.2019, 17:12
 
Ответить
Сообщение_Boroda_,
исправлюсь
передать *значение как строку
значение shSrc.Cells(lr, "B").Text может быть любым и автоформатирование может его преобразовать на свое усмотрение.
Так вот, если передавать значение обработав cstr, даже если формат ячейки куда вставляется значение = "0", будет вставлено как текст, со всеми нулями в начале.

Автор - boa
Дата добавления - 01.03.2019 в 17:10
bmv98rus Дата: Пятница, 01.03.2019, 18:02 | Сообщение № 14
Группа: Проверенные
Ранг: Старожил
Сообщений: 1797
Репутация: 293 ±
Замечаний: 0% ±

Excel 2013/2016
вставлено как текст, со всеми нулями в начале.
Уверены на 100%? Я лично убежден что это не так .
Это совсем не правильно, но только "'"&shSrc.Cells(lr, "B").Text поможет если не трогать формат ячейки.


Сообщение отредактировал bmv98rus - Пятница, 01.03.2019, 18:28
 
Ответить
Сообщение
вставлено как текст, со всеми нулями в начале.
Уверены на 100%? Я лично убежден что это не так .
Это совсем не правильно, но только "'"&shSrc.Cells(lr, "B").Text поможет если не трогать формат ячейки.

Автор - bmv98rus
Дата добавления - 01.03.2019 в 18:02
boa Дата: Пятница, 01.03.2019, 18:22 | Сообщение № 15
Группа: Проверенные
Ранг: Обитатель
Сообщений: 325
Репутация: 71 ±
Замечаний: 0% ±

2013, 365
bmv98rus,
Я лично убежден что это не так .

проверил, согласен.
с SQL-запросами попутал


 
Ответить
Сообщениеbmv98rus,
Я лично убежден что это не так .

проверил, согласен.
с SQL-запросами попутал

Автор - boa
Дата добавления - 01.03.2019 в 18:22
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Поочередная вставка и массовая печать (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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