こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

excel vbaでリストの範囲設定

よろしくおねがいします。

Sub 科目自動入力()
Sheets("出納帳テンプレート").Select
Application.ScreenUpdating = False
'ww列最終行取得
Dim vv As Long
' Sheets("科目シート").Select
vv = Sheets("科目シート").Range("v" & Rows.Count).End(xlUp).Row

Sheets("出納帳テンプレート").Select

'B列最終行取得
Dim aa As Long

'式をフィルダウン
aa = Range("B" & Rows.Count).End(xlUp).Row
Range("H6").AutoFill Destination:=Range("H6:" & "H" & aa + 100), Type:=xlFillDefault

'開始行設定
Dim a As Integer
a = 6

kList = Worksheets("科目シート").Range("U2:V127")
'D列「月」欄が空白になるまで繰り返す

'一覧に空白が出るか、一致する項目があるまで繰り返す
Do Until Cells(a, 4).Value = ""

For i = 1 To UBound(kList)
If kList(i, 1) = "" Then Exit For '空白だったら抜ける

If Cells(a, 7) <> "" Then Exit For 'すでに科目が入力されていれば抜ける

If Cells(a, 4).Value Like "*" & kList(i, 1) & "*" Then
Cells(a, 7).Value = kList(i, 2)
Exit For
End If
Next i
a = a + 1
Loop
End sub

このようなマクロを組んでいてうまく動作しております。
科目シートにリストがあり
現在はリストをkList = Worksheets("科目シート").Range("U2:V127")
と範囲決め打ちしています。
これを範囲可変にしてみようと考えてみたのですが、
kList = Worksheets("科目シート").Range(Cells(2, "U"), Cells(vv, "V"))
としても実行時エラー 1004と出てうまくいきません。
ちなみに開始セルは「U2」で変わりません。
終点セルを変数vvで表現したいです。

どうかよろしくお願いします。

投稿日時 - 2017-10-07 14:30:38

QNo.9383114

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

kList = Worksheets("科目シート").Range(Cells(2, "U"), Cells(vv, "V"))
このときアクティブシートは出納帳テンプレート ですね
そのためにCellsは、出納帳テンプレートを参照するのでエラーが発生します
With Worksheets("科目シート")
  kList = .Range(.Cells(2, "U"), .Cells(vv, "V"))
End With
にすると良いでしょう
Range、Cellsが、どのシートを参照しているか考えてください。

投稿日時 - 2017-10-07 17:23:23

お礼

さっそくのご回答ありがとうございます

無事に解決いたしました。
別シートを参照させるための処理、勉強になりました
感謝です。

投稿日時 - 2017-10-07 19:28:44

あなたにオススメの質問