Excel VBA質問箱 IV

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

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


42484 / 76732 ←次へ | 前へ→

【39316】Re:コマンドボタンでEnterを押して処理さ...
質問  mutu  - 06/6/22(木) 11:12 -

引用なし
パスワード
   失礼しました。
詳細を書かせていただきます。

OSはWinXP、Professional ver2002, SP2
ExcelはExcel2000
エクセルのVB Editorで編集しています。

試しに、下記のような、仮プログラムを作ってみましたが
やはり異常終了してしまいました。

Sheet1にボタン×2
Sheet2にボタン×2(画面遷移ボタン、終了ボタン)
という構成です。
※同一シート内のボタンはTabでフォーカス移動させる。


【ThisWorkbook】

Private Sub Workbook_Open()
  ChDir ThisWorkbook.Path
  With Application
    .ScreenUpdating = False     '画面更新なし
    .DisplayFormulaBar = False   
  End With
  
  Sheet1.Activate
End Sub

'エクセルを終了させる。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Application.Quit
End Sub


【Sheet1】

Private Sub CommandButton1_Click()
    ChDir ThisWorkbook.Path
    Sheet2.Activate
End Sub

Private Sub CommandButton1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  Call 移動(KeyCode, 1)  'Tabキー押下でフォーカス移動

  If KeyCode = 13 Then  'Enterキー押下でボタンクリック
  CommandButton1_Click
End If
End Sub

Private Sub CommandButton2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  Call 移動(KeyCode, 2)  'Tabキー押下でフォーカス移動

  If KeyCode = 13 Then   'Enterキー押下でボタンクリック
  CommandButton1_Click
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  CommandButton1.Activate
End Sub

'Tabキー押下でフォーカス移動をさせるため
Sub 移動(KeyNo, No)
If KeyNo = vbKeyTab Then
  If No >= 2 Then
   No = 1
  Else
   No = No + 1
  End If
 
  If No = 1 Then
    ActiveSheet.OLEObjects("CommandButton1").Activate
  ElseIf No = 2 Then
    ActiveSheet.OLEObjects("CommandButton2").Activate
  End If
End If
End Sub


【Sheet2】

Private Sub Worksheet_Activate()
  ChDir ThisWorkbook.Path   
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  CommandButton1.Activate
End Sub

Private Sub CommandButton1_Click()
  ChDir ThisWorkbook.Path
  Sheet1.Activate
End Sub

Private Sub CommandButton1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  If KeyCode = 13 Then
  CommandButton1_Click
End If
End Sub

'終了ボタン
Private Sub CommandButton2_Click()
  ChDir ThisWorkbook.Path
  
  Application.DisplayFormulaBar = True
  ActiveWorkbook.Protect Structure:=False, Windows:=True 'ブック

  Application.DisplayAlerts = False              '確認メッセージを出さない
  ActiveWorkbook.Close 'SaveChanges:=False          '確認メッセージを出さずに閉じる
  Application.DisplayAlerts = True
End Sub


以上のプログラミングで、
Sheet1のコマンドボタンが選択されているときに、
Enterを押すと、Sheet2に画面遷移はするのですが、
その後、異常終了してしまいます。
Sheet2のコマンドボタンをクリックしても同様です。


▼漂流民 さん:
>▼mutu さん:
>こんばんわ
>
>確認したいのですが、使用されているのはエクセルVBAですか?
>
>バージョンの違いなどには詳しくないのですが、
>>Private Sub Command1_KeyDown(KeyCode As Integer, Shift As Integer)
>は”VB”のデフォルトのコマンドボタンのKeyDownイベントだと思うのですが?
>”VBA”ではデフォルトで
>Private Sub CommandButton1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
>となると思うのですが?
>
>あと、
>>    .Box1.Value = Year(buf)
>>    .Box2.Value = Month(buf)
>のBox1、Box2はテキストボックスということですか?
>”VB”のデフォルトでは”Text1”、”VBA”のデフォルトでは”TextBox1”だと思うのですが?
>(オブジェクト名はデフォルトを使用するようにして下さい)
>
>OS、Office、(VBを使用しているようであれば)VB、のバージョンを記載してください。
>同じ環境の回答者が答えられると思います。
>
>とりあえず、私の環境では
>
>Private Sub CommandButton1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
>  If KeyCode = 13 Then
>    CommandButton1_Click
>  End If
>End Sub
>
>Private Sub CommandButton1_Click()
>  With Sheets("Sheet1")
>    .TextBox1.Value = Year(Date)
>    .TextBox2.Value = Month(Date)
>    .Select
>  End With
>End Sub
>
>は問題なく動作します。

5 hits

【39296】コマンドボタンでEnterを押して処理させ... mutu 06/6/21(水) 16:58 質問
【39307】Re:コマンドボタンでEnterを押して処理さ... 漂流民 06/6/22(木) 3:22 発言
【39316】Re:コマンドボタンでEnterを押して処理さ... mutu 06/6/22(木) 11:12 質問
【39319】Re:コマンドボタンでEnterを押して処理さ... Jaka 06/6/22(木) 11:28 発言
【39320】Re:コマンドボタンでEnterを押して処理さ... mutu 06/6/22(木) 11:36 質問
【39328】Re:コマンドボタンでEnterを押して処理さ... Jaka 06/6/22(木) 12:02 発言
【39329】Re:コマンドボタンでEnterを押して処理さ... mutu 06/6/22(木) 12:19 質問
【39336】デバックで順を追ってみたのですが mutu 06/6/22(木) 13:33 質問
【39338】Enterキー押下時の処理で他の方法はあり... mutu 06/6/22(木) 14:07 質問
【39358】Re:Enterキー押下時の処理で他の方法はあり... Jaka 06/6/22(木) 15:54 発言
【39365】Re:Enterキー押下時の処理で他の方法はあり... mutu 06/6/22(木) 16:43 質問
【39376】Re:コマンドボタンでEnterを押して処理さ... 漂流民 06/6/23(金) 1:03 発言
【39383】Re:コマンドボタンでEnterを押して処理さ... mutu 06/6/23(金) 9:14 質問
【39395】Re:コマンドボタンでEnterを押して処理さ... Jaka 06/6/23(金) 10:29 発言
【39398】Re:コマンドボタンでEnterを押して処理さ... mutu 06/6/23(金) 11:36 お礼
【39421】Re:コマンドボタンでEnterを押して処理さ... Jaka 06/6/23(金) 16:32 発言
【39436】Re:コマンドボタンでEnterを押して処理さ... 漂流民 06/6/23(金) 22:31 発言
【39520】Re:コマンドボタンでEnterを押して処理さ... mutu 06/6/26(月) 9:26 お礼
【39435】Re:コマンドボタンでEnterを押して処理さ... 漂流民 06/6/23(金) 22:19 発言

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