Добрый день! Прошу помощи, так как в VBA совсем начинающий, а задача для реализации есть. Необходимо скопировать в буфер (предположительно записать макрос в кнопку) значения ячеек из столбца С, которые не равны нулю (или другое возможное условие "<", ">", ...). Задача вроде довольно простая и решается фильтром, но очень хочется постигать "науку" и работать головой, а не руками. Заранее спасибо!
Добрый день! Прошу помощи, так как в VBA совсем начинающий, а задача для реализации есть. Необходимо скопировать в буфер (предположительно записать макрос в кнопку) значения ячеек из столбца С, которые не равны нулю (или другое возможное условие "<", ">", ...). Задача вроде довольно простая и решается фильтром, но очень хочется постигать "науку" и работать головой, а не руками. Заранее спасибо! sIT
Что Вы имеете ввиду под буфером? Лучше опишите, что нужно сделать с данными, которые не равны нулю, куда их надо вставить или что с ними надо сделать? С буфером обмена обычно не работают, т.к. в этом нет необходимости.
Что Вы имеете ввиду под буфером? Лучше опишите, что нужно сделать с данными, которые не равны нулю, куда их надо вставить или что с ними надо сделать? С буфером обмена обычно не работают, т.к. в этом нет необходимости.Karataev
Сообщение отредактировал Karataev - Четверг, 13.04.2017, 20:34
так то, если в подробности не вдаваться зачем, и буфер это буфер обмена системы, то вот[vba]
Код
Sub ПримерИспользования() txt = ClipboardText MsgBox txt, vbInformation, "Содержимое буфера обмена Windows" End Sub
Function ClipboardText() ' чтение из буфера обмена With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .GetFromClipboard ClipboardText = .GetText End With End Function
Sub SetClipboardText(ByVal txt$) ' запись в буфер обмена With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText txt$ .PutInClipboard End With End Sub
[/vba]
в вашем случае не ясна цель, скорее всего можно проще
так то, если в подробности не вдаваться зачем, и буфер это буфер обмена системы, то вот[vba]
Код
Sub ПримерИспользования() txt = ClipboardText MsgBox txt, vbInformation, "Содержимое буфера обмена Windows" End Sub
Function ClipboardText() ' чтение из буфера обмена With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .GetFromClipboard ClipboardText = .GetText End With End Function
Sub SetClipboardText(ByVal txt$) ' запись в буфер обмена With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText txt$ .PutInClipboard End With End Sub
[/vba]
в вашем случае не ясна цель, скорее всего можно прощеK-SerJC
я прошу прощения, если сразу все-таки неясно сформулировал вопрос. в приложенном файле, сделал кнопку с копированием большого range под данные. вот как сделать, чтобы копировались значения не "0,0"?
я прошу прощения, если сразу все-таки неясно сформулировал вопрос. в приложенном файле, сделал кнопку с копированием большого range под данные. вот как сделать, чтобы копировались значения не "0,0"?sIT
которые не равны нулю (или другое возможное условие "<", ">", ...).
У меня такой вариант [vba]
Код
Private Sub CommandButton1_Click() Application.ScreenUpdating = 0 r1_ = Range("C" & Rows.Count).End(3).Row If ActiveSheet.AutoFilterMode Then Selection.AutoFilter End If Range("C1:C" & r1_).AutoFilter Field:=1, Criteria1:="<>0,0" r11_ = Range("C" & Rows.Count).End(3).Row Range("C1:C" & r11_).SpecialCells(xlCellTypeVisible).Copy Range("H1").Select 'вставляем куда нужно ActiveSheet.Paste Range("C1:C" & r1_).AutoFilter Application.ScreenUpdating = 1 End Sub
которые не равны нулю (или другое возможное условие "<", ">", ...).
У меня такой вариант [vba]
Код
Private Sub CommandButton1_Click() Application.ScreenUpdating = 0 r1_ = Range("C" & Rows.Count).End(3).Row If ActiveSheet.AutoFilterMode Then Selection.AutoFilter End If Range("C1:C" & r1_).AutoFilter Field:=1, Criteria1:="<>0,0" r11_ = Range("C" & Rows.Count).End(3).Row Range("C1:C" & r11_).SpecialCells(xlCellTypeVisible).Copy Range("H1").Select 'вставляем куда нужно ActiveSheet.Paste Range("C1:C" & r1_).AutoFilter Application.ScreenUpdating = 1 End Sub