質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

2回答

483閲覧

VBAを使用して、行の位置はそのままに指定した列へ移動したいです

YFukushima

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

1クリップ

投稿2020/06/23 05:32

前提・実現したいこと

行の位置はそのままに、指定した列へ移動したいです。

発生している問題

日付検索をかけると、1340行目にカーソルを合わせていても
6行目の日付のセルに移動してしまいます。

イメージ説明

該当のソースコード

Sub 日付検索Click()

Dim A As Range
Dim B As Range
Dim C As Range

Set A = Range("L6:MH1000").Find(what:=Range("E4").Value, SearchOrder:=xlByColumns)

If A Is Nothing Then

Else
Set B = A
Set C = A
End If

Do
Set A = Range("L6:MH1000").FindNext(A)
If A.Address = B.Address Then
Exit Do
Else
Set C = Union(C, A)
End If
Loop
C.Select

End Sub

試したこと

VBA初心者の為、Googleで検索したものをアレンジして書いています。

補足情報(FW/ツールのバージョンなど)

Win10、Excelは2005を利用しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

えっと、目的は「該当の日付の列を画面に見せる」でしょうか?

そうだとしたら、複数セルを一度に選択することは無意味ですかね?

Union関数は、セル範囲の和集合を返します。
今回の件は、Intersect関数を使い、
選択セルを含む行全体のセル範囲と見つけたセルの列全体のセル範囲の積集合を求めると
いいと思います。

あと、検索もとりあえず1個見つけたらいいと思うので、
ループする必要もなさそうです。

ExcelVBA

1Sub test() 2 Dim rngFound As Range 3 4 Set rngFound = Range("L6:MH6").Find(what:=Range("E4").Text) 5 If rngFound Is Nothing Then 6 MsgBox "見つかりませんでした。" 7 Exit Sub 8 End With 9 10 Intersect(Selection.EntireRow, rngFound.EntireColumn).Select 11End Sub

ただし、選択されているセルを基準にすると操作ミスで思い通りに動かない可能性がありますよね?
もう少し使う人が使いやすいように考える必要がありそうです。
そもそもセルを選択する必要があるのかも疑問です。

投稿2020/06/23 09:11

mattuwan

総合スコア2163

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YFukushima

2020/06/24 04:21

ご回答ありがとうございます! 目的は案件(行)はそのままに、該当の日付の列に画面をもっていくことです。 うまく説明ができず申し訳ないです… 確かにループする必要はありませんよね… コードも作成していただいてありがとうございます。 作成していただいたコードを参考に使いやすくできるように頑張ります!
guest

0

どうでしょうか。
'C.Select 'コメント
dim lCol as long
lCol = C.Column
Cells(1340, lcol).Select

投稿2020/06/23 07:05

tosi

総合スコア553

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YFukushima

2020/06/23 09:05

早速のご回答ありがとうございます! すみません、いただいた回答について質問なのですが、 Cells(1340, lcol).Selectの1340を”D”など変数宣言すれば他の行でも同じように適用できるでしょうか?
tosi

2020/06/23 23:41 編集

>”D”など変数宣言 dim D as long   'と言う感じですよね。 D=1340 Cells(D, lcol).Select 'となります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問