Excel VBA質問箱 IV

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

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


6349 / 13646 ツリー ←次へ | 前へ→

【45729】コードがうごかんです おお 07/1/12(金) 19:55 質問[未読]
【45731】Re:コードがうごかんです マクロマン 07/1/12(金) 21:22 発言[未読]
【45732】Re:コードがうごかんです おお 07/1/12(金) 21:51 発言[未読]
【45733】Re:コードがうごかんです りん 07/1/12(金) 22:06 発言[未読]
【45737】Re:コードがうごかんです おお 07/1/13(土) 0:05 お礼[未読]
【45738】Re:コードがうごかんです Kein 07/1/13(土) 0:26 回答[未読]
【45739】Re:コードがうごかんです おお 07/1/13(土) 0:59 お礼[未読]
【45741】Re:コードがうごかんです Kein 07/1/13(土) 1:15 発言[未読]

【45729】コードがうごかんです
質問  おお  - 07/1/12(金) 19:55 -

引用なし
パスワード
   よろしくお願いします。
ヘルプ読んだり参考書とにらめっこ中です。
下記コードが動いてくれません。
お恥ずかしい話ですが
修正教えて貰えませんかトホホ
状況はダブルクリックしても変化なしです。

Private Sub Worksheet_BeforeDoubleClick _
(ByVal Target As Range, Cancel As Boolean)

   Dim MyDate As Date

     If Not Intersect(Me.Range("C3,C9,C11"), Target) Is Nothing Then '日付エリア
     '日付1, 日付2, [基準日], [月数], [休日Map], [Pos_X], [Pos_Y], [入力Msg],
      If ktCalDate(MyDate, Date, kt_土日祝, , , "日付を入力[クリック]しなさい。", 六曜:="勝友負仏安赤") Then
       Target.Value = MyDate
    End If
   Cancel = True
-------ここまでは動いているのですが--------  
 If 1 < Target.Count Then Exit Sub
 On Error Resume Next
 If Not Intersect(Target, Range("C17")) Is Nothing Then
  UserForm18.Show vbModeless
 Else
  UserForm18.Hide
 End If


 If 1 < Target.Count Then Exit Sub
 On Error Resume Next
 If Not Intersect(Target, Range("C13,C15")) Is Nothing Then
  UserForm19.Show vbModeless
 Else
  UserForm19.Hide
 End If

End Sub

【45731】Re:コードがうごかんです
発言  マクロマン  - 07/1/12(金) 21:22 -

引用なし
パスワード
   動かないコードだけをアップされても回答の付けようがないと思います。

何をどうするコードなのかを言葉で説明されては?
また、動かない、とはどのような状態ですか?
エラーメッセージはでますか?
ステップ実行などのデバッグ処理はしましたか?

【45732】Re:コードがうごかんです
発言  おお  - 07/1/12(金) 21:51 -

引用なし
パスワード
   ▼マクロマン さん:
説明不足でしたすみません
ダブルクリックにてユーザーフォームを立ち上げるための
コードです。
>動かないコードだけをアップされても回答の付けようがないと思います。
>
>何をどうするコードなのかを言葉で説明されては?
>また、動かない、とはどのような状態ですか?
質問時書かせていただきましたが中までは動いている
みたいなのですが?
>エラーメッセージはでますか?
いいえ出ません
>ステップ実行などのデバッグ処理はしましたか?
反応ありませんでした。
ちなみに単独で実行して場合は動きました参考にその
コードを下記に書きます
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

  If 1 < Target.Count Then Exit Sub  On Error Resume Next
 If Not Intersect(Target, Range("C13,C15")) Is Nothing Then
  UserForm19.Show vbModeless
 Else
  UserForm19.Hide
 End If
End Sub
よろしくお願いします。

【45733】Re:コードがうごかんです
発言  りん E-MAIL  - 07/1/12(金) 22:06 -

引用なし
パスワード
   おお さん、こんばんわ。

' On Error Resume Next
↑On Error〜の前に ' をつけて無効にしてから実行してみてください。
どこでエラーになっているかがわかります。
それを把握してからもう一度質問したほうが良いと思います。

【45737】Re:コードがうごかんです
お礼  おお  - 07/1/13(土) 0:05 -

引用なし
パスワード
   ▼りん さん:
>おお さん、こんばんわ。
>
>' On Error Resume Next
>↑On Error〜の前に ' をつけて無効にしてから実行してみてください。
>どこでエラーになっているかがわかります。
>それを把握してからもう一度質問したほうが良いと思います。

何とか自己解決を試みます。
ありがとうございました。

【45738】Re:コードがうごかんです
回答  Kein  - 07/1/13(土) 0:26 -

引用なし
パスワード
   なんかよく分からないけど、これで試してみて下さい。

Private Sub Worksheet_BeforeDoubleClick _
(ByVal Target As Range, Cancel As Boolean)
  Dim MyDate As Date
  Dim Flg1 As Boolean, Flg2 As Boolean
  
  With Target
   If .Count > 1 Then Exit Sub
   Cancel = True
   Select Case .Address(0, 0)
     Case "C3", "C9", "C11"
       Flg1 = True: Flg2 = True
       If ktCalDate(MyDate, Date, kt_土日祝, , , _
       "日付を入力[クリック]しなさい。", 六曜:="勝友負仏安赤") Then
         .Value = MyDate
       End If
     Case "C17"
      UserForm18.Show vbModeless: Flg2 = True
     Case "C13", "C15"
      UserForm19.Show vbModeless: Flg1 = True
     Case Else
      Flg1 = True: Flg2 = True: Exit Sub
   End Select
  End With
  On Error Resume Next
  If Flg1 Then UserForm18.Hide
  If Flg2 Then UserForm19.Hide
End Sub

要はフラグをうまく使って適当な判定をさせたらどうか ? という提案ですから、
このままで目的どおりの動作をしなかったとしても、ヒント程度にはなるかと
思います。

【45739】Re:コードがうごかんです
お礼  おお  - 07/1/13(土) 0:59 -

引用なし
パスワード
   ▼Kein さん:
うまく出来ました。
毎回の的確な回答ありがとうございます。
解決です。
>なんかよく分からないけど、これで試してみて下さい。
>
>Private Sub Worksheet_BeforeDoubleClick _
>(ByVal Target As Range, Cancel As Boolean)
>  Dim MyDate As Date
>  Dim Flg1 As Boolean, Flg2 As Boolean
>  
>  With Target
>   If .Count > 1 Then Exit Sub
>   Cancel = True
>   Select Case .Address(0, 0)
>     Case "C3", "C9", "C11"
>       Flg1 = True: Flg2 = True
>       If ktCalDate(MyDate, Date, kt_土日祝, , , _
>       "日付を入力[クリック]しなさい。", 六曜:="勝友負仏安赤") Then
>         .Value = MyDate
>       End If
>     Case "C17"
>      UserForm18.Show vbModeless: Flg2 = True
>     Case "C13", "C15"
>      UserForm19.Show vbModeless: Flg1 = True
>     Case Else
>      Flg1 = True: Flg2 = True: Exit Sub
>   End Select
>  End With
>  On Error Resume Next
>  If Flg1 Then UserForm18.Hide
>  If Flg2 Then UserForm19.Hide
>End Sub
>
>要はフラグをうまく使って適当な判定をさせたらどうか ? という提案ですから、
>このままで目的どおりの動作をしなかったとしても、ヒント程度にはなるかと
>思います。

【45741】Re:コードがうごかんです
発言  Kein  - 07/1/13(土) 1:15 -

引用なし
パスワード
   ちょっとおかしなコードなんで、訂正しておきます。
>Case Else
>  Flg1 = True: Flg2 = True: Exit Sub


Case Else
  Exit Sub

又は

Case Else
 Flg1 = True: Flg2 = True

もうお分かりかと思いますが、フラグを立てるのとマクロを中止するコードを
両方走らせるのは無意味、ということです。すいませんでした。

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