• ベストアンサー

エクセルでのVBAについて

エクセル2000を使用しています。 VBAにて「表示したい物件名をクリックしてください」のMsgBOXを表示してyesまたはnoを表示して YESが選択されたときはセルをクリックし、その後に範囲指定をします。 noが選択されたときは何も動作をしないという動きをしたいのですが、宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.5

要は全部分からないっちゅう事ですね (^_^;) 適当に作ってみました。 下準備 何が起きても良いように、本番で使うBookのコピーをとります。必ず行って下さい。 次に Alt + F11 を開いて、ツール → オプションと進んでもらうと 新しい窓が出てきますので、編集タブの「変数の宣言を強制する」にチェックを入れて下さい 他は・・・自分で調べてね 本番 Alt + F11 を開いて、メニューの挿入から、標準モジュールを選択すると Option Explicit だけが載っているウィンドウが出てきますので 下記をコピペ Public boolCopy As Boolean 'コピーしているかの判断 Public boolCopyMode As Boolean 'kantanCopyが有効であるか Sub kantanCopy()   boolCopy = False  '初期化   If MsgBox("簡単コピーを有効にしますか", vbOKCancel) = vbOK Then     boolCopyMode = True   Else     boolCopyMode = False   End If End Sub 次にCtrl + R を押して、プロジェクトエクスプローラの窓に移ります。 ThisWorkBookをクリックすると新たな窓が出ますので そこへ下記をコピペ Private Sub Workbook_SheetBeforeDoubleClick _     (ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) On Error GoTo errHnd   If boolCopyMode = False Then Exit Sub   If boolCopy = False Then     ActiveSheet.Range("C" & Target.Row, "K" & Target.Row).Copy     boolCopy = True     Cancel = True     Exit Sub   Else     ActiveSheet.Paste     boolCopy = False     Cancel = True     SendKeys "{ESC}"   End If Exit Sub errHnd: boolCopy = False End Sub ここまで出来たら、メニュー → デバッグ → VBAProjectのコンパイルをクリック で、エラーが出なかったら一旦Bookを保存しましょう。 使い方 マクロからkantanCopy を実行すると有効にするか聞いてきますので、OK を選択 そうするとシートでダブルクリックすると、その行のC列からK列までコピーされます 別のセルでもう一度ダブルクリックすると、あら不思議!ペーストされます。     ActiveSheet.Range("C" & Target.Row, "K" & Target.Row).Copy              ↑        ↑  ここで列の指定してます。 ただし私のサンプルの場合、従来ならダブルクリックでセルの編集モードに入りますが 入れなくなります。その時はマクロkantanCopy で「簡単コピー」を無効にしてください。 もっとスマートなやり方も有るかと思います。ExcelでのVBAは完全に自信なし。 あくまでもサンプルという事にします

kuwong
質問者

お礼

重ね重ねありがとう御座います。 上手くいきました。 これからも少しずつ勉強していきますので、又よろしくお願いします。

その他の回答 (4)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

Set x = Application.InputBox(Prompt:="範囲選択", Type:=8) のようにApplication.InputBox を使えば選択範囲を入力させることができます。

kuwong
質問者

補足

ありがとうございます。 すみません。私、あまりVBAに関してはわかっていないので・・・コマンドボタンを使わない方法ってあるのでしょうか? やりたい処理は「コピー」のボタンを作成して、そのボタンをクリックしたら、メッセージで「物件名をクリックしてください」と表示されます。で、マウスで、物件名が表示されているセルをクリックするとそのセルを含んだ行(例えばC1をクリックするとC1からU1まで)をコピーするという動作をしたいのです。

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.3

YESが選択されたとき・・を逆に考えればよいのでは? Privatte Sub konobutton1_Click()   if msgbox("処理開始しますか",vbyesno) = vbno then     exit sub   end if      '処理開始 End Sub

kuwong
質問者

補足

ありがとうございます。 すみません。私、あまりVBAに関してはわかっていないので・・・コマンドボタンを使わない方法ってあるのでしょうか? やりたい処理は「コピー」のボタンを作成して、そのボタンをクリックしたら、メッセージで「物件名をクリックしてください」と表示されます。で、マウスで、物件名が表示されているセルをクリックするとそのセルを含んだ行(例えばC1をクリックするとC1からU1まで)をコピーするという動作をしたいのです。

noname#22222
noname#22222
回答No.2

ちょっと、質問の主旨が理解できません。 「YESが選択されたときは」という限りでは、次のように、If Then 文を使用していると推察します。 であれば、何が問題なのでしょうか? Private Sub CommandButton1_Click()   Dim Answer As Integer      Answer = Verify("MsgBox を表示しますか?")   If Answer = vbYes Then     MsgBox "Yes が選択されました"   End If End Sub

kuwong
質問者

補足

ありがとうございます。 すみません。私、あまりVBAに関してはわかっていないので・・・コマンドボタンを使わない方法ってあるのでしょうか? やりたい処理は「コピー」のボタンを作成して、そのボタンをクリックしたら、メッセージで「物件名をクリックしてください」と表示されます。で、マウスで、物件名が表示されているセルをクリックするとそのセルを含んだ行(例えばC1をクリックするとC1からU1まで)をコピーするという動作をしたいのです。

回答No.1

If vbYes = MsgBox("表示したい物件名をクリックしてください", vbYesNo, "タイトル") Then セルクリック処理 End If でYES選択時のみ処理を行います。 これでどうでしょう?

kuwong
質問者

補足

ありがとうございます。 すみません。私、あまりVBAに関してはわかっていないので・・・ やりたい処理は「コピー」のボタンを作成して、そのボタンをクリックしたら、メッセージで「物件名をクリックしてください」と表示されます。で、マウスで、物件名が表示されているセルをクリックするとそのセルを含んだ行(例えばC1をクリックするとC1からU1まで)をコピーするという動作をしたいのです。

関連するQ&A

専門家に質問してみよう