<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 |
↑無事、フォルダーが変更されました。
ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、
|
気になったジャンル↓を選択してください。 人気記事(来場者が多いTOP3): Excel関係: Access関係: その他:VBAの共通関数やテキストファイルの操作など 開発時の操作: [F1を押してHELPを見る]/ [Debug.Print と イミディエイトウインドウ]/ [実行時エラーでデバッグ]/ [ウォッチ式とSTOP]/ [参照設定を行う] 仕様書(設計書?) XXXX書類: [基本設計書や要求仕様書]/ [テスト仕様書 テストデータ]/ [バグ票]/ [関数仕様書]/ [流れは 入力・処理・出力] ※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。 |
Blogとリンク:[三流君の作業日記]/
[VBAやASPのサンプルコード]/
広告-[通販人気商品の足跡]