Excel VBA質問箱 IV

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

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


4606 / 13644 ツリー ←次へ | 前へ→

【55569】シートチェンジ acch 08/5/11(日) 17:52 質問[未読]
【55570】Re:シートチェンジ 阪神 08/5/11(日) 18:48 回答[未読]
【55577】Re:シートチェンジ acch 08/5/11(日) 23:30 お礼[未読]
【55666】Re:シートチェンジ acch 08/5/14(水) 21:38 質問[未読]
【55667】Re:シートチェンジ acch 08/5/14(水) 22:13 お礼[未読]

【55569】シートチェンジ
質問  acch  - 08/5/11(日) 17:52 -

引用なし
パスワード
   教えてください。
A1セルに4桁の数字(時刻)を入れる。
A2セルに4桁の数字(時刻)を入れる。
入力したセルの内容を書き換える。
  1400→14:00
  1610→16:10
A3セルにA2とA1の時間差を出力する。
やりたいことは単純なのですが、
 下記のやり方では、セルに入力すると
 1400→14:00になると、またチェンジイベントが発生するようで、
望む結果になりません。
どのようにすればよいのでしょうか。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim target_cell As String
Dim target_cell1 As String
Dim target_cell2 As String
target_cell = Range(Target.Address).Value
target_cell1 = Mid(target_cell, 1, 2)
target_cell2 = Mid(target_cell, 3, 2)
target_cell = "2000/01/01 " & target_cell1 & ":" & target_cell2
Range(Target.Address) = target_cell
End Sub

【55570】Re:シートチェンジ
回答  阪神  - 08/5/11(日) 18:48 -

引用なし
パスワード
   ▼acch さん:

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim target_cell As String
  Dim target_cell1 As String
  Dim target_cell2 As String
  Application.EnableEvents = False
  target_cell = Range(Target.Address).Value
  target_cell1 = Mid(target_cell, 1, 2)
  target_cell2 = Mid(target_cell, 3, 2)
  target_cell = "2000/01/01 " & target_cell1 & ":" & target_cell2
  Range(Target.Address) = target_cell
  Application.EnableEvents = True
End Sub

【55577】Re:シートチェンジ
お礼  acch  - 08/5/11(日) 23:30 -

引用なし
パスワード
   ▼阪神 さん:
ありがとうございました。
イベントを発生させないようにするのですね。

>▼acch さん:
>
>Private Sub Worksheet_Change(ByVal Target As Range)
>  Dim target_cell As String
>  Dim target_cell1 As String
>  Dim target_cell2 As String
>  Application.EnableEvents = False
>  target_cell = Range(Target.Address).Value
>  target_cell1 = Mid(target_cell, 1, 2)
>  target_cell2 = Mid(target_cell, 3, 2)
>  target_cell = "2000/01/01 " & target_cell1 & ":" & target_cell2
>  Range(Target.Address) = target_cell
>  Application.EnableEvents = True
>End Sub

【55666】Re:シートチェンジ
質問  acch  - 08/5/14(水) 21:38 -

引用なし
パスワード
   教えてください。

>Private Sub Worksheet_Change(ByVal Target As Range)
>Private Sub Worksheet_selectionChange(ByVal Target As Range)
これらのイベントを動作させるためにシートのイベントとして記述しました。
しかし、そのシートだけでしか動作しません。
一ヶ所に記述するだけでアクティブになったシート(どのシートに対しても)で動作させる方法はありませんか。

【55667】Re:シートチェンジ
お礼  acch  - 08/5/14(水) 22:13 -

引用なし
パスワード
   ▼acch さん:
>教えてください。
>
>>Private Sub Worksheet_Change(ByVal Target As Range)
>>Private Sub Worksheet_selectionChange(ByVal Target As Range)
>これらのイベントを動作させるためにシートのイベントとして記述しました。
>しかし、そのシートだけでしか動作しません。
>一ヶ所に記述するだけでアクティブになったシート(どのシートに対しても)で動作させる方法はありませんか。


Thisworkbookに
>>Private Sub Workbook_sheetChange(ByVal sh As object,ByVal Target As Range)
>>Private Sub Workbook_sheetselectionChange(ByVal sh As object,ByVal Target As excel.Range)
で解決できました。お騒がせでした。

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