我正在用Excel编写一个程序,该程序会从目录中拾取所有照片并将它们放入程序中。主要是我需要将这些照片分开放置和排序,因为此存档将被打印和裁切。
我想做的是,在VBA中执行一种算法,该算法试图将这些照片排在同一行中5张,下一张5张,下一张5张...
这看起来很简单,但是我不知道为什么我的程序给我一些问题。
它有效,并且我已经确定了故障。问题是,当我不得不更改行时,下一行的第一张照片插入到与最后一行的最后一张照片相同的位置。我的意思是,如果我有10张照片1,2,3,4,5,6,7,8,9,10 1 2 3 4 5(下一行) 6 7 8 9 10
但是我得到的是:
1 2 3 4 56(下一个代码一个)(下一行) 7 8 9 10
这让我感到惊讶,因为下一行中第一张照片的存储空间仍然为空,但照片在该行中,然后粘贴了另一张照片。
这是我的代码,试图订购图像:
Count = 0
columna = 2
i = 0
cll = 1
Sheets("Hoja3").Select
For Each celda In rng
If Len(Trim(celda)) > 0 Then
'defino la celda equivalente de la columna A y la selecciono
If columna <= 10 Then
' MsgBox (columna)
Set r1 = Cells(cll, columna)
columna = columna + 2
Else
columna = 2
cll = cll + 2
Set rl = Cells(cll, columna)
columna = columna + 2
End If
r1.Select
'se inserta la imagen de la ruta definida
Set Fotos = ActiveSheet.Pictures.Insert(Ruta & celda.Value)
'con la posición definida respecto a la celda de la columna B seleccionada
With Fotos
.Top = r1.Top
.Width = .Width / 2.5
.Height = .Height / 2.5
.Left = r1.Left + (r1.Width - Fotos.Width) / 3
.ShapeRange.LockAspectRatio = msoFalse
r1.EntireRow.RowHeight = .Height
.Placement = xlMoveAndSize
End With
r1.Select
End If
Next celda
答案 0 :(得分:0)
尝试一下:
Dim pos As Long
pos = 0
For Each celda In Rng
If Len(Trim(celda)) > 0 Then
Set Fotos = Sheets("Hoja3").Pictures.Insert(Ruta & celda.Value)
Set r1 = Sheets("Hoja3").Cells(((pos \ 5) + 1) * 2, (pos Mod 5) + 1 * 2)
With Fotos
.Top = r1.Top
.Width = .Width / 2.5
.Height = .Height / 2.5
.Left = r1.Left + (r1.Width - Fotos.Width) / 3
.ShapeRange.LockAspectRatio = msoFalse
.Placement = xlMoveAndSize
r1.EntireRow.RowHeight = .Height
End With
pos = pos + 1
End If
Next