C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: クリックではなくエンターキーで確定するには


(過去ログ 81 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■48105 / inTopicNo.1)  クリックではなくエンターキーで確定するには
  
□投稿者/ VB、初初初所心者 (3回)-(2010/03/24(Wed) 17:17:31)

分類:[VB6 以前] 

VBのまくろでクリックではなくエンターキーで移動したり確定するにはどう記述
すればよいですか?
    Range("d2").Select

D2のセルをエンターしたときにE300などに移動するマクロを記述するにはどうすればよいでしょうか?
引用返信 編集キー/
■48108 / inTopicNo.2)  Re[1]: クリックではなくエンターキーで確定するには
□投稿者/ だい (48回)-(2010/03/24(Wed) 18:08:19)
No48105 (VB、初初初所心者 さん) に返信
> VBのまくろでクリックではなくエンターキーで移動したり確定するにはどう記述
> すればよいですか?
>     Range("d2").Select
>
> D2のセルをエンターしたときにE300などに移動するマクロを記述するにはどうすればよいでしょうか?

KeyDownイベントで押されたキーを判断してエンターだったら次のコントロールにフォーカスするようにすればいいと思います。
引用返信 編集キー/
■48112 / inTopicNo.3)  Re[1]: クリックではなくエンターキーで確定するには
□投稿者/ 魔界の仮面弁士 (1575回)-(2010/03/24(Wed) 20:37:38)
No48105 (VB、初初初所心者 さん) に返信
> VBのまくろでクリックではなくエンターキーで移動したり確定するにはどう記述
> すればよいですか?

Excel VBA の UserForm のことであれば、KeyDown イベントや KeyPress イベントが使えます。

一方、シート上で Enter を押したときに『次に移動すべきセル位置』の制御だとすれば、
 ・Excel オプションの[編集]タブ(Excel 2003 以下)
 ・Office ボタン>Excel オプションの[詳細設定]タブ(Excel 2007)
 ・VBA で、Application オブジェクトの MoveAfterReturnDirection プロパティを設定する
のいずれかで、移動方向を上下左右のいずれかから決定できます(移動しないようにも設定できます)。


>     Range("d2").Select
> D2のセルをエンターしたときにE300などに移動するマクロを記述するにはどうすればよいでしょうか?

移動先の制限が必要な場合、たとえば、ワークシート上に以下のイベント制御を組み込んでおく事ができます。

 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Target.Address(True, True, xlA1) = "$D$2" Then
   If Application.MoveAfterReturnDirection = False Then
    Application.MoveAfterReturnDirection = xlDown
   End If
   Cells.Locked = True
   Range("$D$2").Locked = False
   Range("$E$300").Locked = False
   EnableSelection = xlUnlockedCells
   Protect _
    DrawingObjects:=False, _
    Contents:=True, _
    Scenarios:=True, _
    AllowFormattingCells:=True, _
    AllowFormattingColumns:=True, _
    AllowFormattingRows:=True, _
    AllowInsertingColumns:=True, _
    AllowInsertingRows:=True, _
    AllowInsertingHyperlinks:=True, _
    AllowDeletingColumns:=True, _
    AllowDeletingRows:=True, _
    AllowSorting:=True, _
    AllowFiltering:=True, _
    AllowUsingPivotTables:=True
  Else
   EnableSelection = xlNoRestrictions
   Unprotect
  End If
 End Sub

このようにしておくと、D2 セル上で Enter を押したときに E300 に遷移するようになります。

# 上記は、Excel 2007 の場合です。
# 他のバージョンでは、Protect メソッドに指定できる引数が少ないので、適宜書き換えて下さい。


ただしこの手法の場合には、
 ・D2 セル上にいる場合には、E300 以外のセルをクリックしても移動できない。
 ・D2 セル上で、矢印キーやTabキーを押した場合にも、(Enter を押していないのに)E300に移動する。
という制限が生じます。


あるいは…… API や DirectInput 等でキー入力を調べるという手法もありますが、
> D2のセルをエンターしたときに
のように、特定のタイミングに依存するようなケースでは、使いにくいかもしれません。
(こちらの手法は、Excel VBA でゲームを作成をするような場合に使われることがあります)
引用返信 編集キー/
■48152 / inTopicNo.4)  Re[2]: クリックではなくエンターキーで確定するには
□投稿者/ VB、初初初所心者 (4回)-(2010/03/25(Thu) 22:49:49)
No48112 (魔界の仮面弁士 さん) に返信
> ■No48105 (VB、初初初所心者 さん) に返信
>>VBのまくろでクリックではなくエンターキーで移動したり確定するにはどう記述
>>すればよいですか?
>
> Excel VBA の UserForm のことであれば、KeyDown イベントや KeyPress イベントが使えます。
>
> 一方、シート上で Enter を押したときに『次に移動すべきセル位置』の制御だとすれば、
>  ・Excel オプションの[編集]タブ(Excel 2003 以下)
>  ・Office ボタン>Excel オプションの[詳細設定]タブ(Excel 2007)
>  ・VBA で、Application オブジェクトの MoveAfterReturnDirection プロパティを設定する
> のいずれかで、移動方向を上下左右のいずれかから決定できます(移動しないようにも設定できます)。
>
>
>>    Range("d2").Select
>>D2のセルをエンターしたときにE300などに移動するマクロを記述するにはどうすればよいでしょうか?
>
> 移動先の制限が必要な場合、たとえば、ワークシート上に以下のイベント制御を組み込んでおく事ができます。
>
>  Private Sub Worksheet_SelectionChange(ByVal Target As Range)
>   If Target.Address(True, True, xlA1) = "$D$2" Then
>    If Application.MoveAfterReturnDirection = False Then
>     Application.MoveAfterReturnDirection = xlDown
>    End If
>    Cells.Locked = True
>    Range("$D$2").Locked = False
>    Range("$E$300").Locked = False
>    EnableSelection = xlUnlockedCells
>    Protect _
>     DrawingObjects:=False, _
>     Contents:=True, _
>     Scenarios:=True, _
>     AllowFormattingCells:=True, _
>     AllowFormattingColumns:=True, _
>     AllowFormattingRows:=True, _
>     AllowInsertingColumns:=True, _
>     AllowInsertingRows:=True, _
>     AllowInsertingHyperlinks:=True, _
>     AllowDeletingColumns:=True, _
>     AllowDeletingRows:=True, _
>     AllowSorting:=True, _
>     AllowFiltering:=True, _
>     AllowUsingPivotTables:=True
>   Else
>    EnableSelection = xlNoRestrictions
>    Unprotect
>   End If
>  End Sub
>
> このようにしておくと、D2 セル上で Enter を押したときに E300 に遷移するようになります。
>
> # 上記は、Excel 2007 の場合です。
> # 他のバージョンでは、Protect メソッドに指定できる引数が少ないので、適宜書き換えて下さい。
>
>
> ただしこの手法の場合には、
>  ・D2 セル上にいる場合には、E300 以外のセルをクリックしても移動できない。
>  ・D2 セル上で、矢印キーやTabキーを押した場合にも、(Enter を押していないのに)E300に移動する。
> という制限が生じます。
>
>
> あるいは…… API や DirectInput 等でキー入力を調べるという手法もありますが、
>>D2のセルをエンターしたときに
> のように、特定のタイミングに依存するようなケースでは、使いにくいかもしれません。
> (こちらの手法は、Excel VBA でゲームを作成をするような場合に使われることがあります)

詳しい内容でありがとうございました。
またよろしくおねがいします

解決済み
引用返信 編集キー/
■48154 / inTopicNo.5)  Re[1]: クリックではなくエンターキーで確定するには
□投稿者/ VB、初初初所心者 (5回)-(2010/03/25(Thu) 22:52:55)
No48105 (VB、初初初所心者 さん) に返信
> VBのまくろでクリックではなくエンターキーで移動したり確定するにはどう記述
> すればよいですか?
>     Range("d2").Select
>
> D2のセルをエンターしたときにE300などに移動するマクロを記述するにはどうすればよいでしょうか?

ありがとうございました
引用返信 編集キー/
■48155 / inTopicNo.6)  Re[2]: クリックではなくエンターキーで確定するには
□投稿者/ VB、初初初所心者 (6回)-(2010/03/25(Thu) 22:56:33)
No48154 (VB、初初初所心者 さん) に返信
> ■No48105 (VB、初初初所心者 さん) に返信
>>VBのまくろでクリックではなくエンターキーで移動したり確定するにはどう記述
>>すればよいですか?
>>    Range("d2").Select
>>
>>D2のセルをエンターしたときにE300などに移動するマクロを記述するにはどうすればよいでしょうか?
>
> ありがとうございました
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -