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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

VBA

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

Q&A

2回答

1846閲覧

vbaのSmallScrolのセル範囲指定方法を確認させてください

eri_3100

総合スコア31

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

VBA

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

0グッド

0クリップ

投稿2019/02/01 06:24

下記のコードで
ActiveWindow.SmallScroll ToRight:=-11 にかかるセルの移動について質問です。
このコードはSmallScrollメソッドを使用していますが、ToRight:=-11 とはセルを右に11移動する、という意味で大丈夫でしょうか?

またこのコードの絶対位置はRange("B11:O54").Selectになると思うのですが、これはどのシートのセルを対象としているのでしょうか?
ActiveWindowなのはわかっているのですが、Activewindowについて調べたところ、全面にあるシート、という意味ばかりでよくわかりません。

恐れ入りますが、どうぞよろしくお願いいたします。

vba

1 sort1Ref() 2 Range("B11:O54").Select 3 ActiveWindow.SmallScroll ToRight:=-11 4 Selection.SortSpecial SortMethod:=xlSyllabary, Key1:=Range("B11"), _

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

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

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

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

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

guest

回答2

0

このコードはSmallScrollメソッドを使用していますが、ToRight:=-11 とはセルを右に11移動する、という意味で大丈夫でしょうか?

違います。
11列分左方向を見に行くという意味になります。(値がマイナスになっているので。)
選択しているセルを右に移動したとか左に移動したではなく、
スクロールバーで見るセル範囲を移動したとかそういう感じです。
(マクロの記録とか確認してないので、SmallScrollメソッドを使うと、
どういう動作になるかわかってません^^;)
ただし、A列が見えているとそれより左の列は存在しませんので、
なんの動きもしませんが。。。。

またこのコードの絶対位置はRange("B11:O54").Selectになると思うのですが、これはどのシートのセルを対象としているのでしょうか?

Rangeプロパティは、親オブジェクト(つまりどのシートか)を記述しないで省略すると、
「アクティブなシートだろう」とエクセル君は勝手に解釈します。

なので、「Sheet2」シートのセルを指定したいときは、
Worksheets("Sheet2").range("B11:O54")
と、記述すべきです。
ただし、「Sheet2」シートがアクティブになってないと、
Worksheets("Sheet2").range("B11:O54").Select
と命令しても、エラーになります。
選択してないシートのセルは、選択できないので。
(手動の時は、必ず、シートを選択してから、セルを選択してるので気づきにくいです)

それから、見えているセル範囲は、
ActiveWindow.VisibleRange
で、取得します。

あと、

またこのコードの絶対位置はRange("B11:O54").Selectになると思うのですが

絶対位置とはなんでしょ?

選択しているセル範囲と、
ウィンドウ内で見えているセル範囲は別物です。

Selection.SortSpecial SortMethod:=xlSyllabary, Key1:=Range("B11")

↑のコードでは、
Selectionが、
「選択しているもの」という意味なので、
先ほど選択したセル範囲が操作対象になってます。
(ちなみに、選択しなくても操作したいセル範囲は指定できます。)

マニュアルがあるのですね!見てみるとかなりわかりやすかったので、次回から参考にいたします!

ホントに解りやすかったですか?
ヘルプは初心者用に書かれた物ではないので、初心者には難解な場合が多いです。
命令の使い方は解るかも知れませんが、書かれている意味は分かる人にしかわからないと思います。
(実際、よくわかんなかった^^;まぁ、動かしてみたり、マクロの記録をしてみたりしたら、
分かるんでしょうが。)

投稿2019/02/07 12:48

mattuwan

総合スコア2136

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

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

0

ActiveWindow.SmallScroll ToRight:=-11 にかかるセルの移動について質問です。
このコードはSmallScrollメソッドを使用していますが、ToRight:=-11 とはセルを右に11移動する、という意味で大丈夫でしょうか?

いえ、違います。
マニュアルを見ましょう。
https://docs.microsoft.com/ja-jp/office/vba/api/excel.window.smallscroll

文字列を右にスクロールする列数。

です。
あくまでもスクロールなので選択しているセル位置が変わるわけではありません。
またマイナス値を指定しているので、左にスクロールします。

またこのコードの絶対位置はRange("B11:O54").Selectになると思うのですが、これはどのシートのセルを対象としているのでしょうか?
ActiveWindowなのはわかっているのですが、Activewindowについて調べたところ、全面にあるシート、という意味ばかりでよくわかりません。

ActiveWindowではなくActiveSheetになると思います。
Excelが開いているシートで操作対象になっているシートです。

投稿2019/02/01 06:42

ttyp03

総合スコア16998

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

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

eri_3100

2019/02/01 06:56

ありがとうございます。 マニュアルがあるのですね!見てみるとかなりわかりやすかったので、次回から参考にいたします! >あくまでもスクロールなので選択しているセル位置が変わるわけではありません。 またマイナス値を指定しているので、左にスクロールします。 こちらですが、位置がかわるわけではない、というのはどのような感じなのでしょうか。通常右スクロールであれば、なんとなくセルが増えていくような意味かなと思うのですが、左なのですよね。
ttyp03

2019/02/01 07:02

カーソル位置は変わりませんってことです。 例えばC1にカーソルがあって、左に1スクロールしても、カーソル位置はC1のままってことです。 B1に移動するわけではありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問