<Excel UserForm ラベルに情報を表示する>
どうも、三流プログラマーのKen3です。 今回は、 Excelのユーザーフォームに、 ラベルで情報を表示してみます。 今回のサンプルファイルは、 http://www.ken3.org/vba/lzh/vba122.lzh にvba122.xlsが保存されています。/* * 1. 今回のキッカケ */
前回、質素な(機能的に貧しい)、 ファイル選択のユーザーフォームを作成しました。 作成したユーザーフォームを呼ぶ前に カレントディレクトリをセットして、 ユーザーフォームを呼ぶ、そんな処理でした。
Sub ccc()
ChDrive "E" 'ドライブの変更
ChDir "e:\work" 'フォルダーの変更
UserForm1.Show 'ユーザーフォームを表示する
End Sub |
↑選択元フォルダーがよくわからないイメージです。
~~~~~~~~~~~~~~~~~~
あとは、フォームの初期化イベントで、
ラベルコントロールの.Captionプロパティに表示したい文字列をセットします。
Private Sub UserForm_Initialize()
'ラベルにフォルダーを表示する
Me.Label1.Caption = CurDir() & "\" 'カレントディレクトリをセットする
'フォームの初期化イベントでリストボックスにデータをセットする
Dim strWORK As String
Me.ListBox1.Clear '.Clearで内容を全てクリア
strWORK = Dir("vb*.lzh") 'カレントのVB*.lzhを検索する
While strWORK <> ""
'取得したファイル名をリストに追加する、ITEMの追加
Me.ListBox1.AddItem (strWORK)
'次のファイル名を取得する
strWORK = Dir() '引数無しで呼ぶと次のファイル名がセットされる
Wend
End Sub |
↑無事、フォルダー名が表示されました。
Public Function getFOLDER() As String
Dim objShell As Object 'Shell
Dim objFolder As Object 'Shell32.Folder
Const strTitle = "フォルダを選択してください。"
'シェルのオブジェクトを作成する
Set objShell = CreateObject("Shell.Application")
'フォルダー参照に設定
Const lngRef = &H1
'ルートフォルダーをデスクトップに設定
'5でMy Documents、6でFavoritesなど
Const fldRoot = &H0
Set objFolder = _
objShell.BrowseForFolder(0, _
strTitle, lngRef, fldRoot)
'フォルダー名を取出し、リターン値をセット
If objFolder Is Nothing Then 'キャンセルチェック
getFOLDER = "" 'リターン値に""空文字列をセット
Else
If objFolder.ParentFolder Is Nothing Then '下位を未選択デスクトップ?
Dim objWShell As Object 'WScript.Shell
'シェルのオブジェクトを作成する
Set objWShell = CreateObject("WScript.Shell")
'デスクトップの場所を返す
getFOLDER = objWShell.SpecialFolders("Desktop")
'オブジェクトの開放
Set objWShell = Nothing
Else
getFOLDER = objFolder.Items.Item.Path 'パスをセットする
End If
End If
Set objFolder = Nothing
Set objShell = Nothing
End Function |
Private Sub CommandButton2_Click()
Dim strFOLDER As String '選択されたフォルダー名称
strFOLDER = getFOLDER() 'フォルダーの選択関数を呼ぶ
If strFOLDER = "" Then '選択結果がキャンセルかチェックする
Exit Sub '関数を途中で抜ける
End If
'カレントドライブ、ディレクトリを変更する
ChDrive Left(strFOLDER, 1) '頭のドライブ文字のセット
ChDir strFOLDER 'フォルダーの変更
'リストボックスの内容を変更する
'ラベルにフォルダーを表示する
Me.Label1.Caption = CurDir() & "\" 'カレントディレクトリをセットする
'フォームの初期化イベントでリストボックスにデータをセットする
Dim strWORK As String
Me.ListBox1.Clear '.Clearで内容を全てクリア
strWORK = Dir("vb*.lzh") 'カレントのVB*.lzhを検索する
While strWORK <> ""
'取得したファイル名をリストに追加する、ITEMの追加
Me.ListBox1.AddItem (strWORK)
'次のファイル名を取得する
strWORK = Dir() '引数無しで呼ぶと次のファイル名がセットされる
Wend
End Sub |
↑無事、フォルダーが変更されました。
|
あとは、項目別にMSでお勉強かな? ◆ マイクロソフト サイトの歩き方 ◇ How-To インデックス ◇ FAQ インデックス ◇ スキルレベル別おすすめコンテンツ ◇ テクノロジ マップ ◇ テーマ別技術資料一覧 |
| ※種類が豊富で探し易いです。※在庫ありが48時間以内発送が急ぎで資料や書籍がほしい時、とても助かります。 お奨め本の目次を見るだけでも勉強になったり |