VBA初心者のためのデータ検索プログラムの作成方法

このQ&Aのポイント
  • VBA初心者の方がA1からA11にデータがあり、画面のテキストボックスに入力した文字を含むセルに色を付けるプログラムを作成したいです。
  • データに入力した文字を含むセルが複数あった場合、1回目の検索で色が付きますが、2回目以降の検索でエラーが発生します。
  • プログラム中のflagを使用して、1度目の検索のセルのアドレスを保存し、2回目以降の検索ではそのセルの次のセルから検索を行うようにすることで、解決できるかもしれませんが、具体的な実装方法がわかりません。助けてください。
回答を見る
  • ベストアンサー

VBA初心者です。A1からA11にデータがあります。画面のテキストボッ

VBA初心者です。A1からA11にデータがあります。画面のテキストボックスに例えば、山と入力し、ボタンをクリックする度、その文字を含むセルに色をつけようとしています。山を含むデータが3個あれば3回ボタンをクリックしないと終了しないというわけです。 データに山の文字を含むセルが複数あった時、下のプログラムでは1回ボタンをクリックした時、色が付きます。2回目以降は(1)でエラーです。 山と言う文字がA3、A6、A9にあれば、1回目はA3を検索、2回目以降はA4から検索しA6で着色、3回目はA7から検索してA9で着色、最後の行までいけばデータは以上、というメッセージを表示ということです。 プログラムは検索部分だけ記載しています。 'データ領域、最終行取得 Worksheets("Sheet1").Activate Range(Cells(2, 1), Cells(maxRow, 1)).CurrentRegion.Select If flag = False Then Set c = Worksheets("Sheet1").Range(Cells(2, 1), Cells(maxRow, 1)).CurrentRegion.Find(What:=myKey, LookIn:=xlValues, lookat:=xlPart, SearchOrder:=xlByColumns) c.Interior.ColorIndex = 4 flag = True Else (1) Set d = Worksheets("Sheet1").Range(Cells(2, 1), Cells(maxRow, 1)).CurrentRegion.FindNext(c) d.Interior.ColorIndex = 4 End If flagは Option Explicit Dim flag As Boolean で宣言。flagは、 Private Sub UserForm_Click() flag = False End Sub でフォームロード時にfalseとします。 Flagはテキストボックスに入力した文字をクリアするボタンをクリックした時再びfalseに設定します。 Flagがfalseの時は1度目の検索。2度目以降はTrue。やりたいことは、 1,1度目の検索のセルのアドレスをどこかに保存し、2回目以降のボタンのクリック(Flagがtrue時)はそのセルの次のセルから検索を行う。 2,2回目以降ヒットしたセルの次のセルから検索する。 3,データの最後のセルまで検索した時、メッセージで、"検索終了"といった表示を出す。 (1)はわからないので不完全のプログラムのまま記載しています。特に、1回目の検索したセルのアドレスをどう取得し、Range(Cells(2, 1), Cells(maxRow, 1))に代入すればよいのかわかりません。 Flagをたてるというのはいいアイデアに思ったのですが・・・ (1)前後のプログラムででどうやれば、1回目の検索時(Flagがfalseの時)のセルのアドレスを取得し、2回目以降のボタンのクリック時まで保存し、(1)に代入していけばよいのかわかりません。 ここまではナントカできたのですが・・・お助けください、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

userformにtextbox1、commandbutton1を作成し 以下を貼り付けて試してください 'userformへ Option Explicit '変数の宣言 Dim flag As Boolean Dim c As Range Dim d As Range '検索処理 Private Sub CommandButton1_Click() 'textbox1が未入力なら処理中止 If TextBox1.Value = "" Then Exit Sub '初めてか2回目以降で処理の分岐 If flag = False Then 初めての検索処理 Set c = Cells.Find(After:=Cells(Rows.Count, Columns.Count), What:=TextBox1.Value, LookIn:=xlValues, lookat:=xlPart, SearchOrder:=xlByColumns) c.Interior.ColorIndex = 4 初めての結果(range)を保存しておく Set d = c flag = True Else '2回目以降の検索処理 Set d = Cells.Find(After:=d, What:=TextBox1.Value, LookIn:=xlValues, lookat:=xlPart, SearchOrder:=xlByColumns) d.Interior.ColorIndex = 4 '保存しておいた結果と今回の検索結果を比較して '1周してきたと判断して終了を表示 If c.Address = d.Address Then MsgBox "検索終了" End If End Sub Private Sub TextBox1_Change() '検索値の変更で各保存していた値のリセット flag = False Set c = Nothing Set d = Nothing End Sub Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 'userform終了時にお約束の処理 Set c = Nothing Set d = Nothing End Sub 以上 参考まで うまく行ったら、質問のコードと比較してみてね 参考まで

crtlcdpdpel
質問者

お礼

OKWAVEのビギナーなもので、ここにお礼が書けるとは知りませんでした。助かりました。ありがとうございます。まだVBAを勉強し始めたものです。本屋に行っても、基本ばかり書かれている本は山のようにありますが、イザこの機能はどうやって、となると殆ど役に立ちません。 そんなわけで、こんな機能はどうやって組むのか、と自問自答とコピペを繰り返しながら試行錯誤の毎日です。またネットで見かけたら質問に答えてやってください。よろしくお願いします。

その他の回答 (1)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

参考に Sub Test()   Dim c As Range   Dim FirstAddress As String   Dim i As Long   Dim myflg As Boolean   'myKey = "山"   Worksheets("Sheet1").Activate   With ActiveSheet.Range("A1", Cells(Rows.Count, "A").End(xlUp))     Set c = .Find(What:=myKey, LookIn:=xlValues, lookat:=xlPart, SearchOrder:=xlByColumns)     If c Is Nothing Then       MsgBox myKey & " は、見つかりませんでした。", 64       Exit Sub     End If     FirstAddress = c.Address     Do       If c.Interior.ColorIndex <> 4 Then         c.Interior.ColorIndex = 4         myflg = True       End If       Set c = .FindNext(c)       If FirstAddress = c.Address Then         MsgBox "データは以上", 64         Exit Do       ElseIf myflg Then         Exit Do       End If     Loop   End With   Set c = Nothing End Sub

関連するQ&A

  • VBA初心者です。A1からA11にデータがあります。画面のテキストボッ

    VBA初心者です。A1からA11にデータがあります。画面のテキストボックスに例えば、山と入力し、ボタンをクリックする度、その文字を含むセルに色をつけようとしています。山を含むデータが3個あれば3回ボタンをクリックしないと終了しないというわけです。 データに山の文字を含むセルが複数あった時、下のプログラムでは1回ボタンをクリックした時、色が付きます。2回目以降は(1)でエラーです。 山と言う文字がA3、A6、A9にあれば、1回目はA3を検索、2回目以降はA4から検索しA6で着色、3回目はA7から検索してA9で着色、最後の行までいけばデータは以上、というメッセージを表示ということです。 プログラムは検索部分だけ記載しています。 'データ領域、最終行取得 Worksheets("Sheet1").Activate Range(Cells(2, 1), Cells(maxRow, 1)).CurrentRegion.Select If flag = False Then Set c = Worksheets("Sheet1").Range(Cells(2, 1), Cells(maxRow, 1)).CurrentRegion.Find(What:=myKey, LookIn:=xlValues, lookat:=xlPart, SearchOrder:=xlByColumns) c.Interior.ColorIndex = 4 flag = True Else (1) Set d = Worksheets("Sheet1").Range(Cells(2, 1), Cells(maxRow, 1)).CurrentRegion.FindNext(c) d.Interior.ColorIndex = 4 End If flagは Option Explicit Dim flag As Boolean で宣言。flagは、 Private Sub UserForm_Click() flag = False End Sub でフォームロード時にfalseとします。 Flagはテキストボックスに入力した文字をクリアするボタンをクリックした時再びfalseに設定します。 Flagがfalseの時は1度目の検索。2度目以降はTrue。やりたいことは、 1,1度目の検索のセルのアドレスをどこかに保存し、2回目以降のボタンのクリック(Flagがtrue時)はそのセルの次のセルから検索を行う。 2,2回目以降ヒットしたセルの次のセルから検索する。 3,データの最後のセルまで検索した時、メッセージで、"検索終了"といった表示を出す。 (1)はわからないので不完全のプログラムのまま記載しています。特に、1回目の検索したセルのアドレスをどう取得し、Range(Cells(2, 1), Cells(maxRow, 1))に代入すればよいのかわかりません。 Flagをたてるというのはいいアイデアに思ったのですが・・・ (1)前後のプログラムででどうやれば、1回目の検索時(Flagがfalseの時)のセルのアドレスを取得し、2回目以降のボタンのクリック時まで保存し、(1)に代入していけばよいのかわかりません。 ここまではナントカできたのですが・・・お助けください、よろしくお願いします。

  • VBAを勉強し始めた者です。

    VBAを勉強し始めた者です。 Private Sub スタート_Click() Dim myKey As String Dim maxrow As Long myKey = 入力値.Value maxrow = Worksheets("sheet1").Cells(Rows.Count, 1).End(xlUp).Row If flag = False Then '初めての検索処理 (1) Set c = Worksheets("sheet1").Range(Cells(2, 1), Cells(maxrow, 1)).Find(What:=myKey, LookIn:=xlValues, lookat:=xlPart, SearchOrder:=xlByRows) c.Interior.ColorIndex = 4 '初めての結果(range)を保存しておく Set d = c flag = True Else '2回目以降の検索処理 (2) Set d = Worksheets("sheet1").Range(Cells(2, 1), Cells(maxrow, 1)).Find(What:=myKey, LookIn:=xlValues, lookat:=xlPart, SearchOrder:=xlByRows) d.Interior.ColorIndex = 4 '保存しておいた結果と今回の検索結果を比較して1周してきたと判断して終了を表示 If c.Address = d.Address Then MsgBox "検索終了" End If End Sub 現在データはA1がデータ名(名前、番号、住所など)、A2からA11までデータが入っています。テキストボックス(以下TB)に入力された文字を含むセルに着色する、というものです。検索、着色部分は成功しています。 これにB1にデータ名、さらにB2からB11まで新たにデータを加えました。 本来はA列だけ検索の対象にしたいのですが後で他の機能を追加するためB列にもデータを加えました。 たとえばテキストボックスに入力した文字を三とします。三を含むデータがA2、A11、B2、B11にあったとします。 上記のプログラムだと、なぜかA11だけ着色され、終了します。本来はA2から下に向かって検索してほしいのですが。 試行錯誤した中には、B2→A11の二つのセルだけ、TBに入力された文字が含まれるセルに着色していきました。 11行以降もデータが増えることを想定して、 maxrow = Worksheets("sheet1").Cells(Rows.Count, 1).End(xlUp).Row で最終行を取得し、(1)、(2)を、 Set d = Worksheets("sheet1").Range("A2:"A" & maxrow).以下省略 としましたが、エラーが出ました。 手直しして、(1)(2)を最終行をカウントしてA2から始まって、A11まで検索できるようにしたはずなのですが、やはりダメでした。Range("A2:"A" & maxrow)の部分と上記のプログラムの不具合を教えてください。よろしくお願いします。

  • 最終行/処理対象のデータまでを表すVBA

    こんばんは、データの最終行/処理する対象のセルまで処理する場合のVBAの記述について質問させてください!VBAの最終行/処理する対象のセルまで選択するために使用する記述方法が何種類かありますが、そのうち、書籍やネットで検索しても出てこない記述方法について今一つ理解ができていません(T_T) 本屋で売っている書籍やネットで検索すると出てくる記述方法 Range~.End(xlUp).Row Range~.CurrentRegion Range~.SpecialCells(xlLastCell) Range~.Cells(Rows.Count, 1).End(xlUp).Row 上記のようなVBAは書籍やネットで検索すると説明や違いについても出てくるので、説明を読めば理解ができるのですが、 Sheets("テスト").Range("A1:C" & Sheets("テスト").Cells _(1).CurrentRegion.Rows.Count) Range("A1").CurrentRegion.Cells(Range _("A1").CurrentRegion.Cells.Count).Row 上記のようなVBAについては検索しても説明など出てこないうえに、 なぜ上記のような記述になるのかあまり理解できていません(>_<) 書籍やネットで検索すると出てくる「Range~.CurrentRegion」などの記述方法から何となく、CurrentRegionやCells.Countを使わないといけないというのは理解できますが、なぜ「~CurrentRegion.Rows.Count)」はRowsがカッコの中に入っていて、「~CurrentRegion.Cells.Count).Row」はカッコの外に出ているのか??といった細かいことが分からずにいます。。。 半ば丸暗記のようにして使ってしまっているのですが、もし上記のようなVBAについてわかるかたがいらっしゃれば、ご教授いただけるととても嬉しいです! また、上記以外にもまだ検索しても出てこないようなVBAがあるのでしょうか?? 頭が混乱しそうです!(゜Д゜;)

  • VBA データの統合機能

    Winは7、Excelは2013を使用しています。 以前、データの統合機能というのをこちらで教わり、 その構文を使用させて頂いているのですが、 下記の、方法を集計のところの、Rnage("A7")のところに、変数 rnを使用したいのですが、 エラーコード438が出てしまいます。 あと、年間集計のところにデータを書きだすところで、画像の青枠の様に1列おきに書き出したいのですが、可能でしょうか? 以上、2点ご教示頂けますようお願い致します。 Sub test_データの統合機能() Dim sArray() As String ReDim sArray(Sheets.Count - 2) As String Sheets("年間集計").Select Cells.ClearContents '-------------------------------------------- '科目年間集計 '-------------------------------------------- For i = 2 To Sheets.Count sShtName = Sheets(i).Name sShtAddress = Sheets(i).Range("M2").CurrentRegion.Address(, , xlR1C1) sArray(i - 2) = sShtName & "!" & sShtAddress Next i Sheets(1).Range("A1").Consolidate Sources:=sArray, _ Function:=xlSum, _ TopRow:=True, _ LeftColumn:=True, _ CreateLinks:=False '-------------------------------------------- '合計 '-------------------------------------------- Dim maxCol As Long Dim maxRow As Long Dim c As Integer Dim r As Integer maxCol = Range("A2").End(xlToRight).Column maxRow = Range("A2").End(xlDown).Row Cells(1, maxCol + 1) = "合計回数" Cells(1, maxCol + 2) = "合計時間" For r = 2 To maxRow For c = 2 To maxCol Step 2 Cells(r, maxCol + 1) = Cells(r, maxCol + 1) + Cells(r, c) Cells(r, maxCol + 2) = Cells(r, maxCol + 2) + Cells(r, c + 1) Next c Next r '-------------------------------------------- '方法を年間集計 '-------------------------------------------- Dim rn As Range Set rn = Cells(maxRow + 2, 1) For i = 2 To Sheets.Count sShtName = Sheets(i).Name sShtAddress = Sheets(i).Range("Q2").CurrentRegion.Address(, , xlR1C1) sArray(i - 2) = sShtName & "!" & sShtAddress Next i Sheets(1).Range("A7").Consolidate Sources:=sArray, _ Function:=xlSum, _ TopRow:=True, _ LeftColumn:=True, _ CreateLinks:=False '-------------------------------------------- 'このあとに合計を計算する '-------------------------------------------- '(略) End Sub

  • VBA AutoFilter 範囲指定

    いつもお世話になっております 過去に https://okwave.jp/qa/q9707059.html にてワークシートのデータをオートフィルターをかけて別なワークシートにデータを取り出す方法を教えて頂きました 送られてくる元データが変更になって、A3セルの上のA2セルの上にテキスト文字が入るようになったので、範囲指定を正しく出来るようにする方法を https://okwave.jp/qa/q9708868.html にて教えて頂きました 今回、https://okwave.jp/qa/q9707059.htmlで教えて頂いたワークシートのコードを実行させると元データが変更になったデータを利用すると、A1セルまで含まれた範囲がAutoFilter の領域と判断される為正しい結果となりません 添付画像のワークシートで Sub test9() Worksheets("Sheet1").Range(Cells(3, "A"), Cells(Range("A3").CurrentRegion.Rows.Count, Range("A3").CurrentRegion.Columns.Count)) _ .AutoFilter Field:=2, Criteria1:=Cells(5, "G").Value End Sub を実行させれば、"秋田”でフィルターがきちんとかけれらた状態になります そこで教えて頂いたコードを下記に変更して実行させてみたのですが Dim i As Long With Worksheets("Sheet1") .Range("B4", .Range("B4").End(xlDown)).Copy .Range("G4").PasteSpecial (xlPasteAll) .Range("G4", .Range("G4").End(xlDown)).RemoveDuplicates Columns:=Array(1), Header:=xlNo For i = 4 To .Cells(Rows.Count, "G").End(xlUp).Row Worksheets.Add After:=Worksheets(Worksheets.Count) ActiveSheet.Name = .Cells(i, "G").Value .Range(Cells(3, "A"), Cells(Range("A3").CurrentRegion.Rows.Count, Range("A3").CurrentRegion.Columns.Count)) _ .AutoFilter Field:=2, Criteria1:=.Cells(i, "G").Value .Cells(3, 1).CurrentRegion.Copy Destination:=Worksheets(.Cells(i, "G").Value).Cells(3, 1) .AutoFilterMode = False Next .Range(Cells(3, "A"), Cells(Range("A3").CurrentRegion.Rows.Count, Range("A3").CurrentRegion.Columns.Count)) _ .AutoFilter Field:=2, Criteria1:=.Cells(i, "G").Value 部分で 実行時エラー'1004' アプリケーション定義またはオブジェクト定義のエラーです になってしまいます 元データがA2セルにテキスト文字が入った状態でも正常にコード動作させるにはどのようにしたらいいのでしょうか よろしくお願い致します

  • VBAでセルの結合と分割(解除)をお願いします

    宜しくお願いいたします。 H5とH6のどちらかに数字か記号が入っています以下30個のセルも同様です、H6にデータを入れH5とH6を結合するとセルの認識はH5を認識するのでH6のデータは他へコピー出来ないので結合したセルを再度分割して一行に並び変えているのに下記の構文で実行しているのですが結合にかなりの時間がかかっています。分割は瞬時にできています。 お願いしたい件は即時もしくはなるべく早い方法がありましたらお願いいたします。 こんな感じで作りました Sub 結合() For a = 8 To 38 Range(Cells(5, a), Cells(6, a)).Select Selection.Merge Range(Cells(7, a), Cells(8, a)).Select Selection.MergeSub 以降29個    ・    ・    ・ Next a End Sub 分割() Dim range1 As Range Set range1 = Range("H5:AL5") range1.MergeCells = False Set range1 = Range("H7:AL7") range1.MergeCells = False 以降29個   ・   ・    ・ End Sub 良い方法をご伝授宜しくお願いいたします

  • vba なぜこうなるのか・・・。

    こんばんは、よろしくお願いします。 A1セルにデータが入っている状態で、以下の変数を使いA列の最終データが入っている行を調べると、(65536)が表示されます。なぜ、(1)にならないのでしょうか? ためしにA1及びA2セルにデータを入れマクロを実行すると、正確に2が表示されました。 Sub 練習() dim maxrow as long maxrow = Sheets(1).Range("a1").End(xlDown).Row   msgbox maxrow End Sub EXCEL2000を使用しています。よろしくお願いします。  

  • <excel:VBA>変数を使って簡略化したい

    google検索してなんとか自力で作ったVBAを下記に貼りました。 きちんと動作はするのですが、せっかくなので変数を使って簡素化し、 データが多くても動作が速くなるようにしたいのです。 いろいろ試しましたが、変数の使い方の知識が乏しく、うまくいきませんでした。 変数としたいのは■マークの2箇所になると思います。 詳しい方、力を貸していただけないでしょうか。 どうぞよろしくお願いいたします。 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ Sub オートフィルタ貼付作業() With Sheets("データ").Range("A3") Application.ScreenUpdating = False Range("AA3:EK3").AutoFilter .AutoFilter Field:=1, Criteria1:="1" ’■Fieldが1ずつ増えていく Range("AA3").Copy Range("Z3") ’■AA3が1列ずつ右へずれていく .CurrentRegion.Copy Sheets("貼付").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) Range("A3").AutoFilter Range("AA3:EK3").AutoFilter .AutoFilter Field:=2, Criteria1:="1" Range("AB3").Copy Range("Z3") .CurrentRegion.Copy Sheets("貼付").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) Range("A3").AutoFilter ~~~~~~~~~~~~ 115列分のデータがあり 下記まで同じようにつづきます ~~~~~~~~~~~~ Range("AA3:EK3").AutoFilter .AutoFilter Field:=115, Criteria1:="1" Range("ek3").Copy Range("Z3") .CurrentRegion.Copy Sheets("貼付").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) Range("A3").AutoFilter End With Application.ScreenUpdating = True Sheets("貼付").Activate Cells.Columns.AutoFit End Sub ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

  • VBAを勉強し始めたものです。以下のプログラムはネット上の皆様に教えて

    VBAを勉強し始めたものです。以下のプログラムはネット上の皆様に教えて頂きながら作成しております。教えていただいた方、感謝しています。 Dim myKey As String Dim maxrow As Long Dim maxcolumns As Long (1) If textbox1.Value = "" Then Exit Sub MsgBox "キーワードが未入力です", vbExclamation myKey = textbox1.Value maxrow = Worksheets("sheet1").Cells(Rows.Count, 1).End(xlUp).Row maxcolumns = Worksheets("sheet1").Cells(maxrow, Columns.Count).End(xlToRight).Columns Debug.Print maxrow Debug.Print maxcolumns If flag = False Then '初めての検索処理 Set c = Cells.Find(After:=Cells(Rows.Count, Columns.Count), What:=myKey, LookIn:=xlValues, lookat:=xlPart, SearchOrder:=xlByColumns) c.Interior.ColorIndex = 4 '初めての結果(range)を保存しておく Set d = c flag = True Else '2回目以降の検索処理 Set d = Cells.Find(After:=d, What:=myKey, LookIn:=xlValues, lookat:=xlPart, SearchOrder:=xlByColumns) d.Interior.ColorIndex = 4 '保存しておいた結果と今回の検索結果を比較して1周してきたと判断して終了を表示 If c.Address = d.Address Then MsgBox "検索終了" End If これはテキストボックスに入力された文字を含むセルに着色する、というものです。検索、着色部分は成功しています。ありがとうございます。 でも(1)の部分なのですが、なぜか、テキストボックスに文字未入力の段階でクリックすると、エラーメッセージがでません。でも文字を入力して、検索のボタンをクリックするたびに"キーワードが未入力です"の表示が出ます。現象としてはマッタク反対なのですが、なぜこうなるのか、プログラムのどこに問題があるのか、教えてください。よろしくお願いします。

  • VBAについて質問です。

    VBAについて質問です。 まとまったデータがあるところから検索したい月及び各項目のデータを検索し、項目シート事に抽出するという作業を行なっています。そこで問題がでました。6月にはデータはあるが、5月にはデータはない。 そうすると以下のコードの場合デバックが入り、他の検索が出来ません。 どうしたらよいのでしょうか? 分かる方がいらっしゃいましたらどうかお願い致します。 'シートの変更 Range("B30").Select Sheets("東京").Select '●Sheet2書込み行 Sheets("東京").Range("A5").CurrentRegion.Clear Sheets("東京").Range("A5:F5").Value = _ Array("依頼書No.", "受付日日", "担当者", "枚数", "工数", "備考") Row2 = 5 For R = 2 To Sheets("日報").Cells(Rows.Count, "A").End(xlUp).Row If Sheets("東京").Range("A2") = Sheets("日報").Cells(R, "A") And _ Sheets("東京").Range("B2") = Month(Sheets("日報").Cells(R, "C")) Then Row2 = Row2 + 1 Sheets("東京").Cells(Row2, "A") = Sheets("日報").Cells(R, "B") Sheets("東京").Cells(Row2, "B") = Sheets("日報").Cells(R, "D") Sheets("東京").Cells(Row2, "C") = Sheets("日報").Cells(R, "F") Sheets("東京").Cells(Row2, "D") = Sheets("日報").Cells(R, "I") Sheets("東京").Cells(Row2, "E") = Sheets("日報").Cells(R, "K") Sheets("東京").Cells(Row2, "F") = Sheets("日報").Cells(R, "L") End If Next R '●抽出結果を日付で並べ替え If Row2 = 5 Then MsgBox "該当データなし!" Else Sheets("東京").Range("A5:F" & Row2).Sort _ Key1:=Range("B6"), Order1:=xlAscending, _ Header:=xlYes, OrderCustom:=1, MatchCase:=False, _ Orientation:=xlTopToBottom, SortMethod:=xlPinYin End If Sheets("東京").Select Range("B5:B200").Select Selection.NumberFormatLocal = "yyyy/m/d"     Rows("5:5").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .ShrinkToFit = False .MergeCells = False End With このあとに式を入れて、罫線を入れてコピーして、というコードが入っています。 どうぞ宜しくお願い致します。

専門家に質問してみよう