- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
回復 1# baconbacons
試試看- Option Explicit
- Sub Ex()
- Dim Sh As Worksheet, AR(), P(), i As Integer, X As Integer
- Dim M As Single, M1 As Single, MyPicture As String
- Set Sh = Sheet1
- X = 1
- For i = 1 To Sh.Shapes.Count
- If Sh.Shapes(i).Type = msoPicture Then '表工作表上的圖案 是圖片
- ReDim Preserve AR(1 To X)
- ReDim Preserve P(1 To X)
- AR(X) = Sh.Shapes(i).Top '紀錄從圖案範圍中最頂端圖案的頂端到工作表頂端的距離
- P(X) = i '紀錄表工作表上圖案的索引位置
- X = X + 1
- End If
- Next
- '******** 選取圖片 ********
- With Application.FileDialog(msoFileDialogOpen)
- .Filters.Add "Images", "*.gif; *.jpg; *.jpeg", 1
- .FilterIndex = 1
- If .Show = True Then
- MyPicture = .SelectedItems(1)
- Else
- MsgBox "沒有選擇圖片!!!"
- Exit Sub
- End If
- End With
-
- If X = 1 Then
- If MsgBox("新增圖片 :" & MyPicture, vbYesNo, Sh.Name) = vbNo Then Exit Sub
- i = 0
- Else
- On Error Resume Next
- i = InputBox("新增圖片 :" & MyPicture & " 為第幾張圖片", Sh.Name & " 圖片共 " & X - 1 & " 張")
- If Err <> 0 Then Exit Sub
- If i = 0 Or i > X Then
- MsgBox "第" & i & "張 不在範圍中"
- Exit Sub
- End If
- '*******移動圖片位置
- For X = UBound(AR) To i Step -1 '圖片檔由下往上下移位置
- M = Application.Small(AR, X)
- M = Application.Match(M, AR, 0)
- With Sh.Shapes(P(M))
- If UBound(AR) = 1 And X = UBound(AR) Then
- M1 = .Height + [A1].Height
- ElseIf X > 1 Then
- M1 = Application.Small(AR, X - 1)
- M1 = .Top + (.Top - Application.Small(AR, X - 1))
- ElseIf X = i Then
- M1 = Application.Small(AR, X + 1)
- End If
- .Top = M1
- End With
- Next
- End If
- With Sh.Pictures.Insert(MyPicture)
- If i = 0 Then
- .Top = 0
- .Left = 0
- ElseIf i >= 1 And i <= UBound(AR) Then
- .Top = Application.Small(AR, i)
- .Left = Sh.Shapes(P(1)).Left
- ElseIf i > UBound(AR) Then
- M = Application.Small(AR, UBound(AR))
- M = Application.Match(M, AR, 0)
- .Top = Sh.Shapes(P(M)).Top + Sh.Shapes(P(M)).Height + [A1].Height
- .Left = Sh.Shapes(P(M)).Left
- End If
- .Height = 200
- .Width = 200
- End With
- End Sub
複製代碼 |
|