[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ActiveWindow.SmallScrollについて』(会社員)
普段使用しているマクロの改修を行うことになったのですが
お恥ずかしながら独学の初心者のため
こちらでご質問させてください。
<改修前のコード>
Sub test()
Columns("A:D").Select Selection.Delete Shift:=xlToLeft Columns("C:C").Select Selection.Delete Shift:=xlToLeft Columns("E:P").Select Selection.Delete Shift:=xlToLeft Range("L19").Select ActiveWindow.SmallScroll Down:=-6 Columns("B:O").Select Columns("B:O").EntireColumn.AutoFit Rows("2:2").Select ActiveWindow.FreezePanes = True ActiveWindow.SmallScroll Down:=-27 Rows("1:1").Select Selection.AutoFilter Range("A2").Select End Sub
<改修後のコード(予定)>
Sub test()
Columns("A:D").Delete Columns("C").Delete Columns("E:P").Delete Columns("B:O").EntireColumn.AutoFit Rows("2:2").Select ActiveWindow.FreezePanes = True Rows("1:1").AutoFilter Range("A2").Select End Sub
・このマクロを使って別ファイルのCSVを編集しています。
・編集するCSVファイルのデータはA1:AG500までデータが入っています。(ところどころ空白有)
質問?@
改修前コードに記載されている「ActiveWindow.SmallScroll Down:=●」が分からずネットで調べると、
ウインドウの文字列を下へ●行スクロールする、という意味でした。
この改修前コードの場合、「ウインドウの文字列を下へ-6行(マイナスだから上へ6行?)スクロール」
という意味なのでしょうか…
質問?A
?@に関係している内容ですが、選択している「Range("L19")」には
この体制調整マクロにおいて起点となる重要なデータは入っていません。
(ファイルは毎週更新するためL19の中身は可変します。)
例えると、下記表の「いちご(B5)」を選択しているようなものです。
表?@ 名前 数量
1 りんご 5個
2 みかん 10個
3 ばなな 3個
4 いちご 7個
5 ばなな 9個
前後のコード等を見ても、この部分を起点に何か行っているような描写はないし
不要と考え「ActiveWindow.SmallScroll Down」と一緒にコードを削除するつもりですが、
大丈夫そうでしょうか
(私が気づいていないだけで、これを削除することによって他コードへの影響ってあったりするのでしょうか。)
伝わりにくかったらすみません、どなたか分かる方よろしくお願いいたします。
< 使用 Excel:Microsoft365、使用 OS:Windows10 >
(名無し) 2023/06/06(火) 14:15:09
(名無し) 2023/06/06(火) 14:22:55
これって、どういう意味でしょうか?
もう少し分かりやすく説明していただけないでしょうか
(会社員) 2023/06/06(火) 15:15:36
Columns("A:D").Delete Columns("C").Delete Columns("E:P").Delete の部分が全てのファイルに対して有効なのか、 マクロを記録したファイルに対してだけ有効なのかが分からないので 安易に「削除していい」とか「こうしたらいい」とは言えない、という意味だと思いますよ。 ( 'ふ') 2023/06/07(水) 09:55:14
■1
>改修前コードに記載されている「ActiveWindow.SmallScroll Down:=●」が分からずネットで調べると〜
調べてわかったと思いますが、【マクロの記録】のときに画面をスクロールしたものがコード化されたものであって運用時には必要ありません。(削除してOKです)
■2
【マクロの記録】ではそのまま記録されますが、VBAの世界では基本的にシートやセル(オブジェクトといいます)をきちんと明示すれば、いちいちアクティブにしたり選択したりする必要はありません。
一方で、【標準モジュール】でシートの指定をしない場合ActiveSheetを指定したとみなされるルールです。
よって、必須ではありませんが、対象のオブジェクトを指定する書き方に慣れておいた方がよいと思います。
■3
上記で基本的には〜と書きましたが、ウィンドウ枠の固定をする場合は、例外的に対象のセルをアクティブ(選択)する必要があります。
【参考】 https://excel-ubara.com/excelvba1/EXCELVBA370.html
■4
ということを踏まえると↓のように整理すればOKかと思います。
Sub test改() With ActiveSheet Range("A:D,G:G,J:U").Delete .Columns("B:O").AutoFit
.Rows("2:2").Select ActiveWindow.FreezePanes = True
.Rows("1:1").AutoFilter .Range("A2").Select End With End Sub
■5
なお、【別ファイルのCSV】とのことですが、そもそもCSVはエクセルブックの一種ではなくテキストファイルです。
少し難しくはなりますが、データ取り込み時に不要な列は除外するという制御も可能です。
最近[[20230603073422]]で話題に上がりましたので興味があれば読んでみてください。
(もこな2 ) 2023/06/07(水) 12:10:44
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.