[[20170604095959]] 『ワークシート関数をVBAで記入した時の変数』(みるく) ページの最後に飛ぶ

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

 

『ワークシート関数をVBAで記入した時の変数』(みるく)

未だ変数が苦手でして質問させていただきます。
掲題にもあるように、ワークシート関数をVBAで記入した際
=シート名!BR3 BS3 BT3 …

と記入出来る様にマクロを設定したいのですが
下記式のBR3から列の変数をご教示戴ければと思います。

どうぞ宜しくお願い致します。

For i = 30 To 54

 Range(Cells(i, 4), Cells(i, 9)).Select
 ActiveCell.Formula = "=[○.xlsm]△!BR3"

Next

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


最終的に式を入力したい範囲は、どこですか?

(マナ) 2017/06/04(日) 10:13


マナさん早速の返信ありがとうございます。

.Formula = "=[○.xlsm]△!BR3

BR3 の部分を

= "=[○.xlsm]△!BR3"
= "=[○.xlsm]△!BS3"
= "=[○.xlsm]△!BT3"

と行の3は変わらず、列の部分を変数に出来たらと思っております。
一番最後の部分はIJ3までです。

(みるく) 2017/06/04(日) 10:16


この4セルには、どんな式が入りますか?
D40:=[○.xlsm]△!BR3
E40:
D41:
E41:
(マナ) 2017/06/04(日) 10:20

仰ってる事と違うかも知れませんが

D40:=[○.xlsm]△!BR3
E40:=[○.xlsm]△!BS3
D41:=[○.xlsm]△!BR4
E41:=[○.xlsm]△!BS4

 n = 3
For i = 30 To 54 
 Range(Cells(i, 4), Cells(i, 9)).Select
 ActiveCell.Formula = "[○.xlsm]△!BR" & n & ""

 n + 1

Next

上記のような形でD40,D41,D42…

と入るかと思うのですが

BRの部分をBS BT BU … II IJ

と進める術が分からない状態です…
(みるく) 2017/06/04(日) 10:33


入れたい式は理解できました。
その式を、どのセルから、どのセルまで入れたいのですか?

>最終的に式を入力したい範囲は、どこですか?

(マナ) 2017/06/04(日) 10:41


実は表に式を可変で入れていきたく
最初はD列の式を質問させて戴きました。

     D      J      V      W      X      Y     Z

30 BR3 CQ3 DP3 EO3 FN3 GM3 HL3

31 BS3 CR3 DQ3 EP3 FO3 GN3 HM3

32 BT3 CS3 DR3 EQ3 FP3 GO3 HN3

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

44 CO3 DN3 EM3 FL3 GK3 HJ3 II3

45 CP3 DO3 EN3 FM3 GL3 HK3 IJ3

この様な式を簡易的に書ければ良いのですが
まだVBA自体を始めたばかりで
D〜Zまで7つの式を入れていこうかと思っておりました。
何か良い案があればご教示願います。

(みるく) 2017/06/04(日) 11:04


ということは、E〜I列には、式が入らなくてよいのですね。

(マナ) 2017/06/04(日) 11:33


D〜I列とJ〜U列が結合セルになっており
省いておりました
(みるく) 2017/06/04(日) 11:38

どういうのがわかりやすいか迷いましたが

 Option Explicit

 Sub test()
    Dim i As Long, j As Long
    Dim gyo As Long, retu As Long

    retu = Columns("BR").Column
    For j = Columns("D").Column To Columns("Z").Column Step 6
        gyo = 3
        For i = 30 To 54
            Cells(i, j).FormulaR1C1 = "=[○.xlsm]△!R" & gyo & "C" & retu
            gyo = gyo + 1
            retu = retu + 1
        Next
    Next

 End Sub

(マナ) 2017/06/04(日) 12:19


たびたびの質問申し訳ございません。
先程、ご教示戴きましたコードを入れステップインにて確認しておるのですが

     D-I      J-U      V        W      X      Y     Z
30   $BR$3    $CQ$3    $EO$3 
31   $BS$4    $CR$4    $EP$4
32   $BT$5    $CS$5    $EQ$5
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
44   $CO$26   $DN$26   $FL$26
45   $CP$27   $DO$27   $FM$27

1点目は
上記の様に 列行共に、増えていってしまってるのですが
行のみ3で固定する方法というのはどのようにしたら良いでしょうか。

2点目は
コードを最後まで稼動させると
本来V列に入る、DP3 DQ3... EN3までが入らずW列の番地がずれてしまい
その後 V列(式的にはW列)で止まってしまいWXYZ列が未記入の状態です。

大変お手数お掛けいたしますが
こちらもご教示願えればと思います。

(みるく) 2017/06/04(日) 13:17


あら、全然だめでしたね

 Option Explicit

 Sub test2()
    Dim i As Long, col
    Dim retu As Long

    retu = Columns("BR").Column
    For Each col In Array("J", "V", "W", "X", "Y", "Z")
        For i = 30 To 54
            Cells(i, col).FormulaR1C1 = "=[○.xlsm]△!R3C" & retu
            retu = retu + 1
        Next
    Next

 End Sub

(マナ) 2017/06/04(日) 13:44


お早い返信ありがとうございます!
無事解決いたしました。

マナさんには大変お手数お掛けして申し訳ございませんでした。

二回目に戴いたコードを使ってみて一列のモノを自分なりに作成する事は出来ましたので
非常に勉強になっております。

また最後に戴いたコードを調べて勉強させていただきます。

本当に有難うございました。
(みるく) 2017/06/04(日) 13:56


本題とは別のことですが。

プログラムを書く際にはインデントを付けよう
https://note.chiebukuro.yahoo.co.jp/detail/n2870

(マナ) 2017/06/04(日) 14:25


コメント返信:

[ 一覧(最新更新順) ]


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