[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『日付を検索して画面を指定位置に』(ともぞー)
教えていただけないでしょうか
マクロのボタンを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.