- ベストアンサー
エクセルでフォームのDropDownとオートフィルタのDropDown
- エクセルでフォームのDropDownとオートフィルタのDropDownについて
- VBAの書き方だとフォームのDropDownとオートフィルター、そして入力規則のリストの識別が難しい
- Shapesコレクションを使用せず、古いDrawingObjectsコレクションを使って識別する方法を求めている
- みんなの回答 (3)
- 専門家の回答
関連するQ&A
- オートフィルターのような機能をフォーム上で VBA
いつも大変お世話になっております。 Excel2003を使用しております。 フォーム上で、オートフィルターのような機能を作りたいと思っています。 http://okwave.jp/qa/q8423348.html 過去の質問のプログラムを何度も使わせて頂いております。 フィルターをかけたら、可視セルを抽出し、コンボボックスに登録…ということを しています。 フォーム上のコンボボックスが変更されたら フィルターをかけ、コンボボックスのリストを更新するようにしていますが、 更新したときに、またフィルターをかけてコンボボックスを更新してしまい どうしたら上手く処理がいくのか分からなくなってしまいました。 現状、 Combobox1_Changeのとき、 If Combobox1<>"" Then フィルターをかける コンボボックスのリストを抽出する コンボボックスを更新する Else フィルターを全開にする コンボボックスのリストを抽出する コンボボックスを更新する End if こういった手段をとっています。 しかし、このままですとコンボボックスを更新するときに 毎回フィルターが全開?になってしまいます。 何か良い方法があれば、教えて下さい。 よろしくお願い致します。
- ベストアンサー
- Excel(エクセル)
- エクセルのオートシェープ削除について
セルE9:J9までに斜めの斜線を引いて、削除するマクロを 初心者なりに作成しました。 斜線作成は以下のような感じです。 Set myRng = Range("E9:J9") For Each sp In ActiveSheet.Shapes If Not Intersect(Range(sp.TopLeftCell,sp.BottomRightCell), myRng) Is Nothing Then sp.Delete End If Next Set myRng = Nothing で、フォームのボタンに登録させて罫線作ります。 ついでにリドゥボタン(戻る)も作成してやってみたのですが 以下のような感じで Set myRng = Range("E9:J9") For Each sp In ActiveSheet.Shapes If Not Intersect(Range(sp.TopLeftCell, sp.BottomRightCell), myRng) Is Nothing Then sp.Delete End If Next Set myRng = Nothing ですが、L9にリスト表示(入力規則のリストを設定)させたら If Not Intersect(Range(sp.TopLeftCell, sp.BottomRightCell), myRng) Is Nothing Then のところで1004エラーがでます。 リストはどうしても使用しなければならないので、どうしたらよいか? どなたか詳しい方おられましたら、ご指導おねがいします。
- ベストアンサー
- その他(プログラミング・開発)
- オートフィルタがかかっていて、なおかつ抽出中なら
オートフィルタがかかっていて、なおかつ抽出中なら、 という状態をvbaで取得する方法はありますか? Sub Sample() If ActiveSheet.AutoFilterMode = True Then End If End Sub これだと、 オートフィルタがかかっているだけでも、反応してしまいます。 「行番号が青色になってるのなら」 と同じ状態にしたいのですが、 どういうコードになりますか?
- ベストアンサー
- オフィス系ソフト
- EXCELでオートフィルタに失敗
表題の件、初心者なので、どなたか教えて頂けると 有難いです。。。 現状は下記の通りです。 住所名前等のリストを作成し、ある列を 入力規則で「リストから選択」にしています (空白セルもあります) その列にオートフィルタをかけて、ある条件の ものだけを抽出していたのですが、リストが664を 超えたところから、それ以降の行はオートフィルタ に反映されません。 何か、オートフィルタの限界のようなものがあって、 一定の行までしか反映されないのでしょうか。 要領を得ない質問で申し訳ないのですが、 宜しくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- Excelで作成した住所録にオートフィルタをかけ、ユーザーフォームで1件ずつ表示
エクセル2007を使用して住所録を作成しています。 一行に1名ずつの情報(各列に氏名など)が入るようになっています。 A列にリスト番号・B列に氏名、といった感じで作成しています。 一覧表示だと列の数が多く個別の内容が分かりにくいため、 ユーザーフォームを使って1件ずつ詳細を見られるようにしました。 ユーザーフォームに付けたコマンドボタン「次」を押すと 順番(住所録リストの上から順)に個別の内容が表示されるように したのですが、オートフィルタをかけてしまうと 非表示のリストもユーザーフォームに表示されてしまいます。 そこで、いくつかの参考書などを使って組んでみたのですが、 私の作ったものではコマンドボタン「次」を押すと オートフィルタで表示されている一番下の リストにユーザーフォームの内容が飛んでしまいます。 どのようにすれば、オートフィルタで表示されているリストのみを 順番にユーザーフォームに表示ができるのでしょうか? 私が作ったものです。↓ Private Sub cmd次_Click() Dim r As Range, rr As Range, rs As Range If Not Worksheets("名簿").AutoFilterMode Then データ行 = データ行 + 1 Else Set r = Worksheets("名簿").Range("A3", Range("A" & Rows.Count).End(xlUp)).SpecialCells(xlCellTypeVisible) For Each rr In r For Each rs In rr.Areas データ行 = rs.Row Next rs Next End If 表示データ変更 End Sub このような質問で分かりにくいようでしたらすみません。 どなたかご教授いただければ幸いです。
- ベストアンサー
- オフィス系ソフト
- エクセルのオートフィルターがかかっていたら消すVBA
いつもお世話になっております。 作業が終了して全てのシートを初期化する場合に、オートフィルターで抽出した状態でデータを消すと、隠れていた部分が残ってしまいます。 もし、そのシートのA1~D1までにフィルターがかかっていたら、フィルターを消す、かかっていなければ、そのままシート全体のデータを消すというマクロはどう書けばよろしいのでしょうか? -例- Sheets("ABC").Select If Range(Cells(1,1),Cells(1,4))にフィルターがかかっていたらThen フィルターを消す Cells.ClearContents Else Cells.ClearContents End If こんなことをしたいのですが、伝わりましたでしょうか? よろしくご指南くださいませ。
- ベストアンサー
- オフィス系ソフト
- オートフィルタをフォーム上(VBA)で実現 2回目
http://okwave.jp/qa/q8423348.html 前回も、オートフィルタをフォーム上で実現させる方法について 質問させていただきました。 Excel2003を仕様しております。 一通り、オートフィルタをフォーム上で再現することは出来たのですが、 使い方が悪いのか、上手く表示できないことがあります。 例) ユーザーフォーム上にCombobox1~Combobox3まであります。 Comboboxどれかが変更されたら、空のコンボボックスのリストを再取得します。 ----------------------------------------------- Sub Combobox_Renew_ChangeJob(ByVal ComboboxName As Object, ByVal ColumnNumber As Long) Application.ScreenUpdating = False '画面更新しない(ちらつき防ぐ) With ThisWorkbook.Worksheets("データ") If ComboboxName = "" Then 'コンボボックスが空だった場合 .Select .Range("A1").AutoFilter Field:=ColumnNumber 'フィルター解除! ElseIf ComboboxName <> "" Then 'コンボボックスが空じゃない場合 .Select .Range("A1").AutoFilter Field:=ColumnNumber, Criteria1:=ComboboxName.Text End If Result = WorksheetFunction.Subtotal(3, Range("B:B")) 'B列の可視セルがいくつあるか If Result = 1 Then MsgBox "一致するデータはありませんでした。" & vbCrLf & " 再度絞り込みなおしてください。" .Select .Range("A1").AutoFilter Field:=ColumnNumber 'フィルター解除! ComboboxName = "" End If End With Call ComboBox_Renewal 'コンボボックス更新 End Sub ------------------------------------------------------------ Sub ComboBox_Renewal() Application.ScreenUpdating = False '画面更新しない(ちらつき防ぐ) Dim LastData As Long With ThisWorkbook.Worksheets("データ") .Select LastData = Cells(Rows.Count, 2).End(xlUp).Row 'B列最終行を取得 If (Me.ComboBox1 = "") Then Me.ComboBox1.Clear Me.ComboBox1.List = Module1.Get_Unique_and_Visible_List(.Range("E2:E" & LastData)) '[E] Me.ComboBox1.AddItem "" Else Result = Combo1.ListIndex Me.ComboBox1.Clear Me.ComboBox1.SetFocus End If If (Me.ComboBox2 = "") Then Me.ComboBox2.Clear Me.ComboBox2.List = Module1.Get_Unique_and_Visible_List(.Range("C2:C" & LastData)) '[C] Me.ComboBox2.AddItem "" End If If (Me.ComboBox3 = "") Then Me.ComboBox3.Clear Me.ComboBox3.List = Module1.Get_Unique_and_Visible_List(.Range("D2:D" & LastData)) '[D] Me.ComboBox3.AddItem "" End If End With End sub ------------------------------------ Private Sub ComboBox1_AfterUpdate() Application.ScreenUpdating = False '画面更新しない(ちらつき防ぐ) With ThisWorkbook.Worksheets("データ") Call Combobox_Renew_ChangeJob(ComboBox1, .Range("E1").Column) End With End Sub Private Sub ComboBox2_AfterUpdate() Application.ScreenUpdating = False '画面更新しない(ちらつき防ぐ) With ThisWorkbook.Worksheets("データ") Call Combobox_Renew_ChangeJob(ComboBox2, .Range("C1").Column) End With End Sub Private Sub ComboBox3_AfterUpdate() Application.ScreenUpdating = False '画面更新しない(ちらつき防ぐ) With ThisWorkbook.Worksheets("データ") Call Combobox_Renew_ChangeJob(ComboBox3, .Range("D1").Column) End With End Sub ----------------------------------------- 上記の方法を使っていますが、 Comboboxに値を全て入れたあと、 絞り込みされていると考え、リストを更新しておりません。 そのため、最初のほうにコンボボックスにデータを入力したものは 選択できてしまいます。 一番最初に選んだComboboxは、 リストが全て残っている状態です。 そのため、他のComboboxで絞り込んだ後、 一番最初に選んだComboboxでは他の値が選択できてしまいます。 説明が下手で分かりにくいかもしれませんが… 何か良い改善方法があれば、教えて頂きたいです! よろしくお願い致します!!
- ベストアンサー
- Excel(エクセル)
- エクセルVBA Web上のフォームのIDを知る方法
今晩は,質問させていただきます.どうぞよろしくお願いいたします. エクセルVBAでWeb上のテキストボックスに文字を入力→ボタンを押す といった作業をいたしたく検索をしておりますと、以下のようなコードを書いてくださってておりました。 (http://billboardtop100.net/2011/03/dim-objie-as-object-dim-obj-as-object.htmlからの転載になります) If Obj.ID = "searchText" Then Obj.Value = "任天堂" Else If Obj.ID = "searchButton" Then Obj.Click Exit For End If End If 全てうまくうごき、非常に理解しやすいコードなのでございますが、これらフォームの「ID」を予めどのようにして調べらるのでございましょうか?? もしお詳しい方がいらっしゃいましたら,アドバイスいただきたくどうぞお願いいたします。
- ベストアンサー
- オフィス系ソフト
- エクセルのオートフィルタ
エクセルシートにデータが3000個近くあるんですけどオートフィルタで「すべて」を選んでもリストの中には3000個全部が表示されません。 どうしたらよいでしょうか? 番号 x 4562 1 25466 1 23694 1 21456 1 58498 1 4588 1 5787 1 8946 1 14586 1 85446 1 ・ ・ ・ ・ このように数値がバラバラに並んでいて見たい数値(例えば8946)がエクセルシートの表の中にはあるのにオートフィルタのリストをクリックして、見るとそこには8946がないんです。「すべて」を選んでるのにリストをクリックしてもないのはどうしてでしょうか?オプションの設定で範囲もきちんとしたんですが。数に制限でもあるんでしょうか?お願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルでオートフィルタをかけて並び替え
エクセルでオートフィルタをかけて並び替え並べをした時、 ふりがなを使わない並べ替えを行を行いたいのですが・・・ 住所録のリストがあり、住所の入力の手間を軽減させるために、よく使う住所は単語登録してあります。ex.【き】→大阪市北区とか 通常手入力したリストや他のデータから持ってきたリストも混ざっているので、オートフィルタをかけて昇降順(住所順)に並びかえたいのですがふりがな順になりうまくいきません。ふりがなを直せばいいのでしょうが大量にあり困難です。 よろしくお願いします。
- 締切済み
- オフィス系ソフト
- Windows7のパソコンでマウスのペアリングができない問題についてお困りですか?接続が表示されず、マウスが使えない状態では困りますよね。そこで、アダプタの取り付けや接続方法について詳しく説明します。
- Windows7のパソコンでマウスのペアリングができない問題に遭遇したことはありませんか?アダプタを取り付けたのに接続が表示されず、マウスが使えない状態に困ってしまいますよね。ここでは、接続ができるようにするための方法を解説します。
- Windows7のパソコンでマウスのペアリングができない問題に悩んでいませんか?アダプタを取り付けても接続が表示されず、マウスが使用できない状況では作業に支障が出ますよね。そこで、接続の方法や注意点について詳しく説明します。
お礼
何度もありがとうございます。 shapeでまわした場合は.OLEFormat.ProgId で取得できるんですね、初めて知りました。 別にたいしてこだわりがあるわけではないんです。 先ほども書いたようにOLEオブジェクトはなじみがないので書き方自体を知らず、今回は実験的なコードで試していて湧いた疑問だったのです。 end-uさまにはご丁寧にご回答いただきましてほんとうにありがとうございました。