• 締切済み

エクセルのコントロールボックスの利用方法がわからず困っています。

Excelのコントロールボックスを利用して、 1.テキストボックスに記載した名前のフォルダを   例えば、デスクトップに作成する方法。 2.コンボボックスのリストから、   例えば「A」を選択すると、   「A」に関連したファイル(既にデスクトップに作成済み)を   1.で作成したフォルダに   保存する方法。 を教えてください。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 そのご質問は、たぶん、思っているよりも、難しいですね。 以下で、その動きを確認してみてください。ただ、私の考えていた方法が、理由は良く分からないのですが、こういうイベント型の起動が、気に入らないので変えてしまう人もいるようです。ただ、私自身は、いきなり起動するというのは、安全上、どうかなって思うからです。なお、当たり前のことですが、TextBox1_Change は、ダメです。 起動方法: ComboBox1 起動は、選択した後に、ダブルクリックでマクロが起動 ComboBox1 のデータは、ファイル名だけにしてください TextBox1 は、行末で、Enter を入れるとフォルダを作成 なお、デスクトップは、ユーザー側のデスクトップです。グローバル側ではありません。 --------------------------------------------- Private Sub ComboBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) Dim FName As String Dim Folname As String Dim myDesktop As String  'ComboBoxのアイテムをダブルクリックすると、コピーされる  FName = ComboBox1.Text  If TextBox1.Text = "" Then Exit Sub   Folname = TextBox1.Text   If CheckFolder(Folname) > 1 Then    MsgBox "フォルダの所在を確認してください。"    Exit Sub   End If      myDesktop = Mid$(Folname, 1, InStrRev(Folname, "\") - 1)   If Dir(myDesktop & "\" & FName) = "" Then     MsgBox FName & " が、デスクトップ上で見当たりません。", 48, "ファイル確認"     Exit Sub   End If   If Dir(Folname & "\" & FName) = "" Then    Name myDesktop & "\" & FName As Folname & "\" & FName    MsgBox FName & vbCrLf & "は、" & Folname & " に格納されました。", 64, "ファイル確認"   Else    MsgBox "すでに、" & Folname & " には、" & vbCrLf & FName & "があります。", 64, "ファイル確認"   End If End Sub Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Dim myDesktop As String Dim Folname As String Dim i As Integer 'Enter を入れると、起動する If KeyCode <> 13 Then Exit Sub If TextBox1.Text = "" Then Exit Sub   Folname = TextBox1.Text      i = CheckFolder(Folname)   If i = 0 Then    MsgBox Folname & vbCr & _        "は、作成しました。", 64, "フォルダ確認"   ElseIf i = 1 Then    MsgBox Folname & vbCr & _        "は、すでにあります。", 48, "フォルダ確認"   ElseIf i = 2 Then    MsgBox Folname & vbCr & _        "は、ファイル名として存在しています", 32, "フォルダ確認"   End If End Sub Private Function CheckFolder(ByRef Folname As String) 'フォルダ確認 Dim myDesktop As String Dim Ret As Integer  With CreateObject("WScript.Shell")  myDesktop = .SpecialFolders("Desktop")  Folname = myDesktop & "\" & Folname  If Dir(Folname, vbDirectory) = "" Then    MkDir Folname    Ret = 0  Else   If GetAttr(Folname) And vbDirectory Then    Ret = 1   Else    Ret = 2    End If  End If  End With   CheckFolder = Ret End Function

auidokddi
質問者

お礼

すごい考えていただいて、ありがとうございます。 教えていただいたVBAを実行してみます。

noname#79209
noname#79209
回答No.1

> Excelのコントロールボックスを利用して、 「コントロールボックス」ってユーザーフォームのことですよね? 余計なお世話かとは思いますが、 非常に局部的な要望を質問されていますが、差しつかえなければ、 もう少し全体的な流れを補足していただくと、 「ああ、それならこういうやり方の方がいいですよ」ともっとスマートな アプローチ方法が回答されるかもしれません。 失礼ながら、間違った駅で降りてしまったことに気づかず、目的地までの ルートを訊いているようなこともあり得ますので... 老婆心ながら...

auidokddi
質問者

お礼

回答ありがとうございます。 コントロールボックスとユーザーフォームとは別物では? ユーザーフォームでも可能ならそれでもいいのですが・・・。 全体的な流れと言われても・・・ すみません。 VBAを使用しながら作成していきたいのですが、 それほど知識があるわけではないので 返答に困っています。 何か基本的な参考となるサイトや資料があれば 教えてください。

関連するQ&A

  • EXCELのコントロール ツールボックスの使い方

    EXCELの「コントロール ツールボックス」でEXCELシート上にコンボボックスをつくって、その中からデータを選びたいのです。どのようにしたらコンボボックス内に選択対象のデータが出るようになるでしょうか?

  • エクセル、コンボボックス/フォームのとコントロールツールボックスの

    エクセル2000です。 今まではワークシートにフォームのコンボボックスを貼って使ってきました。 でも色を変えたり出来ないので、今度はコントロールツールボックスからコンボボックスを貼ってみました。 質問ですが、コンボボックスに表示させるリストを設定するのに、これまでのフォームのコンボボックスだと書式設定で入力範囲をカーソルをあてて一度に簡単に指定できたのですが、コントロールツールボックスのコンボボックスだとそれが出来ません。VBEditorのプロパティのところのListFillRangeの右側にいちいち手でSheet1!A1:A5のように打ち込まなければならないようです。これではけっこう手間がかかってしまいます。 わたしのやりかたが間違っているのでしょうか?

  • エクセル コントロールの使い方

    コントロール コンボボックスについてお聞きします。 コンボボックスにテキストの登録は出来たのですが 例えばこのテキストから選択したものが、絵とかで横に表示されるような 設定は出来ますでしょうか?

  • エクセルファイルのコンボボックスの作り方 1列全部

    win10 office365 エクセルファイルのコンボボックスの作り方は 検索で出ては来ますが、セルA1だけにおいて セルB1からB5までをリストとしたときに コントロールの書式設定において 入力範囲が$B$1:$B$5 次のリンクするセル A1とすれば できるのですが、 これですともしA1からA31までに このコンボボックスの5行からの選択肢から 選んでA*セルにテキストを入れたいときに リンクするセルの設定を いちいち31個 作らないとならないように思われます 要は、A1からA31の31個のセルに コンボボックスからの5つの選択肢から選んで 入力したいのですが、 この作業はaccessのフォームですと、しばしば見かける スタイルではありますが、エクセルで実施するためには どのようにしたらよいでしょう サイトも検索をいろいろしましたが、一つのフォームで コンボボックスを作成して、データ入力する、など 目的のものが見当たりません。 すみません 宜しくお願い致します

  • エクセルVBA コンボBOXの相互連動

    皆さんこんにちは。 エクセル2013を使用しています。 ネットや本では 地方名>都道府県名>市町村名のような 順にコンボボックスで行う絞り込み検索の方法が たくさん載っています。 コンボボックス1を選択しないとコンボボックス2・3の 選択肢は表示されないようなものです。 ですが、私がやりたいのは どのコンボボックスから選択しても 残りのコンボボックスが連動するものを作りたいのです。 おそらくやりたい事はオートフィルターだ!と思ったので 今、私の知りうる数少ない知識を駆使した結果がこれです。 (1)原本Sheetをコピー→コンボ用Sheetを作成 (2)コンボ用SheetのA~C列を列ごとに重複除去をし  除去した内容をE~F列に記載 (3)E~Fの内容をコンボボックス1~3のコントロールにする (4)コンボボックスのどれかを選択すると  そのコンボボックスのTEXTでオートフィルターがかかる、  原本Sheet対応列を絞り込み (5)コンボ用Sheetを削除 (1)~(5)エンドレス・・・みたいなコードでやりたい事に対応出来ましたが 何しろシートのコピー・削除が何回もあるので 重くて重くてとても使い物にはなりません。 どうにか重くならずに同じような作動をするコードはないでしょうか。 このような感じで原本Sheetは作成されております。 [原本Sheet]     A    B    C 1   駅名  顧客名  店舗名 2   ○    △    □ 3   ○    ▲    ■ 4   ◎    △    □ 5   ◎    ▽    ◇ 6   ●     ▽    ◆

  • ExcelVBA コンボボックスに入力があったらリンクしてテキストボックスを更新したい

    フォームで入力画面をつくっています。 あるコンボボックスのリストから項目が選択されたら、一覧からリンクさせてテキストボックスの内容を更新がしたいのです。 例えば「社員コード」のコンボボックスで「3」が選択されたら、「社員名」のテキストボックスに別シートに作成してある社員一覧から「太郎」が表示されるというようにです。 セルA1とコンボボックスをリンクさせ、セルB1にVLOOKUP(A1,一覧,2)で一覧から名前を抽出しました。コンボボックスのChangeイベントでB1の内容をテキストボックスへ送っているのですが、カーソルを別の項目へ移動するまではテキストボックスの内容が更新されません。 コンボボックスのリストを選択した時点でテキストボックスを更新する方法はないでしょうか?

  • エクセルVBAのカレンダーコントロールの件で

    エクセルVBAを使用して リストボックスかコンボボックスかテキストボックスかを クリックするとカレンダーコントロールが呼び出されて カレンダーコントロールの日付をクリックすると カレンダーコントロールは閉じその値が上記2行目いずれかに 入力されるようにすることは可能なのでしょうか いろいろ文献を探してみたのですがよくわからずじまいでした よろしくお願いします

  • テキストボックスのデフォルト設定とコンボボックスの更新について

    テキストボックスのデフォルト設定とコンボボックスの更新について エクセルのVBAで、ユーザーフォームを使用しています。 ユーザーフォームの中にはコンボボックスとテキストボックスとボタンがあります。 コンボボックスには「ABCDEFGHIJKLM」と合計13のリストがあります。 ユーザーフォーム起動時に、コンボボックスには最初のリスト(A)が表示 されていて、「次へ」ボタンと「戻る」ボタンの2つを用意しています。 (1)ユーザーフォーム起動時にテキストボックスに「0」を入れる方法を教えていただけないでしょうか。 コンボボックスで「A」が選択された状態で「次へ」ボタンをおしたら「B」が選ばれる。 「D」が選択された状態で「次へ」ボタンをおしたら「E」が選ばれる。 「M」が選択された状態で「次へ」ボタンをおしたら「A」が選択される。(リストの最初に戻る。) というのは、次のVBAで上手くいきました。 If Combobox1.ListIndex < Combobox1.ListCount - 1 Then Combobox1.Text = Combobox1.List(Combobox1.ListIndex + 1) Else Combobox1.Text = Combobox1.List(0) End If (2)しかし「E」が選択された状態で「戻る」ボタンをおしたら「D」が選ばれる。 「G」が選択された状態で「戻る」ボタンをおしたら「F」が選ばれる。 「A」が選択された状態で「戻る」ボタンをおしたら「M」が選ばれる。(リストの最後に戻る。) といった内容のマクロがうまく組めません。 教えていただけると助かります。

  • エクセルマクロリストボックスの作成方法について

    最近、マクロを勉強し始めたばかりで困っています。 【質問内容】 ダイアログを作成し、リストボックスからリストを作成する方法についてですが、例えばリストボックスが2つあり (1)リストボックス1では、「A、B」が選択できる。 (2)(1)で「A」を選択するとリストボックス2では「C、D」が選択できる。 (3)(1)で「B」を選択するとリストボックス2では「E、F」が選択できる。 といった、エクセルで言えば入力規則のindirect関数のような設定方法についてお教えいただけないでしょうか? 恐れ入りますがよろしくお願いいたします。

  • エクセル コンボボックスについて

    XP エクセル2003なのですが、 現在ワークシートに郵便番号と住所のリストを作成しています。    郵便番号     住所  ***-**** ○○県○○市・・・  ***-**** XX県XX市・・・ ユーザーフォームにテキストBOXとコンボBOXとコマンドボタンを 配置しています。 コンボBOXではリストにしている住所のみを表示していますが、 その中から探すのが大変です。そこで、 テキストBOXに郵便番号を入力し、 コマンドボタンをクリックすると、 コンボBOXに該当する住所が表示されるようにしたいのですが、 どうすればいいのか、何から始めればいいのか、 全く分かりません・・・。いろいろな方法があると思うのですが、 教えていただければ幸いです。 初心者ですので質問形式が悪いかもしれませんが よろしくお願いします。

専門家に質問してみよう