[[20080119133300]] 『取り消しボタン』(田中です) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『取り消しボタン』(田中です)

マクロで作業した時に元に戻すボタンが使用できません。

だから、元に戻すというボタンをVBAで作りたいのですが

どなたかお願いします。


 できる場合とそうでない場合がありますよ?
 どんなコードですか?
 (seiya)

マクロがへたくそなんですが・・・
点を表示し隣のカーソルに移動し、又点を表示して
隣のカーソルへ移動の繰り返しなんですが

Sub ten3()
'
' ten3 Macro
'

'

    ActiveCell.FormulaR1C1 = "・"
   With ActiveCell
    .Value = "・"        
    .Offset(0, 1).Select  
End With
 ActiveCell.FormulaR1C1 = "・"
   With ActiveCell
    .Value = "・"        
    .Offset(0, 1).Select  
End With
 ActiveCell.FormulaR1C1 = "・"
   With ActiveCell
    .Value = "・"        
    .Offset(0, 1).Select  
End With

End Sub


マクロ処理をUndo機能では元には戻せない

ということが原則だと思った方が良いですよ!!

例えば、提示されたコードは、

Sub canceltest()

    activecell.activate
    SendKeys "・{TAB}・{TAB}・{TAB}"
End Sub

これとほぼ同じですよね

上記を実行した後、

元に戻すボタンを3回クリックすれば、元には戻ります。

本当に特別事例のみです(Excel4Macroは元に戻せる等)

提示されたコードに関して、元に戻すと言うなら、

元の値をどこかにセーブしておく等の方法も考えられます(Excel2000以上なら、IDプロパティを利用する)

が、根本的にVBAでの処理のUndo機能を実現するのは難しいですよ!!

ichinose


 こんな感じで試してください。

 Private OldData As Variant
 Private OldAdd As String

 Sub ten3() ' ' ten3 Macro ' 
   With ActiveCell.Resize(,3)
       OldData = .Value
       OldAdd = .Address
         .Value = "・"
   End With
 End Sub

 Sub myUndo()
  Dim temp
  If OldAdd <> "" Then
      With Range(OldAdd)
          temp = .Value
          .Value = OldData
          OldData = temp
      End With
  Else
      MsgBox "Can't Undo yet"
  End If
 End Sub
 (seiya)


たなかです

完璧です!!

ありがとうございました。


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.