教えて!gooグレードポイントがdポイントに!

マクロ初心者です。

下記のマクロを実行するためにはどうしたらいいでしょうか。
--------------------------
A B C D E F G
1 2 2 3 4 4 5
1 
1
1
1

▼▼▼▼▼▼▼▼▼▼▼▼
A B C D E F G
1 2 2 3 4 4 5
1 2 2 3 4 4 5
1 2 2 3 4 4 5
1 2 2 3 4 4 5
1 2 2 3 4 4 5
--------------------------
今躓いている現状
A B C D E F G
1 2 2 3 4 4 5
1 2 2 3 4 4 5
1 2 2 3 4 4 5
1 2 2 3 4 4 5
  2 2 3 4 4 5
  2 2 3 4 4 5
  2 2 3 4 4 5
  2 2 3 4 4 5
  ・ ・ ・ ・ ・ ・
  ・ ・ ・ ・ ・ ・
  ・ ・ ・ ・ ・ ・
--------------------------


行に関してはその時々によって変わります。
よろしくお願いいたします。

質問者からの補足コメント

  • 分かりずらくてすみません、
    要はA列の最終行までB〜Gもコピーしたいんです。
    ただ、現状手探りでやってると下の方まで無限にコピーされてしまうのでどうすればいいのかなと思い質問させていただきました。。

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/06/18 16:05
  • 追記します。もしくは
    A列に何かしら記入されていたらB〜Gに決まった言葉を記入する
    みたいなことでもいいのですが可能でしょうか?

      補足日時:2017/06/18 17:33
教えて!goo グレード

A 回答 (7件)

お礼を見て:



>ちなみにコレをB~Gでそれぞれ言葉を変えたいときはどこを変更すれば良いでしょうか?

全ては書いてませんけど。

Sub try()
Dim r As Range

Set r = Range("A2", Cells(Rows.Count, 1).End(xlUp))

' Offset(行,列)で書き込みたい所を決めます。
' 行に変更はないのでOffset(,列)と行を省略できます。
' ただし列毎に代入したい値が変わるので、列数分書かないと
' なりませんけどね

' 例えばB列の場合Offset(,1) A列から見て右に+1 となり

r.Offset(, 1).Value = "あああ"

' G列の場合 A列から見て右に+6 となり

r.Offset(, 6).Value = "かかか"

' と、Offsetの列数を変更する事で書き込みたい位置を変えます
' ちなみに0だと同じ列。-1だと左に変わっていきます。
' 今回はA列を基準にしてますのでマイナスはアウトですけど。
' 行はプラスが下方向、0は同じ行、マイナスは上方向です。

Set r = Nothing

End Sub

こんな感じになりますかね。
    • good
    • 0

No2です。


>あと回答ではないですが、No2さんの変数宣言の方法はVB(.NET)ならともかく、VBAでは適切ではないですね。
>変数1つ1つに明確に型を宣言しないとVariantになってしまい、場合によっては混乱の元になる事も。
貴重なご指摘ありがとうございました。
dim a,b as longは
両方とも longになると思っていました。
たしかに TypeNameで確認すると aはVriantになってますね。
ベストアンサーはNo5の方へ。
    • good
    • 0

あと回答ではないですが、No2さんの変数宣言の方法はVB(.NET)ならともかく、VBAでは適切ではないですね。


変数1つ1つに明確に型を宣言しないとVariantになってしまい、場合によっては混乱の元になる事も。
明確な型の宣言を必要とするか否かをきちんと判断してコードは作った方が良いと、10年ほど前に教わりました。
    • good
    • 1

>A列に何かしら記入されていたらB〜Gに決まった言葉を記入する



Range("B2", Cells(Rows.Count, 1).End(xlUp).Offset(, 6)).Value ="お元気?"

とか?
    • good
    • 3
この回答へのお礼

めぐみんさん

ありがとうございます!
できました!
ちなみにコレをB~Gでそれぞれ言葉を変えたいときはどこを変更すれば良いでしょうか?

お礼日時:2017/06/18 23:25

>分かりずらくてすみません、


>要はA列の最終行までB〜Gもコピーしたいんです。

はい、そのように書いているつもりですよ。
1行で十分出来てますけど?

ただし必ずB1~G1には何か値があるとした場合です。
でなきゃ、コピー元がないですしね。
    • good
    • 1

こうゆうことですか?



Public Sub 最後までコピー()
Dim row, maxrow As Long
maxrow = Cells(Rows.Count, "A").End(xlUp).row
For row = 2 To maxrow
Range("A" & row & ":G" & row).Value = Range("A1:G1").Value
Next
End Sub
    • good
    • 1
この回答へのお礼

ありがとう

すごい!ありがとうございます。
ほぼほぼ出来たのですが、出来ればA列は
全てが1とも限らないのでA列以外をコピーして頂きたいです。

お手数お掛け致しますがご協力お願い致します!

お礼日時:2017/06/18 16:19

良くわかんないけど、A列の終りまでに1行目のB~G列をコピーって



Range("B1:G1").Copy Range("B2", Cells(Rows.Count, 1).End(xlUp).Offset(, 6))

こうゆう事?
この回答への補足あり
    • good
    • 1

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

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング