Paste Special

9 отговора 371 прегледа
#1

Paste Special

Налага ми се да копирам само стойностите (без формули) от една страница на друга, само че искам да го направя с код и нещо не мога да го направя използвам кода

Selection.PasteSpecial Paste:=xlPasteValues

но непрекъснато ми дава грешка може и някъде другаде да ми е грешката по кода но не зная. Ето направо целия код ако може някой да ми каже къде греша


Sub zapis()

Dim i As Integer
Dim j As Integer
Dim g As Integer
Dim r As Integer
Dim n As Integer
Dim m
Dim rng As Range

On Error GoTo 0

m = InputBox("Въведете месеца за който са данните във формат DD.MM.YYYY", "Месец", "31.01.2005")

UserForm2.Show
UserForm2.Repaint

Worksheets("Ведомост").Activate
For i = 8 To 207
If Not Range("B" & i).Value = "" Then

Range("B" & i, "BL" & i).Select
Selection.Copy
Worksheets("Archive").Activate
For j = 5 To 2500
If Range("B" & j).Value = "" Then
Set rng = Range("B" & j, "BL" & j)
rng.Select
Selection.PasteSpecial Paste:=xlPasteValues
'ActiveSheet.Paste
Exit For
End If
Next
Worksheets("Ведомост").Activate
Else
Exit For
End If
Next
Application.CutCopyMode = False
Worksheets("Archive").Activate

For r = 5 To 2500
If Range("A" & r).Value = "" Then
n = r
For g = n To 2500
If Range("B" & g).Value <> "" Then
Range("A" & g).Value = m
Else
Exit For
End If
Next g

End If
Next r

MsgBox "Данните са записани", vbOKOnly
Worksheets("Ведомост").Activate
Unload UserForm2

End Sub

Go Install Analysis Toolpack!
Отговор
в отговор на alexoff #2

Re: Paste Special

Пробвай с това:
Selection.PasteSpecial Paste:=xlValues
а не с:
Selection.PasteSpecial Paste:=xlPasteValues

записа който ти давам е записан макрос, и при мен си работи без проблем

Отговор
в отговор на iwanov #3

Re: Paste Special

не ще пак ми дава грешка и спира точно на този ред, явно бъркам някъде другаде в синтаксиса.

А кода по същия начин написан ми работи без проблеми в друг файл но не мога да видя къде е разликата

Selection.PasteSpecial Paste:=xlPasteValues

Go Install Analysis Toolpack!
Отговор
в отговор на alexoff #4

Re: Paste Special

аз имам същите нужди от време на време

ето моето решение на "проблема":
от Customize на Toolbar-a , Commands, Edit съм си извадил едно бутонче Paste Value, предствлява нещо като дискетка с 12 в средата
след това натискаш Copy, отиваш на мястото където искаш да копираш и "клякаш" на бутончето

а между другото от там съм си извадил и доста други бутони, който ми вършат страшно полезна работа

.xls
Отговор
в отговор на alexoff #5

Re: Paste Special

А сигурен ли си, че така дефинирани Copy Area и Paste Area са съвместими? Само от кода който си дал е трудно да се тества

Отговор
в отговор на iwanov #6

Re: Paste Special

Като сложа само Paste ми копира и формулите а тогава ми дава грешки. А областите би трябвало да са съвместими еднакви са като брой клетки само дето са на различни страници.

Go Install Analysis Toolpack!
Отговор
в отговор на kibik #7

Re: Paste Special

Не ми върши работа защото не го правя за собствена употреба и не зная как биха се оправили други потребители. Първо няма да знаят точно какво да копират и къде да го сложат, много по лесно е да го напиша и да се автоматизира, затова искам да го направя с код.

Go Install Analysis Toolpack!
Отговор
в отговор на alexoff #8

Re: Paste Special

ActiveSheet.Range("B" & j, "BL" & j).PasteSpecial Paste:=xlPasteValues

Проблемът е, че Selection не винаги връща обект от тип Range, за който е валиден методът PasteSpecial.

Отговор
в отговор на mn_t #9

Re: Paste Special

и така не ще, явно нещо много съм го омотал и не мога да го оправя

Go Install Analysis Toolpack!
Отговор
в отговор на mn_t #10

Re: Paste Special

Проблема ми е идвал от там че имам 3 клетки на които съм дал Merge и това ми е обърквало всичко.

Go Install Analysis Toolpack!
Отговор