実現したいこと
for文を入れて機能させたい
前提
初心者です。
見よう見まねで連動するドロップダウンを作っていたんですが
1行分なんとか正常に機能したので
それを一般化しようとFor文を入れたところメモリ不足でうまくいきません。
発生している問題・エラーメッセージ
メモリ不足
該当のソースコード
vba
1ソースコード 2Private Sub Worksheet_Change(ByVal Target As Range) 3Dim myRange1 As Range 4Dim rngSearch1 As Range 5Dim p As Long 6Dim strAdr1 As String 7Dim DicName2 As Variant 8Dim q As Long 9Dim LastRow2 As Long 10Dim GetName2 As String 11Dim ListName2 As String 12Dim z As Long 13 14With ActiveSheet 15 For z = 2 To 9 16 17 z = 2 18 19 If (Target.Column = 2) And (Target.Row = z) Then 20 21 Worksheets("1").Range("M2:M9").Value = "" 22 23 Set myRange1 = Worksheets("1").Range("B2:B9") 24 25 Set rngSearch1 = myRange1.Find(What:=.Cells(z, 2), LookIn:=xlValues) 26 27 Application.EnableEvents = False 28 29 If Not rngSearch1 Is Nothing Then 30 p = 2 31 32 Worksheets("1").Cells(p, 13).Value = Worksheets("1").Cells(rngSearch1.Row, 3).Value 33 34 strAdr1 = rngSearch1.Address 35 36 Do 37 Set rngSearch1 = myRange1.FindNext(rngSearch1) 38 If rngSearch1 Is Nothing Then 39 Exit Do 40 Else 41 If strAdr1 <> rngSearch1.Address Then 42 p = p + 1 43 Worksheets("1").Cells(p, 13).Value = Worksheets("1").Cells(rngSearch1.Row, 3).Value 44 45 End If 46 End If 47 48 Loop While rngSearch1.Address <> strAdr1 49 50 End If 51 52 53 Set DicName2 = CreateObject("Scripting.Dictionary") 54 55 LastRow2 = Worksheets("1").Cells(Rows.Count, 13).End(xlUp).Row 56 57 For q = 2 To LastRow2 58 59 GetName2 = Worksheets("1").Cells(q, 13).Value & "," 60 61 If Not DicName2.Exists(GetName2) Then 62 DicName2.Add GetName2, GetName2 63 ListName2 = ListName2 & GetName2 64 End If 65 66 Next q 67 68 With Cells(z, 4).Validation 69 .Delete 70 .Add _ 71 Type:=xlValidateList, _ 72 Formula1:=ListName2 73 End With 74 75 Set DicName2 = Nothing 76 77 78 Application.EnableEvents = True 79 80 End If 81 82 Next z 83 84End With 85 86End Sub 87 88
試したこと
上記は2つ目のドロップダウンを抜粋したもので、
実際には4連動で組んでいましたが、
zの部分を定数で作っていたときは正常に動いていました。
変数zを導入したら1つ目の連動でメモリ不足になりました。
Nothingで解放を試してみましたが効果なかったようです。
補足情報(FW/ツールのバージョンなど)
動くならM列を200ぐらい
zを2 to 400ぐらいで機能させたいです。
回答1件
あなたの回答
tips
プレビュー