|
▼ひかる さん:
>▼kanabun さん:
>返事が遅くなりすみません。
>貴重なご意見をありがとうございました。
>さっそくコードを入力してやってみたのですが、
>次の矢印を入れているところで、実行時エラー91”オブジェクト変数またはwithブロック変数が設定されていません”と出るのですが、解決方法をお教えください。
そのまえの
> Set rr = Worksheets("Sheet1").Range("A1").CurrentRegion
が、うまく動いているか確認してみてください。
手動で、
Sheet1 の[A1]をアクティブにして Ctrl+Shift+[*]を実行してみてください。
どの範囲が選択されますか?
想定した元表の範囲が選択されましたか?
あるいは コードにデバッグ行を挿入して 確認してください。
>
> Dim rr As Range
> Dim MonData, RoomData, dat, ss As String
> Dim j As Long, n As Long, m As Long
>
> Set rr = Worksheets("Sheet1").Range("A1").CurrentRegion.Resize(, 5)
'↑ この行を ↓のように 変更
With Worksheets("Sheet1")
.Activate '◆デバッグ用追加
Set rr = .Range("A1").CurrentRegion.Resize(, 5)
rr.Select '←↓◆◆デバッグ用追加
If MsgBox("この範囲が元データ範囲ですか? " & _
rr.Address(0, 0), vbOKCancel) = vbCancel Then Exit Sub
End With
> Set rr = Intersect(rr, rr.Offset(1, 1))
'ここに↓ 追加
If rr is Nothing then
msgbox "範囲が不正です データ範囲が取得できません"
exit sub
End If
rr.Select '←↓◆◆デバッグ用追加
If MsgBox("この範囲が正味データ範囲ですか? " & _
rr.Address(0, 0), vbOKCancel) = vbCancel Then Exit Sub
>⇒ MonData = rr.Resize(, 1).Offset(, -1).Value
> RoomData = rr.Resize(1).Offset(-1).Value
> For i = 1 To UBound(MonData, 1)
> dat = MonData(i, 1)
> If IsDate(dat) Then
> ss = Month(dat) & "月"
> If dic.Exists(ss) Then
> m = dic(ss) '何列目か
> For j = 1 To UBound(RoomData, 2)
> ss = RoomData(1, j)
> If dic.Exists(ss) Then
> n = dic(ss) '何行目か
> '------tblのn行,m列目の要素に 数量を累加 -----
> tbl(n, m) = tbl(n, m) + rr(i, j).Value
> End If
> Next
> End If
> End If
> Next
>
> '---- 配列に集計した結果を表に書き出す ------
> r.Value = tbl
|
|