• 締切済み

エクセルマクロ→指定した数値を検索して範囲選択

EXCEL2000を使用しています。 受付でC列に値が入ったらB列に =IF(C1="","",TODAY()) といった数式を入れています。 そこで翌日ファイルを開けるとTODAY関数が更新される為、前日の受付した日時も今日の日付になってしまいます。いちいち朝一番に前日であろうセルを範囲選択して 前日の日時を入れctrl+enterを押して文字列として入力してますが毎日100行近くを選択するのがとてもめんどくさいのです。 できれば朝一番前日なのに当日の日時なっているセルを検索してそれを範囲選択して一度に変更できるマクロみたいなものはないでしょうか? 出来ればフォームからボタンで一括作業できたら本当に嬉しいのですが・・・

みんなの回答

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

こんばんは。 もともと、イベント・ドリブン型で入力していけばよいのではありませんか? =IF(C1="","",TODAY()) のマクロ版です。 'シートモジュールに貼り付けてください。 Private Sub Worksheet_Change(ByVal Target As Range)  If Target.Column <> 3 Then Exit Sub  Application.EnableEvents = False  For Each c In Target 'C列に値が入って、B列が空の時   If c.Value <> "" And c.Offset(, -1) = "" Then    c.Offset(, -1).NumberFormatLocal = "yy/mm/dd"    c.Offset(, -1).Value = Date   End If  Next c  Application.EnableEvents = True End Sub >いちいち朝一番に前日であろうセルを範囲選択して >前日の日時を入れctrl+enterを押して文字列として入力してますが >毎日100行近くを選択するのがとてもめんどくさいのです。 これについては、ちょっと難しいですね。 シートの計算を[自動]にしている限りは、前日なのか、前々日なのか区別がつかないのではありませんか?[手動]にしてあるなら、まだ別の方法があるけれど、それも面倒です。 '---------------------------------------------- Sub FixedDateEntering()   Dim c As Range   Application.ScreenUpdating = False   For Each c In Range("B1", Range("B65536").End(xlUp))    If c.HasFormula Then      If InStr(c.FormulaLocal, "TODAY()") > 0 And c.Offset(, 1) <> "" Then       c.NumberFormatLocal = "yy/mm/dd"       c.Value = c.Value - 1      End If    End If   Next c   Application.ScreenUpdating = True End Sub

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

そんなことしなくても、VBAで日付をセットしてしまえばよいでしょう。 C列に値が入ったら対応する行のB列のセルに日付をセットする。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 3 Then Cells(Target.Row, "B") = Date End If End Sub これを改良すればどうでしょう。 日付が変わっても、一旦セットした値は変わらない。

  • YNi2B2C
  • ベストアンサー率13% (21/156)
回答No.1

こんばんは。簡単な例を示します。 A1セルから下に日付が入っていたとして、C1に参照用に”=today()”と入っている場合のマクロです。 ~・~・~・~・~・~・~・~・~・~・~・ Sub 日付変更() 今日の日付 = Range("C1").Value Range("A1").Activate Do Until ActiveCell.Value = "" If ActiveCell.Value = 今日の日付 Then ActiveCell.Formula = 今日の日付 - 1 End If ActiveCell.Offset(1, 0).Activate Loop End Sub ~・~・~・~・~・~・~・~・~・~・~・ Excel2003で取り急ぎ作ったので、2000での動作確認はしていません。 朝一番にこのマクロを使わないと意味がないです。 お昼頃に間違えてマクロを走らせると、悲しいことになるので注意が必要です。 以上、参考まで。

関連するQ&A

  • マクロを使い選択範囲を次々と変えて並べ替えたい

    マクロ作成は 範囲選択 A4~G12 マクロ記録開始 並べ替え E列 降順 マクロ記録終了 でマクロを作成し 次に範囲選択 A14~G22でこのマクロを実行すると範囲選択が前と同じA4~G12が並べ替えられてしまいます。 マクロの中を見ると範囲選択 A4~G12が書かれてしまっています。 次のように、選択範囲を次々と変えて並べ替えるマクロを作りたいのですがお教え願います。 1. 範囲選択 A4~G12を選択 マクロ実行で選択範囲をE列の値で降順並べ替える 2. 範囲選択 A14~G22を選択 マクロ実行で選択範囲をE列の値で降順並べ替える 3. 範囲選択 A28~G32を選択 マクロ実行で選択範囲をE列の値で降順並べ替える

  • Excelで選択範囲の合計をマクロで

    Excel2003を使用しています。 ステータスバーに、選択範囲の合計、平均、データの個数などが 表示されますが、同じ機能をマクロを使って、 固定のセルに表示できないでしょうか? 例えば、任意のセルを選択すると、 A1に選択範囲の合計、A2に選択範囲の平均が自動で表示される というような機能です。 Excel2007では、同様の機能がステータスバーにあるようなのですが。 よろしくお願い申し上げます。

  • エクセルのマクロで範囲を選択するマクロ

    教えてください。 下記の通り、例えばA列の2~5にデータが入っている場合に、B2~D5の範囲を選択するマクロを教えてください。 A列のデータが入っている行は可変です。   A B C D E 1  2 6 3 7 4 9 5 10 6 7

  • Excelのマクロ 指定した範囲のセルの処理方法

    Excel2000のマクロを使って以下のマクロを作っています。 ■指定した範囲のセルの値が80以上だったら色をつける そこで質問なのですが、 range("","").select でセルの範囲を指定して、そこから選択したセルだけを対象に処理を実行するにはどうしたらいいのか方法がわかりません。どうすればいいでしょうか? どなたかご解答よろしくお願いします。

  • EXCEL 範囲指定後矢印線を引くマクロの作り方

    範囲選択した任意(例:A1~C1)のセルに、オートシェイプの矢印線を自動的に引くマクロの作り方を教えて下さい。 できれば、矢印線の始点にオートシェイプの丸(黒丸ではなく白丸)も一緒に引けるマクロも教えて下さい。 範囲指定するセルの長さは一定ではなく、長さがいろいろになります。 工程表を作成するにあたり、同じ手順を繰り返す為、マクロ化したいです。

  • Excel2000で、入力セルだけ列の範囲選択の仕方

    こんにちは!Excelの範囲選択で困っているので助けてください。実際にはマクロで範囲を選択したいと考えております。    A   B   C 1  ああ  いい  うう 2  かか  きき  くく 3  ささ  せせ  そそ 4  ちち  てて  たた … という表がある時に、B1のセルからB列の入力されているセルの一番下のセルまでを選択したい場合は どの様に範囲選択をかけると良いのでしょうか? たとえば、B1を選択してから、Ctrl+Shift+Endを押すと、B1からC4までとか最後のセルまで選択できるんですが、同じ列の最終入力セルまでを選択したいのです。B1からB4までって感じで。 よろしくお願いします。

  • セル範囲選択について

    エクセルのセル範囲選択ですが、[CTRL]+[SHIFT]+[↓] で連続データの末尾まで選択できますが、空白がある場合上手くいかないと思います。 空白も含めてデータの末尾まで一気に選択する方法はないでしょうか? 列を全て選択したり、マクロを使うなどの方法以外でお願いします。

  • エクセル/マクロ/セルの選択について(初心者です)

    最近マクロ機能を使い始めた初心者です。 マクロの記録を使い、ちょっとだけVBEで触っています。 以下のような場合、なんと記述すればよいでしょうか? 詳しい方にはとても簡単だと思われ、お恥ずかしいですが、 教えていただけましたら幸いです。 【実現したい内容】 あるセル範囲を指定している時に、実行すると、 指定していた範囲の行の、A列のみが選択される ※例えばB1:B3、またはC1:C3、またはD1:E3 のをセル範囲を選択している時に、マクロを実行すると いずれの場合もA1:A3を選択する。 表現が分かりにくいでしょうか…?

  • マクロを使って範囲選択したい

     エクセルのセルにランダムに入力されたデータについて、データが入力されたセル(データが入っていない空白部分も含めて)全てを範囲選択したいのですが、マクロを利用してできますでしょうか。  その後、コピーペーストする予定なのですが、シート全体を選択する方法は駄目です。あと、空白セルも存在するので、入力された1つのセルを選択して、ctrl+Shift+*も駄目です。  もともとのデータは、OCRソフトで読み込こんだデータをエクセルにしたものなので、基本ぐちゃぐちゃにデータが入力された状態になっています。  わかりずらい質問かもしれませんが、回答願います。

  • Excelマクロで印刷範囲の指定をしたい

    Excelで一覧表を作成し、 『印刷A3』と『印刷A4』というボタンを作り、 それぞれ印刷範囲が異なるようにマクロを組みたいと思い、『印刷A3』の場合は下記のマクロで問題ありませんでした。 【印刷A3】 ------------------------------------------------- Sub 印刷A3_Click() Worksheets(7).PageSetup.PrintArea = _ Range("A6").CurrentRegion.Address With Worksheets(7).PageSetup .Orientation = xlLandscape .PaperSize = xlPaperA3 .Zoom = 63 End With Worksheets(7).PrintOut Preview:=True End Sub ------------------------------------------------- セルA6以降の入力されているセルを選択できるのですが、『印刷A4』の場合は、列の範囲を23列までとし、23列目以降は印刷範囲外としたいです。 (列は最大で33列まであります) 行は『印刷A3』と同じように、入力されている全てのセルを範囲としたいです。 マクロ初心者のため、教えていただけると助かります。 よろしくお願い致します。

専門家に質問してみよう