Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5739 / 76735 ←次へ | 前へ→

【76603】Re:画像の移動
発言  β  - 15/2/6(金) 20:45 -

引用なし
パスワード
   ▼vbaビギナー さん:

こんばんは

運用保守を考えると、↑でアップした方法より以下がいいかと思い直しました。
隠しシート(非表示でもOK)を用意し、そこに【元の図の位置】を格納しておきます。

1.各図をしかるべき【元の位置】に配置した状態で、StoreOriginal を実行してください。
  これは、元の図の位置を変更したら、その時にも実行してください。
2.シート上の操作は従来と同じです。

コードは、逆にシートモジュール一本にしました。
標準モジュールやThisWOrkbookモジュールのコードは消去してください。
なお、隠しシート名を仮に "SHeet2" にしてあります。

いずれかの図がA列のそばに移動している状態で保存しますと、次回、開いた際にも
移動したままで表示されますが、他の図を選ぶと、元の位置にもどります。

(シートモジュール)

Option Explicit

Const SHN As String = "Sheet2"   '隠しシート名

Private Sub Worksheet_Change(ByVal Target As Range)

  If Intersect(Target, Range("A1:A10")) Is Nothing Then Exit Sub
  If Target.Count <> 1 Then Exit Sub
  
  ResetOriginal
  
  Select Case Target.Value
    Case "みかん"
      Shapes(1).top = Target.top
      Shapes(1).left = Target.Width
    Case "りんご"
      Shapes(2).top = Target.top
      Shapes(2).left = Target.Width
    Case "さかな"
      Shapes(3).top = Target.top
      Shapes(3).left = Target.Width
    Case "牛乳"
      Shapes(4).top = Target.top
      Shapes(4).left = Target.Width
        Case "こおり"
      Shapes(5).top = Target.top
      Shapes(5).left = Target.Width
  End Select
End Sub

Sub StoreOriginal()
  With Sheets(SHN)
    .Range("A1").Value = Shapes(1).left
    .Range("A2").Value = Shapes(1).top
    .Range("A3").Value = Shapes(2).left
    .Range("A4").Value = Shapes(2).top
    .Range("A5").Value = Shapes(3).left
    .Range("A6").Value = Shapes(3).top
    .Range("A7").Value = Shapes(4).left
    .Range("A8").Value = Shapes(4).top
    .Range("A9").Value = Shapes(5).left
    .Range("A10").Value = Shapes(5).top
  End With
End Sub

Sub ResetOriginal()
  With Sheets(SHN)
    Shapes(1).left = .Range("A1").Value
    Shapes(1).top = .Range("A2").Value
    Shapes(2).left = .Range("A3").Value
    Shapes(2).top = .Range("A4").Value
    Shapes(3).left = .Range("A5").Value
    Shapes(3).top = .Range("A6").Value
    Shapes(4).left = .Range("A7").Value
    Shapes(4).top = .Range("A8").Value
    Shapes(5).left = .Range("A9").Value
    Shapes(5).top = .Range("A10").Value
  End With
End Sub

0 hits

【76601】画像の移動 vbaビギナー 15/2/6(金) 14:23 質問[未読]
【76602】Re:画像の移動 β 15/2/6(金) 19:49 発言[未読]
【76603】Re:画像の移動 β 15/2/6(金) 20:45 発言[未読]
【76606】Re:画像の移動 vbaビギナー 15/2/9(月) 8:33 お礼[未読]
【76604】Re:画像の移動 マナ 15/2/7(土) 13:54 発言[未読]
【76605】Re:画像の移動 マナ 15/2/7(土) 17:34 発言[未読]
【76607】Re:画像の移動 vbaビギナー 15/2/9(月) 8:37 お礼[未読]

5739 / 76735 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free