[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ドロダウンリストを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 >
でしょうか
(マナ) 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
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.