Excel VBA質問箱 IV

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

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


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

【61796】テキストボックス 亜矢 09/6/5(金) 1:23 質問[未読]
【61797】Re:テキストボックス かみちゃん 09/6/5(金) 1:41 発言[未読]
【61798】Re:テキストボックス 亜矢 09/6/5(金) 5:26 お礼[未読]
【61799】Re:テキストボックス Hirofumi 09/6/5(金) 5:49 回答[未読]
【61800】Re:テキストボックス ichinose 09/6/5(金) 5:56 発言[未読]
【61801】Re:テキストボックス ichinose 09/6/5(金) 6:35 発言[未読]
【61818】Re:テキストボックス ichinose 09/6/6(土) 18:31 発言[未読]
【61819】Re:テキストボックス neptune 09/6/6(土) 21:45 発言[未読]
【61820】Re:テキストボックス ichinose 09/6/6(土) 23:58 お礼[未読]

【61796】テキストボックス
質問  亜矢  - 09/6/5(金) 1:23 -

引用なし
パスワード
   よろしくお願いします。
ユーザーファーム上にテキストボックスが沢山(15ヶ位)あります。
 その中のカーソルを当てているボックスに日付をMonthView
 から入力したいのですが、カーソル(フォーカス?)が当たっている
 テキストボックスを検出する方法を教えて頂きたいと思います。

【61797】Re:テキストボックス
発言  かみちゃん  - 09/6/5(金) 1:41 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>ユーザーファーム上にテキストボックスが沢山(15ヶ位)あります。
> その中のカーソルを当てているボックスに日付をMonthView
> から入力したいのですが、カーソル(フォーカス?)が当たっている
> テキストボックスを検出する方法

TextBoxが3個の場合であれば、以下のような感じになります。

Dim INPUT_SW  As Integer

Private Sub MonthView1_Click()
 Dim ST As String
 ST = Format(MonthView1.Value, "yyyy/mm/dd")
 Select Case INPUT_SW
  Case 1: TextBox1.Value = ST
  Case 2: TextBox2.Value = ST
  Case 3: TextBox3.Value = ST
 End Select
End Sub

Private Sub TextBox1_Enter()
 INPUT_SW = 1
End Sub

Private Sub TextBox2_Enter()
 INPUT_SW = 2
End Sub

Private Sub TextBox3_Enter()
 INPUT_SW = 3
End Sub

【61798】Re:テキストボックス
お礼  亜矢  - 09/6/5(金) 5:26 -

引用なし
パスワード
   ▼かみちゃん さん:
>こんにちは。かみちゃん です。
>
>>ユーザーファーム上にテキストボックスが沢山(15ヶ位)あります。
>> その中のカーソルを当てているボックスに日付をMonthView
>> から入力したいのですが、カーソル(フォーカス?)が当たっている
>> テキストボックスを検出する方法
>
>TextBoxが3個の場合であれば、以下のような感じになります。
>
>Dim INPUT_SW  As Integer
>
>Private Sub MonthView1_Click()
> Dim ST As String
> ST = Format(MonthView1.Value, "yyyy/mm/dd")
> Select Case INPUT_SW
>  Case 1: TextBox1.Value = ST
>  Case 2: TextBox2.Value = ST
>  Case 3: TextBox3.Value = ST
> End Select
>End Sub
>
>Private Sub TextBox1_Enter()
> INPUT_SW = 1
>End Sub
>
>Private Sub TextBox2_Enter()
> INPUT_SW = 2
>End Sub
>
>Private Sub TextBox3_Enter()
> INPUT_SW = 3
>End Sub
有り難うございました。解決しました。
今後もよろしくお願いします。

【61799】Re:テキストボックス
回答  Hirofumi  - 09/6/5(金) 5:49 -

引用なし
パスワード
   もう見ていないかな?
以下の様でも、善いかも

Option Explicit

Private Sub MonthView1_DateClick(ByVal DateClicked As Date)

  With MonthView1
    If .Tag = "" Then
      Exit Sub
    End If
    Me.Controls(.Tag).Text = .Value
  End With
  
End Sub

Private Sub MonthView1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

  MonthView1.Tag = ""

End Sub

Private Sub TextBox1_Enter()

  MonthView1.Tag = TextBox1.Name
  
End Sub

Private Sub TextBox2_Enter()

  MonthView1.Tag = TextBox2.Name
  
End Sub

Private Sub TextBox3_Enter()

  MonthView1.Tag = TextBox3.Name
  
End Sub

Private Sub TextBox4_Enter()

  MonthView1.Tag = TextBox4.Name
  
End Sub

PS:
「MonthView」に就いては、下記の様な制限が有りますが?
ht tp://www.h3.dion.ne.jp/~sakatsu/Excel_Tips06.htm

【61800】Re:テキストボックス
発言  ichinose  - 09/6/5(金) 5:56 -

引用なし
パスワード
   おはようございます。解決後ですが・・・。

ユーザーフォームのモジュールに

'========================================
Option Explicit
Private actrl As msforms.Control
'=================================================================
Private Sub MonthView1_Click()
  If TypeName(actrl) = "TextBox" Then
    actrl.Text = Format(MonthView1.Value, "yyyy/mm/dd")
  End If
End Sub
'========================================================================
Private Sub MonthView1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As stdole.OLE_XPOS_PIXELS, ByVal y As stdole.OLE_YPOS_PIXELS)
  If TypeName(ActiveControl) <> "MonthView" Then Set actrl = ActiveControl
End Sub


なんてすると、テキストボックスが増減しても、コード変更なしでいけそうですが、
試してみてください。

【61801】Re:テキストボックス
発言  ichinose  - 09/6/5(金) 6:35 -

引用なし
パスワード
   訂正

日付を入れるならDateClickイベントのほうがよさそうですね

>ユーザーフォームのモジュールに
>
>'========================================
>Option Explicit
>Private actrl As msforms.Control
>'=================================================================
Private Sub MonthView1_DateClick(ByVal DateClicked As Date)
  If TypeName(actrl) = "TextBox" Then
    actrl.Text = Format(DateClicked, "yyyy/mm/dd")
  End If
End Sub
>'========================================================================
>Private Sub MonthView1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As stdole.OLE_XPOS_PIXELS, ByVal y As stdole.OLE_YPOS_PIXELS)
>  If TypeName(ActiveControl) <> "MonthView" Then Set actrl = ActiveControl
>End Sub
>
>
>なんてすると、テキストボックスが増減しても、コード変更なしでいけそうですが、
>試してみてください。

【61818】Re:テキストボックス
発言  ichinose  - 09/6/6(土) 18:31 -

引用なし
パスワード
   再々訂正です。
昨日の投稿コードで今試したら作動しなかったので・・・。

これで作動するか否か試してくださる方いませんか?

Option Explicit
'========================================
Private actrl As MSForms.Control
'=================================================================
Private Sub MonthView1_DateClick(ByVal DateClicked As Date)
  If TypeName(actrl) = "TextBox" Then
    actrl.Text = Format(DateClicked, "yyyy/mm/dd")
  End If
End Sub
'========================================================================
Private Sub MonthView1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As stdole.OLE_XPOS_PIXELS, ByVal y As stdole.OLE_YPOS_PIXELS)
  Dim wk As MSForms.Control
  Set wk = ActiveControl
  If TypeName(wk) <> "MonthView" Then Set actrl = wk
End Sub

本日試したら、前回の投稿では作動しなかったものですから・・・。
(昨日は、作動したのですが・・・)

上記投稿で私の環境では作動していますが・・・(Win2000&Excel2002)
微妙なタイミングでの取得なのでこれではPCによっては駄目かもしれません。

【61819】Re:テキストボックス
発言  neptune  - 09/6/6(土) 21:45 -

引用なし
パスワード
   ▼ichinose さん:
こんにちは

>これで作動するか否か試してくださる方いませんか?
XP SP3 Excel2000
新規BookにUserForm追加MonthViewコントロール使用
textbox 2個
でやってみましたが、問題なく動くようです。

動作:
MonthViewコントロールの日付をクリックすると
フォーカスのあるtextboxに日付が入力される。

気がかりな点:
MonthViewコントロールは開発ライセンスを持たないと配布出来なかったと思う。
使用は・・・どうなんでしょう?

【61820】Re:テキストボックス
お礼  ichinose  - 09/6/6(土) 23:58 -

引用なし
パスワード
   こんばんは。


>XP SP3 Excel2000
>新規BookにUserForm追加MonthViewコントロール使用
>textbox 2個
>でやってみましたが、問題なく動くようです。
>
>動作:
>MonthViewコントロールの日付をクリックすると
>フォーカスのあるtextboxに日付が入力される。
検証していただきましてありがとうございます。

実は、このお礼投稿の前にもう一度、610801で投稿したコードで
試してみると正常に作動しました。
もうちょっと検証が必要かもしれません。

61818で投稿したコードは、今日のところは安定して作動しているので
大丈夫かなあ・・・。

本当にお手数をお掛けしました、助かりました。

>気がかりな点:
Hirofumiさんも触れている角田さんのサイトで

>「VB ランタイム」 ファイル をエクセルで使う目的で他からコピーする行為はライセンス違反です。

ってありますからねえ!!


>
>気がかりな点:
>MonthViewコントロールは開発ライセンスを持たないと配布出来なかったと思う。
>使用は・・・どうなんでしょう?

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