Excel VBA質問箱 IV

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

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


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

【65875】ユーザーフォームのTextBoxイベントをまとめたい みーちゃんキャット 10/7/4(日) 15:04 質問[未読]
【65876】Re:ユーザーフォームのTextBoxイベントをまとめたい よろずや 10/7/4(日) 17:22 発言[未読]
【65910】Re:ユーザーフォームのTextBoxイベントをまとめたい みーちゃんキャット 10/7/6(火) 17:06 お礼[未読]
【65922】Re:ユーザーフォームのTextBoxイベントをまとめたい 熊谷隆史 10/7/8(木) 6:33 発言[未読]
【65935】Re:ユーザーフォームのTextBoxイベントをまとめたい 熊谷隆史 10/7/9(金) 6:42 回答[未読]
【65942】Re:ユーザーフォームのTextBoxイベントをまとめたい UO3 10/7/9(金) 11:55 質問[未読]
【65944】Re:ユーザーフォームのTextBoxイベントをまとめたい Abyss 10/7/9(金) 13:55 発言[未読]
【65948】Re:ユーザーフォームのTextBoxイベントをまとめたい UO3 10/7/9(金) 22:36 お礼[未読]
【65949】Re:ユーザーフォームのTextBoxイベントをまとめたい Abyss 10/7/9(金) 23:01 発言[未読]
【65950】Re:ユーザーフォームのTextBoxイベントをまとめたい UO3 10/7/10(土) 0:03 お礼[未読]
【65921】Re:ユーザーフォームのTextBoxイベントをまとめたい mura 10/7/7(水) 13:06 回答[未読]

【65875】ユーザーフォームのTextBoxイベントをまとめたい
質問  みーちゃんキャット  - 10/7/4(日) 15:04 -

引用なし
パスワード
   TextBoxが10個あります。押すキーを限定するコードをまとめることは出来ますでしょうか?

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then KeyAscii = 0
End Sub

Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then KeyAscii = 0
End Sub

Private Sub TextBox3_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then KeyAscii = 0
End Sub

Private Sub TextBox4_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)                                ・
                            ・
                            ・

【65876】Re:ユーザーフォームのTextBoxイベントをまとめたい
発言  よろずや  - 10/7/4(日) 17:22 -

引用なし
パスワード
   こちらが参考になるかと。

ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=38194;id=excel

【65910】Re:ユーザーフォームのTextBoxイベントをまとめたい
お礼  みーちゃんキャット  - 10/7/6(火) 17:06 -

引用なし
パスワード
   よろずや さん:
>こちらが参考になるかと。

>ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=38194;id=excel
ご回答ありがとうございます。
はじめたばかりでクラスというものを全然理解していませんので、
今から勉強して使いこなせるようにしたいとおもいます。

【65921】Re:ユーザーフォームのTextBoxイベントをまとめたい
回答  mura  - 10/7/7(水) 13:06 -

引用なし
パスワード
   >TextBoxが10個あります。押すキーを限定するコードをまとめることは出来ますでしょうか?

簡単なクラスの例があります。
↓このサイトの83番のtips
ht tp://homepage2.nifty.com/kmado/kvba.htm
E00M083 ユーザーフォームの複数コントロールのイベントを纏めて処理する
■簡易版(そのユーザーフォームのみで処理する)

新規ブックのUserForm1に複数のTextBoxを配置して試してください。

'UserForm1モジュール
Option Explicit
Public WithEvents TextBox As MSForms.TextBox
Dim dbox As New Collection

Private Sub TextBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
 If KeyAscii < vbKey0 Or KeyAscii > vbKey9 Then KeyAscii = 0
End Sub

Private Sub UserForm_Initialize()
 'コードは省略しますが、
 '■簡易版(そのユーザーフォームのみで処理する)
 'のInitializeイベントのコードをそっくり貼り付け
 '
End Sub

【65922】Re:ユーザーフォームのTextBoxイベントをまとめたい
発言  熊谷隆史  - 10/7/8(木) 6:33 -

引用なし
パスワード
   ▼みーちゃんキャット さん:
参考)
ht tp://park7.wakwak.com/~efc21/cgi-bin/exqalounge.cgi?print+200711/07110092.txt

【65935】Re:ユーザーフォームのTextBoxイベントをまとめたい
回答  熊谷隆史  - 10/7/9(金) 6:42 -

引用なし
パスワード
   # もう、ご覧になっていないのでしょうけど、一応答えを書いておきます。
Win 7/Excel 2010で確認。

上のリンク先の井川はるきさんのコードのOnEnterプロシージャを差し替え。
※ Attribute文を使ってるのでリンク先の回答をよく読んで対応してください。
Public Sub KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Attribute TextBox_KeyPress.VB_UserMemId = -603
    If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then KeyAscii = 0
End Sub

DispIDを調べるのには、SDKのツールが必要(OLE/COM Object Viewer)。

【65942】Re:ユーザーフォームのTextBoxイベントをまとめたい
質問  UO3  - 10/7/9(金) 11:55 -

引用なし
パスワード
   ▼熊谷隆史 さん:
>DispIDを調べるのには、SDKのツールが必要(OLE/COM Object Viewer)。

こんにちは。ツールは導入しました。
DispID とは Attributeで指定する  -603 のことだと思いますが、
たとえばEnterイベントに相当するものを、このツールで調べるには
どこを見たらいいか、あつかましい質問ですが、教えていただけませんか。

【65944】Re:ユーザーフォームのTextBoxイベントをまとめたい
発言  Abyss  - 10/7/9(金) 13:55 -

引用なし
パスワード
   よこから、失礼します。

OLE/COM Object Viewerにて

(Type Libraries)
  - (Microsoft Form 2.0 Library)
    - DispInterfaces
      - dispinterface ControlEvents
       - Method
          - Enter

をたどると
 id(0x80018202)
が見つかります。ですので、

 Attribute XXX.VB_UserMemId = &H80018202

で良いかと。



【65948】Re:ユーザーフォームのTextBoxイベントをまとめたい
お礼  UO3  - 10/7/9(金) 22:36 -

引用なし
パスワード
   ▼Abyss さん:
ありがとうございました。
会社でダウンロードしていたんですが、自宅でも今、ダウンロードしてトライ。
IVIEWERS.DLLが同梱されてイン買ったようなのでこれも別途ダウンロードして
画面を開いてみましたがType Librariesを選んでも右側の画面にはご教示いただいた
ようなイメージの内容は表示されませんでした。
(エクスプローラのようなもので、フォルダの情報が2つ、3つ表示されているのみ)

やはり、正規にVB6を入れなきゃダメでしょうか。

【65949】Re:ユーザーフォームのTextBoxイベントをまとめたい
発言  Abyss  - 10/7/9(金) 23:01 -

引用なし
パスワード
   どこからダウンロードされたのかは
分かりませんが、Visual Studioに附属されている
OLE/COM Object Viewerの画像は↓のようなソフトです。

 www.olivierlanglois.net/images/oleview.jpg

【65950】Re:ユーザーフォームのTextBoxイベントをまとめたい
お礼  UO3  - 10/7/10(土) 0:03 -

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

ありがとうございます。
画像イメージは同じです。
ダウンロードはマイクロソフトのダウンロードページから実行しました。

●これ以上、みーちゃんキャットさんのスレを勝手にお借りして質問を
 続けるのはだつではないと反省。
 あらためて、しかるべきところで、私の質問としてアップさせていただきますので
 Abyssさんの引き続き野ご指導をよろしくお願いいたします。

★みーちゃんキャットさん、スレを汚しまして申し訳ありませんでした。

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