Excel VBA質問箱 IV

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

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


6453 / 13646 ツリー ←次へ | 前へ→

【45130】オートシェイプの移動のあとで dom 06/12/13(水) 14:32 質問[未読]
【45131】Re:オートシェイプの移動のあとで Jaka 06/12/13(水) 14:55 発言[未読]
【45134】Re:オートシェイプの移動のあとで dom 06/12/13(水) 15:30 質問[未読]
【45161】Re:オートシェイプの移動のあとで Jaka 06/12/14(木) 9:13 発言[未読]
【45164】Re:オートシェイプの移動のあとで dom 06/12/14(木) 10:03 質問[未読]
【45171】Re:オートシェイプの移動のあとで Jaka 06/12/14(木) 10:31 発言[未読]
【45172】Re:オートシェイプの移動のあとで dom 06/12/14(木) 10:57 お礼[未読]
【45133】Re:オートシェイプの移動のあとで Kein 06/12/13(水) 15:14 回答[未読]

【45130】オートシェイプの移動のあとで
質問  dom  - 06/12/13(水) 14:32 -

引用なし
パスワード
       はじめまして、お願いします。
      
  
   Declare Sub Sleep Lib"kernel32"(Byval dwMilliseconds As Long)
  
  Sub test
  Dim i As Integer
  Dim shprng As Shape

  With Active.Sheet.Shapes(1)
     .Select
     .Top=Range("B2").Top
     .Left=Range("B2").Left
  End With

  Set shprng=Selection.ShapeRange(1)

  For i = 1 To 200
   shprng.IncrementLeft 0.75
   DoEvents
  Sleep 200
  Next
 
  End Sub
  記載されていたコードを参考にして記述しました。
  

  なぜコードを実行させると、終了した後でそのオートシェイプが
  選択した状態になるのかわかりません。選択させないようにするには
  どうしたらいいですか?あとコードの実行のあと元の位置に
  オートシェイプを戻すことはできますか?
   

【45131】Re:オートシェイプの移動のあとで
発言  Jaka  - 06/12/13(水) 14:55 -

引用なし
パスワード
   選択した状態になるのでしょうか?って、選択しているからとしか....。
戻すには最初の位置を取得しておいて、後で戻せば良いです。

  Sub test()
  Dim i As Integer
  Dim shprng As Shape
  Dim TTP As Double, LLT As Double

  With ActiveSheet.Shapes(1)
     TTP = .Top
     LLT = .Left
     '.Select
     .Top = Range("B2").Top
     .Left = Range("B2").Left
  End With

  'Set shprng = Selection.ShapeRange(1)
  Set shprng = ActiveSheet.Shapes(1)

  For i = 1 To 50
   shprng.IncrementLeft 0.75
   DoEvents
  Sleep 200
  Next
 
  With shprng
    .Top = TTP
    .Left = LLT
  End With

  End Sub

【45133】Re:オートシェイプの移動のあとで
回答  Kein  - 06/12/13(水) 15:14 -

引用なし
パスワード
   Declare Sub Sleep Lib"kernel32"(Byval dwMilliseconds As Long)

Sub test()
  Dim i As Integer
  Dim Lp As Single, Tp As Single
 
  With ActiveSheet.Shapes
   If .Count = 0 Then Exit Sub
   With .Item(1)
     Lp = .Left: Tp = .Top
     .Top = .Parent.Range("B2").Top
     .Left = .Parent.Range("B2").Left
     For i = 1 To 200
      .IncrementLeft 0.75
      DoEvents: Sleep 200
     Next i
     Sleep 3000
     .Left = Lp: .Top = Tp
   End With
  End With
End Sub

で、出来ましたが。

【45134】Re:オートシェイプの移動のあとで
質問  dom  - 06/12/13(水) 15:30 -

引用なし
パスワード
     jakaさん こんにちは、はじめまして

  マクロを実行させている間、そのオートシェイプは移動中も
  選択した状態だからなんですね。ではマクロが終わったあと
  オートシェイプを選択してない状態にするにはどうすれば
  いいのでしょうか?
  
  コードの見本ありがとうございます。初心者なので
  ゆっくりコードを分析してみます。

【45161】Re:オートシェイプの移動のあとで
発言  Jaka  - 06/12/14(木) 9:13 -

引用なし
パスワード
   ▼dom さん:
>  オートシェイプを選択してない状態にするにはどうすれば
>  いいのでしょうか?
どこか適当なセルを選択すれば解除できます。

【45164】Re:オートシェイプの移動のあとで
質問  dom  - 06/12/14(木) 10:03 -

引用なし
パスワード
      jakaさん おはようございます。ありがとうございました。
   昨日コードをみて思ったのですが

   With shprng
     .IncrementTop -0.75
     .IncrementLeft 0.75
   End With
   のところでどうして 0.75という数値を扱うのでしょうか?
   よろしければご教授かださい。 
       

【45171】Re:オートシェイプの移動のあとで
発言  Jaka  - 06/12/14(木) 10:31 -

引用なし
パスワード
   ▼dom さん:
>   With shprng
>     .IncrementTop -0.75
>     .IncrementLeft 0.75
>   End With
>   のところでどうして 0.75という数値を扱うのでしょうか?
私が決めた数値じゃないです。
って、そんな数値を書いた覚えないけど....。

  For i = 1 To 50     ↓これのこと?
   shprng.IncrementLeft 0.75
   DoEvents
  Sleep 200
  Next

提示されてあったコードを選択しないようにちょこっと修正しただけです。
数値については、初めから書いてあったものなので良く解りません。

なんとなくですが、エクセルのドットじゃなくて、ピクセルじゃなくてなんていうのか忘れた移動幅の最小数値じゃないかと思います。(最小なのかは、未確認ですが大体そんなものだったような...。)

【45172】Re:オートシェイプの移動のあとで
お礼  dom  - 06/12/14(木) 10:57 -

引用なし
パスワード
     ありがとうございました。わかりました。

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