マクロちゃんねる様。いつも勉強させていただいきありがとうございます。"工事"シートのA列に工事名、B列に日数を入れています。 工程表に工事名を入れたら、その下にその日数分のセルの背景色を塗るVBAをVLookupを使って作りましたが、ダメでした😓 Sub baa() Dim r As Range, v , n as Long set r =Range("D4:T19")'←工程表 For Each v In r If v . value〈〉" " then v. offset(1 , n). interior .color= RGB(255,0,0) end if next v end sub ' offsetの()内のnについて、 set n . value=worksheetfunction . vlookup(v , worksheets("工事").range("A1:B10"), 2 , False)としてみたのですがエラーが出ます😓 お助けください!
@macro-chan3 жыл бұрын
set n.value=worksheetfunction.vlookup(v,worksheets("工事").range("A1:B10"), 2,False) これは文法的に誤りです。 nに代入したいのはLong型ですのでsetとvalueが不要ですね。 あとは、シートの構成がいまいちわからないのでなんとも言えないのですが、もしわからなかったらまた質問してください。
(動画を何度か見返して)on error resume nextを入れたら実行できました😆。前にもコメントでon error resume next のアドバイスいただいていました😅結構使えますね。ありがとうございました😆
@Kazuki_888882 жыл бұрын
何時も参考にさせていただき、勉強をすすめております。 現在WorksheetFunctionを使用してCountif使用して、いくつ都道府県別のデータがあるかを転記する練習をしております。 エクセル関数だと、集計表のB2セルに=COUNTIF(都道府県!C:C,集計表!A2)と書けば(オートフィルで47都道府県分を計算するとして)正常に表示がされますが、VBAで下記の関数を書いてみましたが、うまく数値が出ませんでした。 Dim ws As Worksheet Dim hyo As Worksheet Dim i As Long Set ws = ThisWorkbook.Worksheets("都道府県") Set hyo = ThisWorkbook.Worksheets("集計表") '最終行までループする For i = 2 To ws.Cells(Rows.Count, "A").End(xlUp).Row With hyo.Cells(i, "B").Value = WorksheetFunction.CountIf(ws.Range("C:C"), hyo.Cells(i, "A")) End With Next i ws.Activate End sub もしかして別のシートでやる場合は、For Nextで回すことがそもそもできなかったりするのでしょうか。図々しいですが、アドバイスなどいただけますと幸甚です。
@macro-chan2 жыл бұрын
コード書いていただくととても回答しやすくて助かります。 ループの部分がいくつか間違っているようですね。 '最終行までループする For i = 2 To hyo.Cells(Rows.Count, "A").End(xlUp).Row hyo.Cells(i, "B").Value = WorksheetFunction.CountIf(ws.Range("C:C"), hyo.Cells(i, "A")) Next i