[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ボタンを押す毎に切り替えるには』(yama)
マクロ初心者ですが よろしくお願いします。
以下は、2パターンのコピペを実行した記録ですが
フォームのボタンを1回押すごとにコピペする方法を
教授お願いします。
Sub Macro2()
'
' Macro2 Macro
'
'
ActiveWindow.SmallScroll Down:=76 Range("AH107:AN126").Select Selection.Copy ActiveWindow.SmallScroll Down:=-38 Range("AH62:AJ63").Select ActiveSheet.Paste ここで一度終了 ================ Range("AL88").Select ActiveWindow.SmallScroll Down:=57 Range("AH128:AN147").Select Application.CutCopyMode = False Selection.Copy ActiveWindow.SmallScroll Down:=-57 Range("AH62:AN63").Select ActiveSheet.Paste Range("AL87").Select End Sub
< 使用 Excel:Excel2016、使用 OS:Windows10 >
(マナ) 2017/02/24(金) 19:32
(マナ) 2017/02/24(金) 19:38
Sub test()
With ActiveSheet.Shapes(Application.Caller) If .Name = "コピー1" Then Range("AH107:AN126").Copy Range("AH62") .Name = "コピー2" Else Range("AH128:AN147").Copy Range("AH62") .Name = "コピー1" End If End With
End Sub
(マナ) 2017/02/24(金) 19:59
こんな書き方もあるでしょうか。
Option Explicit
Dim flag As Boolean
Sub Macro2() flag = Not flag If flag Then Range("AH107:AN126").Copy Range("AH62") Else Range("AH128:AN147").Copy Range("AH62") End If End Sub
変数の永続性を考えると、モジュールレベルの変数ではまずいかもしれないですね。
マナさんが提示された方法は、その点、完璧だと思います。 このほか、シートにflagの値を保存しておくとか、色々な手段があるかもしれません。 ただ、所詮、もう一度押せば選択肢は変わるのですから、 余り凝らなくてもいいかなあと思ったりします。
=========================== それよりもまず、マクロ記録のシェイプアップの仕方をマスターすることですね。 ・SmallScrollメソッドは結果に関係しないとか、 ・コピーメソッドは、貼り付け先の左上のひとつのセルを指定するだけでよい。 ・コピーメソッドは、一行で書けるとか いったことですね。
(γ) 2017/02/24(金) 20:20
(γ)さん
ありがとうございました。
>それよりもまず、マクロ記録のシェイプアップの仕方をマスターすることですね。
勉強します。
(yama) 2017/02/24(金) 20:48
# よかれと思って書いたひと言に、カチンとこられているのでしょうかね。
flag = Not flag
の意味はわかりますか?
Dim flag As Boolean
ということは、flagは True か False を取る変数です。
flag = Not flag とすることで、 flagが FalseならTrue に変更 flagが True ならFalseに変更しています。 その値によって、処理を分岐しています。 flag = Not flag といった書き方は割とよく出てくる書き方ですので、 頭の片隅に置いておかれると、役立つかもしれません。 老婆心ながら追加説明しました。
(γ) 2017/02/24(金) 21:21
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.