Copy/pasting 个具有形状的单元格
Copy/pasting cells with shapes
如何复制形状及其所在的单元格?当我手动复制时,形状跟随单元格,但是当我用宏复制时,除了形状之外,我得到了其他所有东西。
Cells(sourceRow, sourceColumn).Copy
Cells(targetRow, targedColumn).PasteSpecial
...
Range("A1").copy
Range("B2").PasteSpecial Operation:=xlPasteAll
我想尽办法了...但那个形状就是动不了。
记录了手册copy/paste,这是我得到的:
Range("A1").Select
Selection.Copy
Range("A3").Select
ActiveSheet.Paste
试试这个
Range("A1").Select
Selection.Copy
Range("B1").Select
ActiveSheet.Paste
我会做这样的事情来避免实际上 select 单元格:
Sub MoveShape()
Dim s As Shape
Dim T, L, celWidth, shpWidth, celHeight, shpHeight As Double
Dim rng As Range
Dim ws as Worksheet
Set s = ws.Shapes(1).Duplicate ''You'll have to get the index of the shape you want to copy
Set rng = Range("A3") ''Set this to your target range
T = rng.Top
L = rng.Left
celWidth = rng.Width
shpWidth = s.Width
celHeight = rng.Height
shpHeight = s.Height
s.Top = T + (celHeight - shpHeight) / 2
s.Left = L + (celWidth - shpWidth) / 2
End Sub
这将复制您的形状,并将生成的克隆体放在目标范围的中心。您可以通过修改 s.Left
和 s.Top
值来更改其在单元格中的位置。
您现在可以使用 Range("A3").Value = Range("A1").Value
将单元格的实际值复制到您的目标范围
如何复制形状及其所在的单元格?当我手动复制时,形状跟随单元格,但是当我用宏复制时,除了形状之外,我得到了其他所有东西。
Cells(sourceRow, sourceColumn).Copy
Cells(targetRow, targedColumn).PasteSpecial
...
Range("A1").copy
Range("B2").PasteSpecial Operation:=xlPasteAll
我想尽办法了...但那个形状就是动不了。
记录了手册copy/paste,这是我得到的:
Range("A1").Select
Selection.Copy
Range("A3").Select
ActiveSheet.Paste
试试这个
Range("A1").Select
Selection.Copy
Range("B1").Select
ActiveSheet.Paste
我会做这样的事情来避免实际上 select 单元格:
Sub MoveShape()
Dim s As Shape
Dim T, L, celWidth, shpWidth, celHeight, shpHeight As Double
Dim rng As Range
Dim ws as Worksheet
Set s = ws.Shapes(1).Duplicate ''You'll have to get the index of the shape you want to copy
Set rng = Range("A3") ''Set this to your target range
T = rng.Top
L = rng.Left
celWidth = rng.Width
shpWidth = s.Width
celHeight = rng.Height
shpHeight = s.Height
s.Top = T + (celHeight - shpHeight) / 2
s.Left = L + (celWidth - shpWidth) / 2
End Sub
这将复制您的形状,并将生成的克隆体放在目标范围的中心。您可以通过修改 s.Left
和 s.Top
值来更改其在单元格中的位置。
您现在可以使用 Range("A3").Value = Range("A1").Value
将单元格的实际值复制到您的目标范围