|
失礼しました。
詳細を書かせていただきます。
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
>
>は問題なく動作します。
|
|