[[20180215112325]] 『決まった位置を表示させるには』(マクロ初心者) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『決まった位置を表示させるには』(マクロ初心者)

前提として、3行目までを「ウィンドウ枠の固定」で固定しています。
そこで以下のマクロを作成しました。

Sub Macro1()
'
' Macro1 Macro
'

'

    Range("B6:F25").Select
    Selection.Copy
    Range("B328").Select
    ActiveSheet.Paste
    Range("B328").Select
    Range("B28:F47").Select
    Selection.Copy
    Range("B350").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Range("B328").Select
End Sub

これは、それぞれの範囲をコピーして貼り付けるものなのですが、
最終的に「Range("B328").Select」で、必ず上から6行目に配置させたいのです。
1〜3行目は固定、4行目と5行目はタイトル行にしています。
マクロを実行したときに、必ずB328が6行目に表示されるようにするには、
どのような修正を加えればよいでしょうか?
ご指導のほどよろしくお願いいたします。

< 使用 Excel:Excel2013、使用 OS:Windows7 >


(1)質問の意味がわかりません。
(2)COPYメソッドを実行する前に、selectする必要はありません。
とりあえず、
sub 修正案()
 Range("B6:F25").copy Range("B328")
   Range("B28:F47").copy  Range("B350")

   '↓COPYメソッドの引数に貼付先を与えた場合、コピーモードにならないので不要
   'Application.CutCopyMode = False

    Range("B328").Select
end sub

(2)に基づいて整理すると上記のようになります。
みればわかるとおり、最後にセル「B328」をselectせよ。という命令が記述されています。

ご質問では「必ずB328が6行目に表示されるようにする」とのことですが、なにをしたいのかわかりません。
コピー元と貼付先をどうしたいのか、または、最終的にどのセルを選択したいのか ということの御説明があれば、アドバイスできることがあるかもしれません。

(もこな2) 2018/02/15(木) 11:54


もこな2さん、ありがとうございます。
画面の表示上、以下のようになればと考えています。
4〜325行目までは、3行目をウィンドウ枠の固定で固定しているため、
マクロを実行した際は、以下のように画面上、表示させられればと考えています。
分からずらくて、すみません。

  1 ←固定
  2 ←固定
  3 ←固定
326 ←タイトル行
327 ←タイトル行
328 【Range("B328").Select】
(マクロ初心者) 2018/02/15(木) 12:09

やっぱりよくわからないですけどたぶん・・・・
誤 4〜325行目までは、3行目をウィンドウ枠の固定で固定しているため、
正 問題のシートは1〜3行目を「ウィンドウ枠の固定」の「先頭行固定」で常に表示されるようにしています。

で、
コピーマクロを実行したあとは、固定行の下に326行目がくるようにしたいんですけどどうしたらいいですか?

って質問じゃないでしょうか?
うまくいくかわからないですが、とりあえずこうしてみては?

〜(略)〜
 range("B4").select
 range("B326").select
end sub

ただ、いちいちSelectしなくてもコピーも貼付もできるわけですから、そこは悩むところではないんじゃないかなぁと思ったり・・・

(もこな2) 2018/02/15(木) 12:40


Sub test()
    Range("B6:F25").Copy Range("B328")
    Range("B28:F47").Copy Range("B350")
    Application.Goto Reference:=Range("B328"), Scroll:=True
End Sub

こういうことかな?
列の話がよくわからないけど左上がA328にしたければ、
そういう風に書いて下さい。

ヘルプからの一部抜粋〜〜

Excel 開発者用リファレンス

Application.Goto メソッド
任意のブック内の任意のセル範囲や Visual Basic のプロシージャを選択します。そのブックがアクティブでなければアクティブにします。

Scroll オプション バリアント型 (Variant) 移動先セル範囲の左上端がウィンドウの左上端に表示されるようにウィンドウをスクロールするには、True を指定します。ウィンドウをスクロールしないようにするには、False を指定します。既定値は False です。

備考
このメソッドは次の点で Select メソッドと異なります。

アクティブでないワークシートのセル範囲を指定すると、そのシートに切り替えてからセル範囲が選択されます (Select メソッドでは、最前面にないワークシートのセル範囲を対象としたとき、そのセル範囲は選択されますが、ワークシートはアクティブにはなりません)。
Goto メソッドには引数 Scroll があり、ウィンドウを自動的にスクロールできます。
(まっつわん) 2018/02/15(木) 13:49


もこな2さん、まっつわんさん、ありがとうございます。
説明不足で申し訳ありません。
以下のように発展させたいのです。

以下の基本となる7日分のデータがあります。
もちろん、曜日は月によって変わります。
1日(月) B6:F25,B28:F47
2日(火) B52:F71,B74:F93
3日(水) B98:F117,B120:F139
4日(木) B144:F163,B166:F185
5日(金) B190:F209,B212:F231
6日(土) B236:F255,B258:F277
7日(日) B282:F301,B304:F323

上記データを基に、その月内の同じ曜日にデータを一括で取り込むマクロを組めたらと思います。
1日は8日、2日は9日、3日は10日という具合に。
上記のように、データ枠は各20行、日付間は4行、同日間は2行空けていて、これを31日分まで枠を作っています。
当然、月によって日数も異なりますので、例えば、本年2月は28日までなので、29日から31日までの枠には、
データを取り込まないようなマクロを作れたらと思います。

もこな2さん、まっつわんさんにご指導いただいた内容から、上記のマクロを作れればと思います。
日付が月によって変動して日付のない枠にはデータを取り込まないという形が私にはどうにもできません。
何卒よろしくお願いいたします。
(マクロ初心者) 2018/02/15(木) 14:40


肝心なことを伝えてませんでした。すみません。
日付は以下のセルに入っています。
上から順に2行ずつが同じ日付です。
例えば、C4とC26は1日、C50とC72は2日というぐあいです。
C1246以下は月によって空白セルとなります。
どうぞよろしくお願いいたします。

C4
C26
C50
C72
C96
C118
C142
C164
C188
C210
C234
C256
C280
C302
C326
C348
C372
C394
C418
C440
C464
C486
C510
C532
C556
C578
C602
C624
C648
C670
C694
C716
C740
C762
C786
C808
C832
C854
C878
C900
C924
C946
C970
C992
C1016
C1038
C1062
C1084
C1108
C1130
C1154
C1176
C1200
C1222
C1246
C1268
C1292
C1314
C1338
C1360
C1384
C1406

(マクロ初心者) 2018/02/15(木) 22:55


[[20180216125441]]に移動
(マナ) 2018/02/17(土) 17:34

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.