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

Вход

Регистрация

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

 

= Мир MS Excel/изменить макрос, чтобы копировались только значения - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
изменить макрос, чтобы копировались только значения
amaksimus85 Дата: Воскресенье, 21.08.2022, 17:00 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 20% ±

здравствуйте.
что нужно поменять или добавить в макросе, чтобы копировались только значения, а не формулы (специальная вставка - значения)?
[vba]
Код

Sub CollectDataFromAllSheets()
    Dim ws As Worksheet
     
    Set wbCurrent = ActiveWorkbook
  
    Set wbReport = ActiveWorkbook
      
    wbCurrent.Worksheets(1).Range("A1:D1").Copy Destination:=wbReport.Worksheets(1).Range("A1")
     
    
    For Each ws In wbCurrent.Worksheets
      
        n = wbReport.Worksheets(1).Range("A1").CurrentRegion.Rows.Count
         
      
        Set rngData = ws.Range("A1:D5")             
         
        
        rngData.Copy Destination:=wbReport.Worksheets(1).Cells(n + 1, 1)
        
         
    Next ws
End Sub

[/vba]
 
Ответить
Сообщениездравствуйте.
что нужно поменять или добавить в макросе, чтобы копировались только значения, а не формулы (специальная вставка - значения)?
[vba]
Код

Sub CollectDataFromAllSheets()
    Dim ws As Worksheet
     
    Set wbCurrent = ActiveWorkbook
  
    Set wbReport = ActiveWorkbook
      
    wbCurrent.Worksheets(1).Range("A1:D1").Copy Destination:=wbReport.Worksheets(1).Range("A1")
     
    
    For Each ws In wbCurrent.Worksheets
      
        n = wbReport.Worksheets(1).Range("A1").CurrentRegion.Rows.Count
         
      
        Set rngData = ws.Range("A1:D5")             
         
        
        rngData.Copy Destination:=wbReport.Worksheets(1).Cells(n + 1, 1)
        
         
    Next ws
End Sub

[/vba]

Автор - amaksimus85
Дата добавления - 21.08.2022 в 17:00
jun Дата: Воскресенье, 21.08.2022, 18:53 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 145
Репутация: 43 ±
Замечаний: 0% ±

amaksimus85, здравствуйте!
специальная вставка - значения

да:
использовать метод:
https://docs.microsoft.com/ru-ru....special
с переменной https://docs.microsoft.com/ru-ru/office/vba/api/excel.xlpastetype == xlPasteValues


Сообщение отредактировал jun - Воскресенье, 21.08.2022, 18:53
 
Ответить
Сообщениеamaksimus85, здравствуйте!
специальная вставка - значения

да:
использовать метод:
https://docs.microsoft.com/ru-ru....special
с переменной https://docs.microsoft.com/ru-ru/office/vba/api/excel.xlpastetype == xlPasteValues

Автор - jun
Дата добавления - 21.08.2022 в 18:53
amaksimus85 Дата: Понедельник, 22.08.2022, 21:46 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 20% ±

jun,
я, так понимаю, нужно втавить этот код?
[vba]
Код
.Range("C1:C5").Copy
.Range("D1:D5").PasteSpecial _
  Operation:=xlPasteSpecialOperationAdd
[/vba]

вопорос - куда?
я, просто, в этом не силен
 
Ответить
Сообщениеjun,
я, так понимаю, нужно втавить этот код?
[vba]
Код
.Range("C1:C5").Copy
.Range("D1:D5").PasteSpecial _
  Operation:=xlPasteSpecialOperationAdd
[/vba]

вопорос - куда?
я, просто, в этом не силен

Автор - amaksimus85
Дата добавления - 22.08.2022 в 21:46
jun Дата: Вторник, 23.08.2022, 08:11 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 145
Репутация: 43 ±
Замечаний: 0% ±

amaksimus85, например так:
[vba]
Код
.Range("C1:C5").Copy
.Range("D1:D5").PasteSpecial xlPasteValues
[/vba]
К сообщению приложен файл: PasteSpecial.xlsb (14.5 Kb)


Сообщение отредактировал jun - Вторник, 23.08.2022, 08:13
 
Ответить
Сообщениеamaksimus85, например так:
[vba]
Код
.Range("C1:C5").Copy
.Range("D1:D5").PasteSpecial xlPasteValues
[/vba]

Автор - jun
Дата добавления - 23.08.2022 в 08:11
Sancho Дата: Вторник, 23.08.2022, 12:58 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 279
Репутация: 19 ±
Замечаний: 0% ±

2007, 2010, 2013
amaksimus85, jun, добрый день!
Просто, скопируйте равенством
[vba]
Код
    .Range("F1:F5") = .Range("C1:C5").Value
[/vba]
 
Ответить
Сообщениеamaksimus85, jun, добрый день!
Просто, скопируйте равенством
[vba]
Код
    .Range("F1:F5") = .Range("C1:C5").Value
[/vba]

Автор - Sancho
Дата добавления - 23.08.2022 в 12:58
amaksimus85 Дата: Вторник, 23.08.2022, 14:32 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 20% ±

.Range("C1:C5").Copy
.Range("D1:D5").PasteSpecial xlPasteValues

куда это вставить или заменить именно в исходном макросе? ( макрос копирует данные со всех листов книги, листы всегда меняются)
 
Ответить
Сообщение
.Range("C1:C5").Copy
.Range("D1:D5").PasteSpecial xlPasteValues

куда это вставить или заменить именно в исходном макросе? ( макрос копирует данные со всех листов книги, листы всегда меняются)

Автор - amaksimus85
Дата добавления - 23.08.2022 в 14:32
Sancho Дата: Среда, 24.08.2022, 10:44 | Сообщение № 7
Группа: Проверенные
Ранг: Обитатель
Сообщений: 279
Репутация: 19 ±
Замечаний: 0% ±

2007, 2010, 2013
amaksimus85,
Замените строки[vba]
Код
        

        Set rngData = ws.Range("A1:D5")
        
        
        rngData.Copy Destination:=wbReport.Worksheets(1).Cells(n + 1, 1)
[/vba]
на [vba]
Код
        
        With wbReport.Worksheets(1)
        .Range(.Cells(n + 1, 1), .Cells(n + 1 + 4, 4)) = ws.Range("A1:D5").Value
        End With
[/vba]
PS: С файлом примером было бы проще понять что вам надо копировать без формул, так только на догадках, ибо в 9й строке вы тоже зачем-то копируете и вставляете на тот же самый лист

Set wbCurrent = ActiveWorkbook

Set wbReport = ActiveWorkbook

wbCurrent.Worksheets(1).Range("A1:D1").Copy Destination:=wbReport.Worksheets(1).Range("A1")
 
Ответить
Сообщениеamaksimus85,
Замените строки[vba]
Код
        

        Set rngData = ws.Range("A1:D5")
        
        
        rngData.Copy Destination:=wbReport.Worksheets(1).Cells(n + 1, 1)
[/vba]
на [vba]
Код
        
        With wbReport.Worksheets(1)
        .Range(.Cells(n + 1, 1), .Cells(n + 1 + 4, 4)) = ws.Range("A1:D5").Value
        End With
[/vba]
PS: С файлом примером было бы проще понять что вам надо копировать без формул, так только на догадках, ибо в 9й строке вы тоже зачем-то копируете и вставляете на тот же самый лист

Set wbCurrent = ActiveWorkbook

Set wbReport = ActiveWorkbook

wbCurrent.Worksheets(1).Range("A1:D1").Copy Destination:=wbReport.Worksheets(1).Range("A1")

Автор - Sancho
Дата добавления - 24.08.2022 в 10:44
  • Страница 1 из 1
  • 1
Поиск:

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