本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

[XL]パスワード入力を行うダイアログボックスの作成方法

文書番号: 401689

最終更新日: 2003/05/28


この資料は以下の製品について記述したものです。


この記事は、以前は次の ID で公開されていました: JP401689

概要

Microsoft(R) Visual Basic(R) Programming System Applications Edition
(以下 VBA) の EditBox オブジェクトには、「パスワード入力機能」 (入力した
文字を画面に表示せずに、入力した文字数分「*」を表示する機能) は提供されて
おりません。本文書では、ダイアログ ボックスを使用してパスワード入力を行う
場合のプログラム側での対応例を、サンプル モジュールと共に解説しています。

ダイアログ ボックスの作成

次の図のようにダイアログ ボックスの作成およびマクロの登録を行います。登
録するマクロは、次項「サンプル モジュール」を参照してください。
[GRAPHIC: ] <エディット 5> はダイアログ ボックスの外側に存在します。このようなオブジ ェクトは「オブジェクトとしては存在するが表示されず、入力が可能なオブジェ
クト」となります。この機能を利用してパスワード入力が可能となります。
また、<エディット 4> はデフォルトの設定状態ではそのままパスワード (文
字列) の入力が可能となってしまいますが、これをダイアログ ボックス実行時
に Enable プロパティを False に設定することで入力不可の状態にしています。

サンプル モジュール

各コントロールに対するマクロの登録についての詳細は、「 Visual Basic ユー
ザーズ ガイド」 281 ページ「イベント プロシージャの登録」を参照してください。

注意

例えば <エディット 4> をマクロで指定する場合には、EditBoxes("エディッ ト 4") と記述します。半角の "エディット 4" や全角の "エディット4" など、記述 に差異がありますと正しく実行できませんので、ご注意ください。

<フォーム 1> に登録するマクロ

  Sub Form1_Load()
      'エディット ボックスの初期文字列の設定
      ActiveDialog.EditBoxes("エディット 4").Text = "|"
      ActiveDialog.EditBoxes("エディット 5").Text = ""
      '<エディット 4> に制御が移らないように設定
      ActiveDialog.EditBoxes("エディット 4").Enabled = False
      'ダイアログ ボックスのフォーカスを設定
      ActiveDialog.Focus = "エディット 5"
  End Sub

<エディット 5> に登録するマクロ

  Sub Edit5_Change()
      Dim SetText, InputText As String
      '<エディット 5> に入力された文字列の取得
      InputText = ActiveDialog.EditBoxes("エディット 5").Text
      '<エディット 4> に表示する「*」の作成
      If Len(InputText) = 0 Then
          SetText = "|"
      Else
          SetText = String(Len(InputText), "*") & "|"
      End If
      '<エディット 4> に「*」を表示
      ActiveDialog.EditBoxes("エディット 4").Text = SetText
  End Sub

「パスワード入力」ダイアログ ボックスを表示するマクロ

  Sub DlgSamp()
      'ダイアログ ボックスの表示
      DialogSheets("Dialog1").Show
      '入力されたパスワードの表示
      MsgBox DialogSheets("Dialog1").EditBoxes("エディット 5").Text
  End Sub

実行

サンプル モジュールを入力後、ダイアログ ボックスへマクロ登録し、サンプル
モジュール "DlgSamp" を実行してください。"DlgSamp" は、ダイアログ ボック スを表示後、入力されたパスワードの文字数分だけ「*」をエディット ボックス
に表示します。<OK> ボタンがクリックされると、入力したパスワードの文字列 を MsgBox 関数を使って表示します。

Keywords: KBHOWTO KB401689
Technology: kbExcel500 kbExcelSearch kbExcelWinSearch

inserted by FC2 system