dポイントプレゼントキャンペーン実施中!

マクロ勉強中の初心者です。度々質問させていただいてます。

下記はあるマクロの抜粋なのですが、何をしているのか、何を表しているのかがわかりません。
一応途中までは自分なりに解釈してみたのですが、この部分は解読不能でした。どうかお力をお貸しください。

  Dim a As Integer
  a = Range("A65536").End(xlUp).Row
ActiveWindow.SmallScroll Down:=-18
Columns("A:A").Select
Range("A" & a).Activate
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWindow.SmallScroll Down:=-12

A 回答 (4件)

Dim a As Integer


  変数「a」を整数型で使用すると宣言。
  しかし、これは×です。Integerは、-32768~32767 の範囲しか
  扱えませんので、次の行の結果によってはエラーになります。
  Integer → Long を使いましょう。

a = Range("A65536").End(xlUp).Row
  変数「a」にA列の最終行を入れる
  (最終行が32767以上だと、Integerの場合×)

ActiveWindow.SmallScroll Down:=-18
  アクティブな画面で18行上にスクロール
  マクロ記録した時の残痕でしょう

Columns("A:A").Select
  A列を選択

Range("A" & a).Activate
  A列の最終列をアクティブに(目的不明)

Application.CutCopyMode = False
  直前にコピーや切取り操作をやっていた場合に消しまず

Selection.Copy
  選択範囲(この場合A列)をコピー

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
  「形式を選択して貼り付け」
  値のみ、演算なし、空白無視しない、行列入れ替えない

ActiveWindow.SmallScroll Down:=-12
  アクティブな画面で12行上にスクロール(これも残痕かな)

要するに、A列をコピーして値だけを貼り付けなおしているだけですね。
A列の最終行を求めた真意は不明ですが、この後の処理で使っているのかもしれませんね。
    • good
    • 0
この回答へのお礼

丁寧な回答ありがとうございます!
とても勉強になります。
どこで区切るかの一例がわかったので、これからは自力で調べることもできそうです。
本当にありがとうございます!!

お礼日時:2008/10/09 16:23

ANo3です。

一部間違えてました。

Columns("A:A").Select
A列を選択

Range("A" & a).Activate
a=1だったので、つまりはA1セルにアクティブセル移動。

でした。A列は選択状態のママですので、A列全体をコピー、値のみペーストですね。
ただ、切り取りではなくコピーしてますので、やっぱり何も見かけ上の変化はないです。切り取りしない限り、値以外のセルの属性は残ってますから、その上に値のみ貼り付けしても、変化はありません。


やっぱりゴミですね。
    • good
    • 0
この回答へのお礼

ありがとうございます!

確かマクロの記録で作ったものだと記憶しているので、その名残みたいです。
マクロの意味がわからなかったのでとても難しそうに見えたのですが、実際にやっている動作が簡単でびっくりしました。

お礼日時:2008/10/09 17:14

Dim a As Integer


aが整数型である宣言

a = Range("A65536").End(xlUp).Row
A65536の一番上段行の行番号をaに代入。必ず1なのでa=1とまったく同意。はっきりいって意味不明。

ActiveWindow.SmallScroll Down:=-18
アクティブウィンドウを18行分上にスクロール。

Columns("A:A").Select
A列を選択

Range("A" & a).Activate
a=1だったので、つまりはA1セルにカーソル移動。結局直前のA列選択はまったく意味なし。

Application.CutCopyMode = False
切り取りモードまたはコピーモードを解除。でもまだ切り取りもコピーもしてない状態なのでまったく意味なし。

Selection.Copy
選択セル(A1)をコピー。

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
形式を選択して貼り付けで値のみペースト。でもセルはA1選択状態なのでやっぱり意味なし。

ActiveWindow.SmallScroll Down:=-12
アクティブウィンドウを12行分上にスクロール。



したがって、全部ゴミです。
A1セルをコピーしてA1セルにペースト。
まったく意味のない動作ですww
    • good
    • 0

記録マクロを手直ししたような感じですが、不要なコードが多いですね。


A列をコピーして、”値貼り付け”かと思います。


Columns("A:A").Copy
Columns("A:A").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
    • good
    • 0
この回答へのお礼

なるほど!!!
確かにそのような作業をした気がします!

めちゃくちゃスッキリしました☆
ありがとうございます。

お礼日時:2008/10/09 16:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!