エクセルマクロで最後の行に黄色の塗りつぶしをする方法

このQ&Aのポイント
  • エクセルマクロを使用して、最後の行に黄色の塗りつぶしをする方法について教えてください。
  • また、塗りつぶしの次の行にVLOOKUP関数を使用する方法も教えてください。
  • お願いします。
回答を見る
  • ベストアンサー

エクセルマクロで

いつもお世話になります mythism様に教えていただいた下記マクロについて もう1つ教えていただきたいのですが t = 3 While Cells(t, 3).Value <> "" t = t + 1 Wend If 1 < t Then Range("c3:n" & Trim(Str(t - 1))).Locked = True End If Range("c" & Trim(Str(t)) & ":n" & Trim(Str(t + 99))).Locked = False Range("c" & Trim(Str(t)) & ":n" & Trim(Str(t))).Interior.ColorIndex = 36 最後の行に黄色の塗りつぶしをしてうまくいきました 塗りつぶしの次の行のE列に Range("E19").Select  19行になったとして VLOOKUPをいれたいのですが ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-4],漁師名!R2C3:R31C4,2,FALSE)" Range("E19").Selectの部分は どうしたらいいでしょうか よろしくお願いいたします

質問者が選んだベストアンサー

  • ベストアンサー
  • mythism
  • ベストアンサー率52% (45/86)
回答No.1

ご質問の内容は、  Range("c" & Trim(Str(t)) & ":n" & Trim(Str(t))).Interior.ColorIndex = 36 の処理により、例えば19行目を塗りつぶした場合、 19行目のE列に"=VLOOKUP(RC[-4],漁師名!R2C3:R31C4,2,FALSE)"という関数を入力したい、ということでよろしいでしょうか? もしそのような意味でしたら、 Range("c" & Trim(Str(t)) & ":n" & Trim(Str(t))).Interior.ColorIndex = 36 に続けて、 Cells(t, 5).FormulaR1C1 = "=VLOOKUP(RC[-4],漁師名!R2C3:R31C4,2,FALSE)" とすると上手くいくと思います。 範囲ではなく特定のセルの場合には、Cells(行, 列)で指定した方が簡単です。行と列の指定はR1C1系的に考えましょう。 次の行のE列目でしたらCells(t, 5)をCells(t + 1, 5)に変更してください。 頑張ってくださいね。 追伸。質問者さんがおこなった先の質問の内容が、それに関わっていなかった回答者さんにはさっぱりわからなくなっておりますよね。先の質問の質問Noか、質問のURLを質問中に書いておいたほうが、参加できる回答者さんの数も増えて、質問者さんご自身の利益になってよろしいかと思います。

hajihaji
質問者

お礼

いつもありがとうございます >それに関わっていなかった回答者さんにはさっぱりわからなくなっておりますよ あせって完全に忘れていました とりあえず他の回答者様に迷惑なので 一旦閉じます ありがとうございました

関連するQ&A

  • エクセルのマクロで繰り返し処理

    当方マクロ初心者ですが下記のマクロをCheckBox0~CheckBox23についてコピーするセルを変化させながら繰り返し処理を行いたいのですが、簡単なループ処理で行えますか? 教えていただければ幸いです。 If CheckBox0.Value = True Then Worksheets("sheets1").Activate  行 = Worksheets("sheets1").Range("e7")   行 = 行   Worksheets("sheets1").Range("g7:t7").Copy Windows("Books1.xls").Activate Sheets("sheets1").Select Range(Cells(行, 15), Cells(行, 15)).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False End If

  • マクロをまとめられますか?

    エクセルについて、教えてください。 今はこんな感じになっています。 C3:C10のセル =IF(R1C[1]="""","""",VLOOKUP(RC[13]&R1C[1],main!C1:C30,6,FALSE))" D3:D10のセル =IF(R1C[1]="""","""",VLOOKUP(RC[14]&R1C[1],main!C1:C30,7,FALSE))" E3:E10のセル =IF(R1C[1]="""","""",VLOOKUP(RC[15]&R1C[1],main!C1:C30,8,FALSE))" で作っています。 これをE列よりも先にも作りたいのですが、一個ずつ作ると式ばかりになりますので こういうのをまとめて書くやり方はあるのでしょうか? もし、まとめるような書き方があればアドバイスでも構いませんのでお願いしたいと思います。

  • Excelマクロについて

    先日、OKWEBで教えてもらったマクロに手を加えて作ろうとしたのですが、エラーがでて動かなくなりました。 わかる方がいましたら教えてください。 よろしくおねがいします。 Sub 見積書() Application.ScreenUpdating = False '見積書(完成)シートを選択 Sheets("見積書(完成)").Select '行の高さを「15」にする。 Rows("6:67").Select Range("F6").Activate Selection.RowHeight = 15 'S列のS6:S56をコピーしてE6:E7に貼り付ける。 Range("S6:S56").Select Selection.Copy Range("E6:E7").Select ActiveSheet.Paste '5列目(工数)が「0」のとき該当する行の高さを「0」にする。 For i = ActiveSheet.UsedRange.Rows.Count To 1 Step -1 If Cells(i, 5).Value = "0" And Cells(i, 7).Value = "0" Then Rows(i).RowHeight = 0 End If Next '「E8:E55」の範囲を四捨五入する。 For i = ActiveSheet.UsedRange.Rows.Count To 1 Step -1 Range("E8:E55") = Application.Round(Range("E8:E55"), 0) '工数を四捨五入 Next 'C列の中に含まれる「小計」を検索しそこから6列目が「0」だったら行の高さを「0」にする。 Dim Rng As Range Const Retu = "C" For Each Rng In Range(Retu & "1", Range(Retu & "100").End(xlUp)) If Trim(Rng.Value) = "小   計" And _ Rng.Offset(, 6) = 0 Then Rng.EntireRow.Hidden = True End If Next Rng End Sub

  • エクセル2000でのVBAについて

    下記のVBAを書いているのですが、3つのIF文を1つに まとめたいのですが教えてください。 If Range("E16") = "申請者" Then Sheets("ログイン").Select Sheets("報告票").Select ActiveSheet.Unprotect Range("M3:U7").Select Selection.Locked = False Selection.FormulaHidden = False ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True '数式バー表示 Application.DisplayFormulaBar = True Range("H9").Select Else: Sheets("ログイン").Select If Range("E16") = "所属長承認" Then Sheets("報告票").Select ActiveSheet.Unprotect Range("D3:L7").Select Selection.Locked = False Selection.FormulaHidden = False ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True '数式バー表示 Application.DisplayFormulaBar = True Range("H9").Select Else: Sheets("ログイン").Select If Range("F16") = "所属長承認" Then Sheets("報告票").Select ActiveSheet.Unprotect Range("BS3:CA7").Select Selection.Locked = False Selection.FormulaHidden = False ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True '数式バー表示 Application.DisplayFormulaBar = True Range("H9").Select Else: Sheets("ログイン").Select end if end if end if

  • エクセルのマクロで

    お世話になります 下記のマクロで実行した所 100まで書式設定で保護、ロックしたいのですが b3:l3はロックするものの 4行目以降はロックしません どうしたらいいでしょうか もう1つ、このシートはいつもc3からはじめたいのですが If ActiveCell.Value >= "" Then の部分はどうしたらいいでしょうか よろしくおねがいいたします 初心者でバカな質問ですみません Sub マクロ1() Dim i As Integer For i = 1 To 100 If ActiveCell.Value >= "" Then Range("B3:l3").Select Selection.Locked = True Selection.FormulaHidden = False End If ActiveCell.Offset(1, 0).Select Next End Sub

  • エクセルマクロ 繰り返して、別のシートへコピーしたい

    エクセルマクロ 繰り返して、別のシートへコピーしたい マクロ初心者のため、やり方が全くわかりません。 どなたか教えてください。 やりたいことは、 コピーするシートはあらかじめ作成しています。 簡素化の方法がわからないので、 とりあえず自分で作ってみたものが下にあるものです。 繰り返す方法がわからないので、 どなたか教えてください。 よろしくお願いします。 以下、作成したマクロです。 1行目から10行目まで繰り返したくて、 1行目から2行目のセルの移動の差は10行目までかわりません。 '1行目 Sheets("Sheet1").Select Range("B14:C14").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("A1").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet1").Select Range("B15:C17").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B1").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False '2行目 Sheets("Sheet1").Select Range("B18:C18").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("A2").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet1").Select Range("B19:C21").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B2").Select Range("B2").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False

  • エクセルのマクロ

    お世話になります。 Book1.xlsというファイルから、不特定のファイルを開き、一定の作業の後、閉じる場合のマクロについて伺います。 name1、name2のファイルを開き、vlookup関数を入力する場合のマクロの記載は、サイトを検索し、下記のようにすればできました。 Dim name1 As String Dim name2 As String sub macro1() 省略 Workbooks.Open Filename:=name1 Workbooks.Open Filename:=name2 Windows("Book1.xls").Activate Range("C6").Select ActiveCell.FormulaR1C1 = _ "=VLOOKUP(RC1,'[" & name1 & "]sheei1'!C1:C155,R1C,FALSE)" Range("C7").Select ActiveCell.FormulaR1C1 = _ "=VLOOKUP(RC1,'[" & name2 & "]sheei1'!C1:C155,R1C,FALSE)" (省略) ***************************** Windows("name1").Activate ActiveWindow.Close  Windows("name2").Activate ActiveWindow.Close ***************************** として、呼び出したファイルを(保存せず)閉じたいのですが、("name1")("name2")の部分の記載方法を教えてください。よろしくお願いします。

  • マクロについて教えてください

    マクロの超初心者です。 数式を入力しているのではなく、配付物をエクセルで作成しているのですが、同じもの(氏名や項目は違いますが)を100枚ほど作成しているのでマクロを・・・と思ったのですがやり方が全く分かりません。 sheet1からsheet2に下記のようにデータを写したいのですが、やり方を教えてください。 ●氏名が入力されています sheet1(A9) → sheet2(C2) sheet1(E9) → sheet2(C5) sheet1(I9) → sheet2(C8) ●項目1 sheet1(A8) → sheet2(E3) sheet1(E8) → sheet2(E6) sheet1(I8) → sheet2(E9) ●項目2 sheet1(A18~D18の結合セル) → sheet2(E2) sheet1(E18~H18の結合セル) → sheet2(E5) sheet1(I18~L18の結合セル) → sheet2(E8) と反映させたいのですが、250行あるのですが、 簡単にマクロで出来ないでしょうか?? ちなみに↓コレが上記の内容で作ってみたものです。 わかりずらい質問でスイマセン。 Range("A9").Select Selection.Copy Sheets("sheet2").Select Range("C2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E9").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("C5").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I9").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("C8").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("A8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E3").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E6").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E9").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("A18:D18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E18:H18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E5").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I18:L18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E8").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False End Sub

  • EXCELマクロについて

    条件 シート名提供データE列の3行目からデータが入っています。    ブランク以外のデータをコピーしてシート名WorkのC列の2行目から貼り付けたいので下記のマクロを書いていますがおかしい所 はないのでしょうか。教えてください。 いまいちCellsの使い方がわかりません。 出来たら下記の意味を教えてください。 brank = Worksheets("提供データ").Cells(gyo, 5).Text Range(Cells(3, 5), Cells(gyo, 5)).Select Sub 貼付() Dim gyo, brank Sheets("提供データ").Select Range("e3").Select gyo = 2 Do gyo = gyo + 1 brank = Worksheets("提供データ").Cells(gyo, 5).Text Loop While brank <> "" Range(Cells(3, 5), Cells(gyo, 5)).Select Selection.Copy Sheets("work").Select Range("c2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False End Sub

  • エクセルのVBA1について

    お世話になります。 エクセルの文で下記の式があります。 =IF(ISERROR(VLOOKUP($E3822,☆集計!$C:$D,2,FALSE)),"対象外",IF($D3822>=VLOOKUP($E3822,☆集計!$C:$D,2,FALSE),"対象","対象外")) これは、正常に通ります。 これをVBAのFomura関数にしてみした。 Mdata = 3824 Range("L" & Mdata).Formula = "=IF(ISERROR(VLOOKUP($E" & Mdata & ",☆集計!$C:$D,2,FALSE))," & "対象外" & ",IF($D" & Mdata & ">=VLOOKUP($E" & Mdata & ",☆集計!$C:$D,2,FALSE)," & "対象外" & "," & "対象" & "))" 'Range("L" & Mdata).Formula = "=IF(ISERROR(VLOOKUP($E" & Mdata & ",☆集計!$C:$D,2,FALSE))," & Gai & ",IF($D" & Mdata & ">=VLOOKUP($E" & Mdata & ",☆集計!$C:$D,2,FALSE)," & Gai & "," & "Tai" & "))" コンパイルエラーとなりませんのが、実行しますと下記の様になります。 #NAME?となり、 式が =IF(ISERROR(VLOOKUP($E3824,☆集計!$C:$D,2,FALSE)),対象外,IF($D3824>=VLOOKUP($E3824,☆集計!$C:$D,2,FALSE),対象外,対象)) となり、対象、対象外が" "で括られません。 そこで、様々なサイトを参考にして下記の様にダブルクォートを重複して書きました。 ""対象""、""対象外""とすると赤字でエラーとなってしまいます。 Formula関数は、初めて使いますが、他の、単純な関数では成功しています。 どのようにすれば、通常の関数と同じ働きでインプットできるのか、ご教授して頂ければ有りがたく存じます。 よろしくお願いします。