アプリ版:「スタンプのみでお礼する」機能のリリースについて

数値データはAからAKまで入力されており、
「休暇」という文字列を含む列はA列からAL列まで.Interior.ColorIndex = 6で塗りAL列にAK列の数値を複写
「公休」という文字列を含む列はA列からAL列まで.Interior.ColorIndex = 8で塗りAL列にAK列の数値を複写。
該当しない列は塗らず、複写も行わない。
このような場合はVBAでどのように記述したらよろしいでしょうか?

A 回答 (1件)

こんにちは!



色付けするのは列ではなく、A~AL列までの該当行ですよね?
同じ行内に「休暇」と「公休」はダブって存在しない!という前提です。
1行目は項目行でデータは2行目以降にあるとします。

A列で最終行を取得していますのでA列には最終行まで何らかのデータが入っているとします。

Sub Sample1()
Dim i As Long, lastRow As Long
Dim c As Range, r As Range, myRng As Range
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
Range(Cells(2, "AL"), Cells(lastRow, "AL")).ClearContents
Range(Cells(2, "A"), Cells(lastRow, "AL")).Interior.ColorIndex = xlNone
For i = 2 To lastRow
Set myRng = Range(Cells(i, "A"), Cells(i, "AL"))
Set c = myRng.Find(what:="休暇", LookIn:=xlValues, lookat:=xlWhole)
Set r = myRng.Find(what:="公休", LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
myRng.Interior.ColorIndex = 6
Cells(i, "AL") = Cells(i, "AK")
ElseIf Not r Is Nothing Then
myRng.Interior.ColorIndex = 8
Cells(i, "AL") = Cells(i, "AK")
End If
Next i
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます!二行目がタイトルで三行目からになりますので、For i = 2 To lastRow のところと、Cells(2,"AL")等を3に変更したらよろしいですね!!わからないなりにやりかけてみましたが、どんどん行が増えて複雑になりエラーだらけで悩んでいました。 こんなに短く簡潔に出来るとは目からウロコです!!感謝いたします^^v

お礼日時:2017/08/30 16:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!