プロが教えるわが家の防犯対策術!

先日は有難うございます、お陰様で時短と簡略化出来ました
宜しければ、下記のマクロの簡略化をお願いします。

  Range("FR4").ClearContents
Range("C886:C1035").ClearContents
Range("FS1:FT2").Value = Range("FQ1:FR2").Value

Range("R5:R520").Value = Range("O5:O520").Value

Range("C886").Value = Range("R4").Value
Range("S5:S520").Value = Range("O5:O520").Value

Range("C887").Value = Range("S4").Value
Range("T5:T520").Value = Range("O5:O520").Value

Range("C888").Value = Range("T4").Value
Range("U5:U520").Value = Range("O5:O520").Value

上記("C886")から下記("C1034")までの処理を簡略化お願いします。
          
 Range("C1033").Value = Range("FI4").Value
Range("FJ5:FJ520").Value = Range("O5:O520").Value

Range("C1034").Value = Range("FJ4").Value
Range("FK5:FK520").Value = Range("O5:O520").Value

A 回答 (2件)

思いっきり簡略化。


初心者向けではありません。

Dim tmp As Variant  ' 縦横変換用の配列

Range("FR4").ClearContents
Range("C886:C1035").ClearContents
Range("FS1:FT2").Value = Range("FQ1:FR2").Value

Range("R5:R520").Value = Range("O5:O520").Value

' ここから
Range("O5:O520").Copy
Range("S5:FK5").PasteSpecial xlPasteValues
Application.CutCopyMode = False
tmp = Range("R4:FJ4").Value
Range("C886:C1034").Value = WorksheetFunction.Transpose(tmp)


初心者は 行列をループで。
最初は
1画面に収まるくらいのサンプルで結果が直観的にわかるようにして
行と列をカウントアップしながらセルへの代入を。

これがうまくいったら大きな本番用の表で。
    • good
    • 0
この回答へのお礼

安易な質問にもかかわらず、ご回答、ご指示有難うございます
初心者なもので上手く使えるか分かりませんが頑張って見ます
個人的なデータの作成に使わせていただきます。

お礼日時:2016/01/25 19:10

「VBAを簡略化したい」と言う質問が結構あります。


あなたがアマチュアなら、とことん納得して簡略化したら良いと思う。

業務の一環またはドップリで行なう(プロ)のだったらそういう事はしない方が良い。
簡略化で得るメリットは、ホンの微々たるプログラム実行時間とプログラム格納サイズの節約にしかならない。

デメリットはメンテ出来なくなる。
ここで聞いた結果を適用しても半年後、1年後、思い出してメンテ出来る? ましてや他の人に引き継いで、その人がメンテ出来る?。

情報処理分野のプロ集団(企業)ではメンテ性を第一に考える。
ベテラン、バリバリで、若手など多くの人が理解出来るレベルに留める。
そうしないとトリッキーなプログラムになってしまい、当事者だけで無く回りの人も後々メンテ出来なくなってしまう。
    • good
    • 0
この回答へのお礼

お忙しい中、安易な質問にお答えいただき有難うございます
年齢(61歳)のせいか、本を読んでもWEBで検索しても作成できず
安易な方法に走ってしまいました。もう一度頑張ってみます。

お礼日時:2016/01/25 13:58

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