• 締切済み

VBAで複数検索、AdvancedFilter

AdvancedFilterを使って、検索を行っているのですが、応答なしと固まってしまったり、動作が重くなったりするのですが、原因わかりますでしょうか? 3000行くらいなのですが、ユーザーフォームを立ち上げて、検索、結果を見て、また検索をしようとすると固まったりして動かなくなって強制終了になる場合があります。 軽くなる方法はありますか? Private Sub CommandButton1_Click() Worksheets("商品マスタ").Activate If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData ActiveWindow.ScrollRow = 3 Range("S1:AA4").ClearContents Range("S1:AA4").NumberFormatLocal = "@" Range("T2:U2").Value = Range("B2:C2").Value Range("V2:X2").Value = Range("D2").Value Range("Y2:Z2").Value = Range("E2:F2").Value Range("AA2").Value = Range("G2").Value If Me.TextBox1.Value <> "" Then ' コード Range("U3").Value = "*" & Me.TextBox1.Value End If If Me.TextBox2.Value <> "" Then ' メーカー Range("V3").Value = "*" & Me.TextBox2.Value & "*" End If If Me.TextBox3.Value <> "" Then ' シリーズ Range("W3").Value = "*" & Me.TextBox3.Value & "*" End If If Me.TextBox4.Value <> "" Then ' サイズ Range("W3").Value = "*" & Me.TextBox4.Value & "*" End If If Me.TextBox5.Value <> "" Then ' 入荷日 Range("T3").Value = Me.TextBox5.Value End If If Me.TextBox9.Value <> "" Then ' 仕入れ先 Range("Z3").Value = Me.TextBox9.Value End If If Me.TextBox12.Value <> "" Then ' 単体価格 Range("AA3").Value = Me.TextBox12.Value End If If Me.TextBox6.Value <> "" Then ' 在庫数 Range("Y3").Value = Me.TextBox6.Value End If If Cells(3, Columns.Count).End(xlToLeft).Column > 19 Then Range("A2:G" & Rows.Count).AdvancedFilter Action:=xlFilterInPlace, _ CriteriaRange:=Range("S2").CurrentRegion, Unique:=False End If Range("S1:AA4").ClearContents ActiveWindow.ScrollColumn = 4 Range("A2").Activate End Sub Private Sub CommandButton2_Click() Unload Me End Sub

みんなの回答

回答No.5

こんにちは。 >エクセルを開いたあと、インターネットやアウトルック等を起動したりしているので、それも良くないのでしょうか。 そんなことはありません。あくまでも、ThisWorkbookやAuto_Open で、インターネットアクセスなどは、重いファイルの問題かもしれませんが、しないほうがよいようですね。ファイルが完全に開くまで、安定するまでは、アクセスしないということだけです。 Webクエリって、名実ともに組み込みマクロで、確かタイマー機能まで備えているわけですよね。だから、設定にもよりますが、自動的に動くわけですね。ファイルが安定していない状態だったら、やっぱりまずいのかなって思うのです。それで、私は、マクロを使うなら、マクロの上のマクロになってしまうので、QueryTableを削除してしまうわけです。 人によっては違う意見もあるとは思うのですが、10年以上もマクロを使っていると、いろんな場面に遭遇しますので、あれこれと自分なりの結論を作ってしまっているかもしれません。 なお、私は、ここの掲示板を、ExcelのVBAで、IEのオートメーション(オブジェクト)で、新規の質問リストを取ったり、自分の発言した管理を取ったりしていますが、書き込む際は、IE でアクセスしっぱなしでのこともあります。Excel2003時代から、現在のExcel2010まで、致命的エラーは、ほとんどありません。

kuulei1024
質問者

補足

Webクエリってそこまで出来るんですか! 新規の質問リストをとったりってことは、一覧リストから入って、中身も読み取れるのですか?? 私はマーケティングをしており、WEBクエリで出来るのかなと思いながら、手作業でやっておりますが、 マーケティング価格調査は中身を見て、税抜き価格なのか税込価格なのか、本当の値段を調査するには詳細ページを見ていかないとでないので、クリックして見ていってるのですが、果てしない作業で大変なのですが、 WEBクエリを使えば、価格調査も出来ると言うことなんですか? 知識が豊富で素晴らしいですね。本当に勉強になります。 補足ばかりですいません。。

回答No.4

こんばんは。 >他のシートで別の作業WEBクエリを使って作業をしたあとに、するとマクロが反応しないときはあるので、ごちゃごちゃしすぎてしまってるのかもしれません WEBクエリは、単独のシートで行っていますか? わたし流ですが、そこに何かを書き込むようなことをすると、調子が悪くなるようで、そこから必要なデータは、もう一度、数式などで別のシートに取り出すようにしています。 たぶん、WEBクエリは、テキストでとれているはずですが、余計なデータが紛れ込んでいる可能性があります。いじらなければ、問題は起こさないのですが、そのシートで、あれこれ作業すると、よくないのかもしれません。私の場合は、WEBクエリでデータを取得した後、その本体のオブジェクトを最後に削除することが多いです。 例:ActiveSheet.QueryTables(1).Delete それと、私のメモをみると、WEBクエリの項目の中に、「Excelの起動時直後に、他のオートメーション・オブジェクト(IEなど)を使用すると安定が悪く、エラー発生することがあるようです。」となっています。これだけでは意味不明かもしれませんが、OnTime メソッドとの組み合わせになどについて、自動実行させる場合の注意事項です。

kuulei1024
質問者

補足

なるほど。単独シートで挿入しておりますが、そこの必要箇所をコピーしてメインのデータが入っている商品マスタシートへコピーして、条件付き書式を使って重複データがあるか、探したりしてます。 その後、検索を行うと反応しなくなったりします。 あと、エクセルを開いたあと、インターネットやアウトルック等を起動したりしているので、それも良くないのでしょうか。 色々教えて頂いて勉強になります。ありがとうございます。

回答No.3

#2の回答者です。 >ここを変えれば良いということでしょうか?? Range("S1:AA4").NumberFormatLocal = "@" を、 'Range("S1:AA4").NumberFormatLocal = "@" 基本的には不要だと思っていますから、削除してみるか、コメントブロックをつけて、動かないようにしてみてください。失礼ですが、この程度の話にも質問されてしまうと、こちらからは、何も言えないです。 なお、 Range("S1:AA4").ClearContents で止まるということですが、そこに問題があるとすれば、一度、その範囲を、書式など含めて完全な消去をしてみる手もありますね。 ただ、後は、ブック自体を移し替えてみることでしょうか?

kuulei1024
質問者

お礼

ありがとうございます!! ブック自体を作り直したら、今のところ、固まることがなくなりました。 ただ、他のシートで別の作業WEBクエリを使って作業をしたあとに、するとマクロが反応しないときはあるので、ごちゃごちゃしすぎてしまってるのかもしれません、、

回答No.2

こんにちは。 まず、ExcelのバージョンとOSのバージョン(32か64 bitを含め)ていくつですか? 全体の感じからして、なんとなくUserFormの問題があるような気がします。 もともと、UserFormというものは、ローカル・オブジェクトでありながら、ThisWorkbookから直接のぶら下がりのオブジェクトになっています。そのせいか、UserFormを搭載したExcelは、使い方によって、フリーズになったり、致命的エラーを発したりして、とてもデリケートな状態になることがあります。 今のようなコードは、それぞれの親オブジェクトがあやふやで、アブナイなっていう印象があります。ただ、それ自体が問題が発生することは結び付けられません。 問題のひとつは、 Range("S1:AA4").NumberFormatLocal = "@" ご存知でないかもしれませんが、これは、まずいです。 関連のセル自体、不活性化させてしまいますから、 必要な部分だけ、マクロでは「'」と。プレフィックス文字を入れて使うようにしたほうがよいです。 例: Range("A3").Value = "'12/12" もうひとつは、関係ないかもしれませんが、 With ActiveSheet '(または、Worksheets("商品マスタ"))  .Range(~) ' コンマ(.)が文頭に付く End With というスタイルにしてみればよいと思います。 ただ、#1の補足のpoint2 の >これに変えたら、マクロが反応しなかったので、元に戻しました とは、構造的に考えられませんから、何かブック全体に問題が発生している可能性があります。a

kuulei1024
質問者

補足

ありがとうございます。でもすいません。VBAに詳しくないため、どう変えれば良いかが分からないのですがRange("S1:AA4").NumberFormatLocal = "@" ここを変えれば良いということでしょうか??

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

【point1】 変更箇所: If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData この前に application.calculation = xlcalculationmanual を挿入し,再計算で時間が掛かっていないか確認します マクロの最後で application.calculation = xlcalculationautomatic で自動に戻して下さい 【point2】 変更箇所: Range("A2:G" & Rows.Count).AdvancedFilter Action:=xlFilterInPlace, _ CriteriaRange:=Range("S2").CurrentRegion, Unique:=False とりあえず簡易に Range("A2:G4000").AdvancedFilter Action:=xlFilterInPlace, _ CriteriaRange:=Range("S2:AA4"), Unique:=False に変更し,改善するか確認します。 必要に応じて「最終行」をあなたの実際のエクセルシートに応じた方法で調べ(たとえばA列の一番下の行の行番号までなどのように)て,そこまでの範囲でadvancedfilterを作用させるような仕込みにしてみます。 【point3】 マクロの各所に stop を挿入し(判るならもちろんブレイクポイントを設定するのでも構いません),どこまでのステップはさくっと進み,具体的にどのマクロの一行でフリーズするのか焙り出します。 http://kabu-macro.com/word/ha-ho/breakpoint.html

kuulei1024
質問者

お礼

Range("S1:AA4").ClearContents ここにマーカーがついて、デバックを中断しますと出たので、ここの箇所が固まる原因と言うことなのでしょうか?

kuulei1024
質問者

補足

【point1】 は入れてみました。 【point2】 変更箇所: Range("A2:G" & Rows.Count).AdvancedFilter Action:=xlFilterInPlace, _ CriteriaRange:=Range("S2").CurrentRegion, Unique:=False とりあえず簡易に Range("A2:G4000").AdvancedFilter Action:=xlFilterInPlace, _ CriteriaRange:=Range("S2:AA4"), Unique:=False これに変えたら、マクロが反応しなかったので、元に戻しました。 ブレイクポイントのサイトを見ましたが、どこでフリーズするのかいまいちわからないですが、全行選択したらいいのでしょうか? 固まるのは、検索後、シートの行をクリックしようとすると毎回固まってしまいます。

関連するQ&A

  • AdvancedFilter 検索 複数条件

    AdvancedFilterを使って検索をしたいのですが、複数条件のVBAマクロの書き方を教えてください。 エクセル2010です。 2行目が見出し行で実際のデータは4行目から入っており、 T列を複数条件で検索をしたいのですが、 T4=スカート 150サイズ,ズボン 120サイズ,Tシャツ 150サイズ T5=スカート,ズボン 150サイズ, T6=Tシャツ 150サイズ,スカート 120サイズ 1セルに対して、検索用文字列が数十種類入っている状態です。 これをUseFormを利用して複数条件で検索をしたいのですが、 テキストボックス1、テキストボックス2、コマンドボタン1 があるとして、 テキストボックス1にスカート テキストボックス2に150 と入れて検索をかけたとき、T4のみが抽出結果に表示させたいです。 テキストボックス1にスカートのみで検索をかけると、T4-6が出るように表示させたいです。 テキストボックス1にTシャツ テキストボックス2に150 T4とT6が出るようにしたい。 このような事は出来るのでしょうか? Private Sub CommandButton2_Click() Worksheets("マスタ").Activate If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData Range("BH1:BU4").ClearContents Range("BH1:BU4").NumberFormatLocal = "@" Range("BS2").Value = Range("T2").Value Range("BS2").Value = Range("T2").Value If Me.TextBox1.Value <> "" Then ' 種類 Range("BS3").Value = "*" & Me.TextBox1.Value & "*" End If If Me.TextBox2.Value <> "" Then ' サイズ Range("BS4").Value = "*" & Me.TextBox2.Value & "*" End If If Cells(3, Columns.Count).End(xlToLeft).Column > 48 Then Range("A2:AW" & Rows.Count).AdvancedFilter Action:=xlFilterInPlace, _ CriteriaRange:=Range("BH2").CurrentRegion, Unique:=False End If Range("BH1:BU4").ClearContents Range("A1").Activate Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True End Sub これだと機能しないため、マクロを組める方、教えてほしいです。 オートフィルタだと、どうしてもフィルタボタンが出てしまい、見にくいので、 AdvancedFilterでやりたいのが希望です。 VBAわかる方、教えてください。 宜しくお願い致します。

  • エクセル2010、VBAや関数について

    Private Sub CommandButton1_Click() Worksheets("商品マスタ").Activate Application.Calculation = xlCalculationManual If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData ActiveWindow.ScrollRow = 3 Range("AI1:AQ4").ClearContents Range("AI1:AQ4").NumberFormatLocal = "@" Range("AJ2:AK2").Value = Range("B2:C2").Value Range("AL2:AM2").Value = Range("D2").Value Range("AO2").Value = Range("E2").Value Range("AP2").Value = Range("V2").Value Range("AQ2").Value = Range("W2").Value Range("AN2").Value = Range("D2").Value If Me.TextBox1.Value <> "" Then ' コード Range("AK3").Value = "*" & Me.TextBox1.Value End If If Me.TextBox2.Value <> "" Then ' メーカー Range("AL3").Value = "*" & Me.TextBox2.Value & "*" End If If Me.TextBox3.Value <> "" Then ' <--シリーズ Range("AM3").Value = "*" & Me.TextBox3.Value & "*" End If If Me.TextBox4.Value <> "" Then ' <--サイズ Range("AN3").Value = "*" & Me.TextBox4.Value & "*" End If If Me.TextBox5.Value <> "" Then ' 入荷日 Range("AJ3").Value = Me.TextBox5.Value End If If Me.TextBox9.Value <> "" Then ' 仕入れ先 Range("AP3").Value = Me.TextBox9.Value End If If Me.TextBox12.Value <> "" Then ' 単体価格 Range("AQ3").Value = Me.TextBox12.Value End If If Me.TextBox6.Value <> "" Then ' 在庫数 Range("AO3").Value = Me.TextBox6.Value End If If Cells(3, Columns.Count).End(xlToLeft).Column > 34 Then Range("A2:W" & Rows.Count).AdvancedFilter Action:=xlFilterInPlace, _ CriteriaRange:=Range("AI2").CurrentRegion, Unique:=False End If Range("AI1:AQ4").ClearContents ActiveWindow.ScrollColumn = 4 Range("A2").Activate Application.Calculation = xlCalculationAutomatic End Sub このようなマクロを組んでいるのですが、とても反応が遅いのですが、 シートにはA4-AG2000にデータが入っていて、 G4-U2000には =SUMIFS('[在庫.xlsx]02'!$AD:$AD,'[在庫.xlsx]02'!$AQ:$AQ,$A421,'[在庫.xlsx]02'!$AS:$AS,$F$2,'[在庫.xlsx]02'!$AT:$AT,G$2) このような関数が入っております。 これが原因で、動作が遅くなっているのでしょうか? 行の挿入等もとても遅いのですが、 G-U列の関数をやめてVBAで転記してから、検索をかけたら、早くなるのでしょうか? G-U列には関数での表記しかわからなかったため、関数をいれております。 解決法があれば教えてください。

  • 12個のCommandbuttonをスマートに

    はじめまして 2003 XP UserFormにCommandbuttonが12個あります。 Private Sub CommandButton1_Click() If Me.MultiPage1.Value = 0 Then TextBox3.Value = TextBox3 & "1" Else: TextBox1.Value = TextBox1 & "1" End If End Sub Private Sub CommandButton2_Click() If Me.MultiPage1.Value = 0 Then TextBox3.Value = TextBox3 & "2" Else: TextBox1.Value = TextBox1 & "2" End If End Sub Private Sub CommandButton3_Click() If Me.MultiPage1.Value = 0 Then TextBox3.Value = TextBox3 & "3" Else: TextBox1.Value = TextBox1 & "3" End If End Sub Private Sub CommandButton4_Click() If Me.MultiPage1.Value = 0 Then TextBox3.Value = TextBox3 & "4" Else: TextBox1.Value = TextBox1 & "4" End If End Sub Private Sub CommandButton5_Click() If Me.MultiPage1.Value = 0 Then TextBox3.Value = TextBox3 & "5" Else: TextBox1.Value = TextBox1 & "5" End If End Sub Private Sub CommandButton6_Click() If Me.MultiPage1.Value = 0 Then TextBox3.Value = TextBox3 & "6" Else: TextBox1.Value = TextBox1 & "6" End If End Sub Private Sub CommandButton7_Click() If Me.MultiPage1.Value = 0 Then TextBox3.Value = TextBox3 & "7" Else: TextBox1.Value = TextBox1 & "7" End If End Sub Private Sub CommandButton8_Click() If Me.MultiPage1.Value = 0 Then TextBox3.Value = TextBox3 & "8" Else: TextBox1.Value = TextBox1 & "8" End If End Sub Private Sub CommandButton9_Click() If Me.MultiPage1.Value = 0 Then TextBox3.Value = TextBox3 & "9" Else: TextBox1.Value = TextBox1 & "9" End If End Sub Private Sub CommandButton10_Click() If Me.MultiPage1.Value = 0 Then TextBox3.Value = TextBox3 & "0" Else: TextBox1.Value = TextBox1 & "0" End If End Sub Private Sub CommandButton11_Click() If Me.MultiPage1.Value = 0 Then TextBox3.Value = TextBox3 & "00" Else: TextBox1.Value = TextBox1 & "00" End If End Sub Private Sub CommandButton12_Click() If Me.MultiPage1.Value = 0 Then TextBox3.Value = TextBox3 & "000" Else: TextBox1.Value = TextBox1 & "000" End If End Sub  これをもっとスマートに出来ないでしょうか? 宜しくお願いします。

  • excel vba ジャンプ

    excel2003のUserFormにてtextbox作成しました。 textbox1にページを入力すると指定のページにジャンプする コードを作成したのですが、動作的には目的とする事ができました。 ただ、初心者レベルで作成したので、コード記述が長く、 ページが増えるたびにコードを追記していかなければなりません。 下記に作成したコードを記述します。 もっと簡単に記述する方法はありますか? ---------------------------------------------------------- Private Sub TextBox1_Change() If TextBox1.Value = 1 Then ActiveWindow.ScrollRow = 1 ActiveWindow.ScrollColumn = 1 Range("$A$15").Select End If If TextBox1.Value = 2 Then ActiveWindow.ScrollRow = 38 ActiveWindow.ScrollColumn = 1 Range("$A$38").Select End If If TextBox1.Value = 3 Then ActiveWindow.ScrollRow = 69 ActiveWindow.ScrollColumn = 1 Range("$A$69").Select End If If TextBox1.Value = 4 Then ActiveWindow.ScrollRow = 100 ActiveWindow.ScrollColumn = 1 Range("$A$100").Select End If If TextBox1.Value = 5 Then ActiveWindow.ScrollRow = 131 ActiveWindow.ScrollColumn = 1 Range("$A$131").Select End If End Sub ---------------------------------------------------------- 上記記述で行っていることは、 textbox1に 1 と入力すると1ページ目が表示  キーボードでctrl+Homeの操作をした状態でカーソルがA15選択 textbox1に 2 と入力すると2ページ目が表示  表示の先頭が38行目、カーソルがA38選択 ページの行数が1ページ目だけ37行 2ページ目以降が31行ごとです。 実際は、200ページ以上あるのでなんとかしたいのですが・・・・

  • ユーザーフォームのデータ

    ユーザーファームを2つ作成しました。 そのユーザーフォームのデータを表の最終行に追加をしたいのです。 Range("A65536").End(xlUp).Offset(1,0).select を使おうと思っていますが、うまくいきません。 どなたか教えてください。 <ユーザーフォーム1> Private Sub CommandButton1_Click() Sheet2.Range("H7") = TextBox1 Sheet2.Range("I7") = TextBox2 Sheet2.Range("J7") = TextBox3 Sheet2.Range("K7") = TextBox4 Sheet2.Range("L7") = TextBox5 Sheet2.Range("P7") = TextBox6 If CheckBox1.Value = True Then Worksheets(2).Range("M7") = "0:30" Else Worksheets(2).Range("M7") = "0:00" End If If CheckBox2.Value = True Then Worksheets(2).Range("R7") = "1000" Else Worksheets(2).Range("R7") = "0" End If If CheckBox3.Value = True Then Worksheets(2).Range("S7") = "3000" Else Worksheets(2).Range("S7") = "0" End If If CheckBox4.Value = True Then Worksheets(2).Range("T7") = "1500" Else Worksheets(2).Range("T7") = "0" End If Unload Me End Sub <ユーザーフォーム2> Private Sub CommandButton1_Click() Sheet2.Range("V7") = TextBox1 Sheet2.Range("W7") = TextBox2 Sheet2.Range("X7") = TextBox3 Unload Me End Sub

  • [VBA]型が一致しません

    EXCELWORKSHEET上で下記の処理をすると「型が一致しません」との エラーがでます。どうにも原因と対応策がわからず悩んでいます。 デバッグの良い方法ありませんでしょうか? <現象> *列2上のセルを選択して、DELETEキーを押す。⇒エラーなし。 *しかし、列2上のセルとその他のセルを同時選択した上で、DELETEキーを押すと「型が一致しません。」のエラー。 頭の「If Target.Column Like 2 And Len(Target.Value) > 0 Then 」が悪さしているのはわかるのですが・・・。 Private Sub WORKSHEET_CHANGE(ByVal Target As Range) If Target.Column Like 2 And Len(Target.Value) > 0 Then Range("c" & Target.Row).Value = Now If Target.Column Like 2 And Len(Target.Value) > 0 Then 'B列の場合だけ確認 Dim rng As Range Set rng = ActiveSheet.Range("B:B").Find(What:=Target, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True, MatchByte:=True) If Not rng Is Nothing Then '発見した。 If rng.Address <> Target.Address Then '入力中セル以外で発見 Select Case MsgBox("過去に受け入れたLOTです。再度受入れますか?", vbYesNo) Case vbYes Range("B2").Activate Selection.End(xlDown).Select ActiveCell.Offset(0, 1).Activate ActiveCell.Value = Now ActiveCell.Offset(0, 1).Activate ActiveCell.Value = UserForm2.TextBox2.Value UserForm2.TextBox1.Value = "" UserForm2.TextBox2.Value = "" UserForm2.TextBox1.SetFocus Range("B2").Activate Selection.End(xlDown).Select Selection.Offset(1, 0).Select Case vbNo Range("B2").Activate Selection.End(xlDown).Select ActiveCell.ClearContents ActiveCell.Offset(0, 1).Activate ActiveCell.ClearContents UserForm2.TextBox1.Value = "" UserForm2.TextBox2.Value = "" UserForm2.TextBox1.SetFocus End Select End If End If End If End If End Sub

  • Excel VBA テキストボックスを検索

    テキストボックス3に数値を入力し ExcelのA列にあるか検索をかける。 ある場合は、B列の同じ行に 「みーつけた!」と入力。 その設定で組んでみたのですが、 テキストボックス3にデータを6桁入力しようとすると 6桁目にオーバーフローエラーが出ます。 このプログラムの何処がおかしいのでしょうか? Private Sub TextBox3_Change() Dim Number As Integer If TextBox3.Value <> "" Then '空じゃない場合 Number = TextBox3.Value Call 検索(Number) MsgBox TextBox3.Value End If End Sub Sub 検索(ByVal Number As Variant) Dim FoundCell As Range Set FoundCell = Range("A:A").Cells.Find(What:=Number, lookat:=xlPart) If FoundCell Is Nothing Then Else FoundCell.Activate Range("O" & ActiveCell.Row).Value = "みーつけた!" End If End Sub

  • VBA 空白をエラー表示させる!

    ボタンをクリックすると、入力ミスがないように MsgBoxで表示させるものを作りましたが TextBox3を都合のため切り取りました! そしたら、エラー表示され If Controls("TextBox" & i).Text = "" Then ↑黄色く表示されます! どのように下の記述を変えれば良いか教えてください! Private Sub CommandButton5_Click() Dim i As Integer For i = 1 To 9 If Controls("TextBox" & i).Text = "" Then MsgBox "判定入力していない項目がありますよ!", vbInformation, "空欄を見て!" Exit Sub End If Next If MsgBox("記録するよ?", vbOKCancel) = vbOK Then With Worksheets("グラフ") 'アセスメント身体 .Range("U2").Value = TextBox1.Value .Range("U3").Value = TextBox2.Value .Range("U4").Value = TextBox3.Value .Range("U5").Value = TextBox4.Value .Range("U6").Value = TextBox5.Value .Range("U7").Value = TextBox6.Value .Range("U8").Value = TextBox7.Value .Range("U9").Value = TextBox8.Value .Range("U10").Value = TextBox9.Value

  • VBA Offsetで選択セルを移動させる

    よろしくお願いします。 H8から一行づつ下げてH10まで来たらH15まで飛ばして また一行づつ下げていく。 H20まで来たらH27まで飛ばしてまた一行づつ下げていく。 このようにしたいのですが、構文が解りません。 Private Sub CommandButton1_Click() If ActiveSheet.Range("H8").Activate Then ActiveCell.offset(1, 0).Activate Else ActiveCell.offset(1, 0).Activate End If If ActiveSheet.Range("H10").Activate Then ActiveCell.offset(5, 0).Activate Else ActiveCell.offset(1, 0).Activate End If If ActiveSheet.Range("H20").Activate Then ActiveCell.offset(7, 0).Activate Else ActiveCell.offset(1, 0).Activate End If End Sub

  • ExcelVBAで行と列の検索

       A  B  C  D  E 1  コード あ  い  う  え 2  10  ○    ○ 3  20     ○  ○ 4  30          ○ 上記の表が5000件あります。Textbox1に入力し検索ボタンを押すと A列のコードを検索して一致する列の○のあるところの1行目の項目 をtextbox2に表示したいのですがうまく行きません。 よろしくお願い致します。 Private Sub CommandButton1_Click() '検索フォームボタン Dim i As Long Dim 最終行 As String Dim サーチ行 As Long Sheets(1).Activate 最終行 = Range("A1").End(xlDown).Row サーチ行 = 0 For i = 2 To 最終行 If TextBox1.Value = Range("A" & i) Then If Range("B" & i, "N" & i) = "" Then TextBox2.Text = Range("B1", "N1") サーチ行 = i Exit For End If End If Next If サーチ行 = 0 Then MsgBox TextBox1.Value & "データはありません。", vbInformation, "無し" End If TextBox1.SetFocus End Sub エラーはでません。データはありませんとなります。  

専門家に質問してみよう