[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『日付を検索して画面を指定位置に』(ともぞー)
教えていただけないでしょうか
マクロのボタンをAシートに設置しシートBに日付が入力されています
日付の入力されているセルはA1に8月1日 A39に8月2日 A77に8月3日
A115に8月4日 A153に8月5日 A191に8月6日省略してすみませんA1141に8月31日この様な規則性で日付が入力されています。
例えば本日が8月6日(A191)の時Aシートのボタンを押すとBシートのA列の日付を検索してその8月6日のA191のセルに合わせてA191のセルが必ず左上に画面を
表示したいのですが方法教えてもらえませんか
説明にはありませんが8月28日でしたらA1027のセルが画面の左上になります。
説明がわかりにくかったらすみません
この様な動作を行いたいのですがよろしくお願いいたします。
< 使用 Excel:Excel2010、使用 OS:Windows10 >
>動作が不安定なので
そうなんですか?
規則性があるなら、私もこれでいいと思うのですが・・
Application.Goto Worksheets("B").Cells(38 * (Day(Date) - 1) + 1, 1), True
(半平太) 2022/08/28(日) 23:20
Option Explicit Sub myjmp() Dim t#, x t = Date With Worksheets("B") .Activate x = Application.Match(t, Intersect(.UsedRange, .Columns(1))) If Not IsError(x) Then .Cells(x, 1).Select With ActiveWindow .ScrollRow = x .ScrollColumn = 1 End With End If End With End Sub (隠居Z) 2022/08/29(月) 07:33
おはようございます
(隠居Z)さま 私...1回だけ遭遇したことあります。
↓その時は、この記事を知らない時で… 今のって何?って感じだったんですけど https://excel-ubara.com/excelvba4/EXCEL272.html
二つ並行しての Timer関係の処理で、何かをした時だった 記憶があります。はっきり覚えてませんが...Excel 強制終了されました ( ;∀;)
(あみな) 2022/08/29(月) 10:17
(ともぞー) 2022/08/30(火) 04:31
(ともぞー) 2022/08/30(火) 11:41
ちょっと、やりたい事が不明瞭ですよ。
今日が、未だ来てない日である訳はないですよね?
以前の話と何が変わったのですか?
1.飛びたいところが、今日とは限らなくなったと言う事なんですか? それなら、いつの日にしたくなったのか、何を見ると分かるんですか?
2.日付のある行位置がでたらめになったと言う事なんですか?
3.位置は正しいが、日付がチャンと入力されていない場合があると言う事なんですか?
(半平太) 2022/08/30(火) 12:43
>A77の本来1日になるセルの位置に強制的にしたいです
そこが少し解からないです。当初は、以下の説明でした。(A77は3日目じゃないですか?) ↓ >日付の入力されているセルはA1に8月1日 A39に8月2日 A77に8月3日
(半平太) 2022/08/30(火) 13:46
Sub Sample() '日付は仮にAシートのA1セルに日付シリアル値があるものとします。 Dim buf buf = Application.Match(Worksheets("A").Range("A1").Value2, Worksheets("B").Range("A:A"), 0) If IsError(buf) Then MsgBox "Error" buf = 77 End If Application.Goto Worksheets("B").Cells(buf, 1), True End Sub
練習課題のつもりでマクロを作ってみました。
シートBのA列に同一の日付が見当たらないときはシートBのA77の位置になります。
(下手の横好き) 2022/08/30(火) 13:57
表示位置が正しいなら、日付を探すまでもないので、
Sub ボタン1_Click() Dim Destination As Range
With Worksheets("B") Set Destination = .Cells(38 * (Day(Date)) - 37, 1)
If Destination.Value2 <> CLng(Date) Then MsgBox "本日の日付が見当たりません" Set Destination = .Range("A1") End If
End With
Application.Goto Destination, True End Sub
(半平太) 2022/08/30(火) 14:53
>この部分を(Day(Date) - 2)すれば出来た
今日が月初(1)だったら、2を引くとマイナスとなり、エラーですけど?
そちらの本当のレイアウトを説明して頂けませんか? (先のA77の行き違いとも関連しそうな気がしていますが・・)
(半平太) 2022/08/30(火) 15:32
(ともぞー) 2022/08/30(火) 15:48
>Application.Goto Worksheets("B").Cells(38 * (Day(Date) - 1) + 1, 1), True >この部分を(Day(Date) - 2)すれば問題なく30日ですが29日のセルに来ています
おかしいですねぇ・・
30日なら1103 31日なら1141 ↑ ↑ 38x(30-1)+1 38x(31-1)
>A191に8月6日省略してすみませんA1141に8月31日 この説明とチャンと付合しますけど。
もう、あれこれチェックするのは止めます。 下手の横好きさんの案を使ってください。
Sub ボタン1_Click() Dim buf
buf = Application.Match(CLng(Date), Worksheets("B").Range("A:A"), 0)
If IsError(buf) Then MsgBox "本日の日付が見当たりません" buf = 1 End If
Application.Goto Worksheets("B").Cells(buf, 1), True End Sub
(半平太) 2022/08/30(火) 16:06
横からで...すいません
うち、ちゃんと...(半平太)さんので
8月30日なら 1103 行目に 8月31日なら 1141 行目に
来ますけど。。。
Sub Sample()
Dim Rng As Range Dim KeyDate As String Dim ws(1 To 2) As Worksheet Set ws(1) = Sheets(1): Set ws(2) = Sheets(2) KeyDate = Format(ws(1).Range("A1"), "m月d日") '' KeyDate = Format(ws(1).Range("A1"), "yyyy/m/d")
MsgBox KeyDate With ws(2).Range("A:A") Set Rng = .Find(what:=KeyDate, LookIn:=xlValues) If Not Rng Is Nothing Then Debug.Print Rng.Row Application.Goto ws(2).Cells(38 * (Day(KeyDate) - 1) + 1, 1), True Else MsgBox "日付が見つかりません" Application.Goto ws(2).Range("A1") End If End With
End Sub
(あみな) 2022/08/30(火) 17:55
buf = Application.Match(CLng(Date) - 1, Worksheets("B").Range("A:A"), 0 ~↑~ ここで1を引く
(半平太) 2022/08/30(火) 19:42
(ともぞー) 2022/08/30(火) 21:20
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.