[[20180805210204]] 『ドロダウンリストをVBAで行う際のセル範囲指定方磨x(S201710) ページの最後に飛ぶ

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

 

『ドロダウンリストをVBAで行う際のセル範囲指定方法について』(S201710)

エクセルにおけるドロダウンリストをVBAで行う際のセル範囲指定方法についての質問。

 流れ
?@大本の入力データを、別セル(列は同じで、行のみ移動した箇所)にコピー&貼りつけ。
?A貼りつけた箇所のデータ(セル範囲 

)を指定し、リスト化

※大本データは、横に羅列されていて、データ個数は変動する。
※データ個数は、ループでカウントし、その分をコピー&ペーストする。
※貼りつけしたセルの行数は変数に入れてあり、カウントしたデータの個数(列数)も変数に入れてある。

 上記流れを次のように書いてみた。

Sub makelist(ByVal row As Integer, ByVal column As Integer)

 Dim counter As Integer
 Dim j As Integer
 counter = 0
 j = 53

 Do While Cells(4, j) <> ""
 Cells(row, j) = Cells(6, j)
 j = j + 1
 Loop

 With Cells(row, column).Validation
 .Delete
 .Add _
 Type:=xlValidateList, _
 Formula1:=Range(Cells(row,53),Cells(row,j - 1)
 End With

 End Sub

しかし、『Range(Cells(row,53),Cells(row,j - 1)』の箇所が違うらしく、範囲指定ができない。

 何か解決策はありませんでしょうか。
 上記流れのような方法で解決する方法または、類似した方法への転換でも結構です。
ご回答の方、宜しくお願い致します。 

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


>Formula1:=Range(Cells(row,53),Cells(row,j - 1)
  ↓
Formula1:=Range(Cells(row,53),Cells(row,j - 1).Address

でしょうか

(マナ) 2018/08/05(日) 22:11


試してみたら駄目でした
こちらで出来ました。

Formula1:="=" & Range(Cells(row, 5), Cells(row, j - 1)).Address

(マナ) 2018/08/05(日) 22:19


試していたらマナさんの方が早かった。(丁度おなじところで引っかかってました)
以下、せっかくなので書きこんでおきます。

引数として渡されているrow、 columnが実際のところいくつなのかわかりませんので、
それぞれ1と仮定してですか、こんな感じでしょうか?

※ループ部分でなにをやりたいのかわからなかったので、最終列を求めたかったのではと推測して直してみました。

    Sub Sample()
        Dim c As Long
        Dim MyRNG As Range

        With ActiveSheet
            c = .Cells(1, .Columns.Count).End(xlToLeft).column
            If c < 53 Then Exit Sub
            Set MyRNG = .Range(.Cells(1, 53), .Cells(1, c))

            With .Cells(1, "A").Validation
                .Delete
                .Add Type:=xlValidateList, Formula1:="=" & MyRNG.Address
            End With

        End With

    End Sub
(もこな2) 2018/08/05(日) 22:47

皆さん、凄すぎます。本当、神です。本当にありがとうございます。本件で2時間ほど悩んで検索しまくっていたので、助かりました。また何かありましたら、質問させて下さい!
(S201710) 2018/08/05(日) 23:01

コメント返信:

[ 一覧(最新更新順) ]


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