C#でExcelのセル操作の方法とは?

このQ&Aのポイント
  • C#を使用してExcelのセル操作を行いたい場合、セルの着色や文字の太字化などの操作が必要です。
  • しかし、セルを網掛けする方法については分かりませんでした。
  • どなたかご教示いただけると幸いです。
回答を見る
  • ベストアンサー

C#でExcelのセル操作の件

お世話になります。 .NET Frameworkで開発しています。 ソースコードはC#です。 中身でExcelのファイルに書き出す所があり、 その中で、Excelのセルに着色したり、文字を太文字にしたり する部分が有り、そこは何とか下記の様に対応出来たのですが、 セルを網掛けしなければならない箇所が有り、 色々ネットを見たのですが、やり方(コード書き方)が 分かりませんでした。 どなたかご親切な方ご教示下さいます様、 宜しくお願い致します。          記 Excel.Range RANGE = sheet1.get_Range(sheet1.Cells[1, 43], sheet1.Cells[1, 43]); RANGE.Interior.ColorIndex = 6; sheet1.Cells[1, 44] = "6ヶ月以内";

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

  • ベストアンサー
回答No.1

その他の回答 (1)

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.2

excelでマクロの記録

関連するQ&A

  • エクセル マクロ 複数セルの色付けについて

    マクロ初心者で苦戦しており、教えていただけると大変ありがたいです。 エクセルの複数のシートに、問2_1 、問2_2 、問2_10 (全部で問は2_28まであります)等の文字列があり、その文字に合わせて、そのセルだけ色を付けたいと考えております。 今書いているコードだと、ワークシートのA列にある場合は色が付けられるのですが、それ以外に色が付けられません。どこが間違っているでしょうか? どうぞご指導お願いいたします。 Sub 色つけ() Dim Maxrow As Long Dim i As Long Maxrow = Cells(Rows.Count, i).End(xlUp).Row For i = 1 To Maxrow If InStr(Cells(i, 1), "2_1 ") > 0 Then Cells(i, 1).Interior.ColorIndex = 6 If InStr(Cells(i, 1), "2_2 ") > 0 Then Cells(i, 1).Interior.ColorIndex = 6 If InStr(Cells(i, 1), "2_23 ") > 0 Then Cells(i, 1).Interior.ColorIndex = 23 If InStr(Cells(i, 1), "2_13 ") > 0 Then Cells(i, 1).Interior.ColorIndex = 4 If InStr(Cells(i, 1), "2_6 ") > 0 Then Cells(i, 1).Interior.ColorIndex = 7 Next i End Sub

  • VBA セルに入力されている数値でセルを指定する

    Excel VBA初心者です。 Sheet1のA1セルに10、A2セルに3を入力しています。 この入力したセルの数値を参照して、 Sheet2の「Cells(10,3)」(C10セル)を青(Interior.ColorIndex = 5)に 書式変更したいのですが、「Cells(”Sheet1.A1の値”,”Sheet1.A2の値”)」の 書き方がわかりません。 Excel2010を使用しています。 よろしくお願いします。

  • EXCEL セルをコピペすると画面がフリーズする

    お世話になります excelシート イベントでセルの値が変わった時にマクロが実行されるVBAを作成していて、 1行毎の入力作業はうまくいくのですが、式の入っていないセルを複数行をコピペ、 例えばA,Bセルの値が同じものが5件ほどあった場合、最初の入力のものをしたにドラッグして 貼り付けると、画面がフリーズして強制終了せざる負えなくなります。 エラーを回避する方法をご教示お願いいたします。以下VBAの内容です。 Dim sh1 As Worksheet Dim i As Integer Private Sub Worksheet_Calculate() 'detailに指標をセット i = 9 シートをworkエリアにセット Set sh1 = Worksheets(4) 'カードルシート,2ページ(予備)まで指標を回す For i = 9 To 66 '画面ちらつき防止 Application.ScreenUpdating = False '2ページ(予備)目ヘッダーは処理しない If i < 33 Or i > 41 Then 'サンプル番号が入力されている時 If sh1.Cells(i, "E") <> "" Then 'サンプル年月が入力されている時 If IsError(sh1.Cells(i, "K")) <> True Then '基準年月 >= サンプル年月 の時 If sh1.Cells(7, "O") >= sh1.Cells(i, "K") Then '次回サンプル年月 <= 当年月 の時 If sh1.Cells(i, "Q") <= sh1.Cells(8, "O") Then sh1.Cells(i, "M") = "出荷禁止" '該当行を赤色で塗りつぶし With sh1 .Cells(i, "A").Interior.ColorIndex = 3 .Cells(i, "B").Interior.ColorIndex = 3 .Cells(i, "C").Interior.ColorIndex = 3 .Cells(i, "D").Interior.ColorIndex = 3 .Cells(i, "E").Interior.ColorIndex = 3 .Cells(i, "F").Interior.ColorIndex = 3 .Cells(i, "G").Interior.ColorIndex = 3 .Cells(i, "H").Interior.ColorIndex = 3 .Cells(i, "I").Interior.ColorIndex = 3 .Cells(i, "J").Interior.ColorIndex = 3 .Cells(i, "K").Interior.ColorIndex = 3 .Cells(i, "L").Interior.ColorIndex = 3 .Cells(i, "M").Interior.ColorIndex = 3 End With Else '次回サンプル年月 <= 当年月 でない時 sh1.Cells(i, "M") = "OK" End If End If End If Else '該当行を無色で塗りつぶし With sh1 .Cells(i, "A").Interior.ColorIndex = 0 .Cells(i, "B").Interior.ColorIndex = 0 .Cells(i, "C").Interior.ColorIndex = 0 .Cells(i, "D").Interior.ColorIndex = 0 .Cells(i, "E").Interior.ColorIndex = 0 .Cells(i, "F").Interior.ColorIndex = 0 .Cells(i, "G").Interior.ColorIndex = 0 .Cells(i, "H").Interior.ColorIndex = 0 .Cells(i, "I").Interior.ColorIndex = 0 .Cells(i, "J").Interior.ColorIndex = 0 .Cells(i, "K").Interior.ColorIndex = 0 .Cells(i, "L").Interior.ColorIndex = 0 .Cells(i, "M").Interior.ColorIndex = 0 .Cells(i, "M") = "" End With End If End If Next i End Sub

  • Excel VBA 選択した範囲の1行目に色を付けたい

    VBA初心者です。 セルB4~F15に表が作成されています。 プロシージャを実行して、セルB5~F15にブルー。表1行目のセルB4とF4のみに赤の色を付けるというコードを記述したいのです。 以下のように記述しました。 Sub セルに色()    Range("B4").Select    ActiveCell.CurrentRegion.Select    Selection.Interior.ColorIndex = 8    Selection.Range(Cells(1, 1),Cells(1,5)).Interior.ColorIndex = 3 End Sub Rangeでは連続シートになるため、Unionに変更してみましたが、 Unionはオブジェクトがサポートされていない旨のエラーが出ました。 どのように記述すればよいでしょうか? どうぞよろしくお願いいたします。

  • エクセルVBA 選択した値でセルの色を変える方法

    エクセルのVBAです。 指定されたセルの値をプルダウンで選択し、入力(選択)された値によって同じ列の指定した範囲に色を付ける、という内容です。 これを、一つの列のみで行う場合は、以下のコードでOKでした。 わからないのは、列の範囲が5~40まであり、それぞれ値を選択した時にそのセルと同じ列の指定範囲に色をつけることです。 ちなみに、条件付き書式は、すでに条件がいくつかついているため 使用できないという前提でお願いします) ちょっと説明がわかりづらいですが、おわかりになる方いらっしゃいましたら教えてください。よろしくお願いします!! ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ Private Sub Worksheet_Change(ByVal Target As Range) a = Cells(33, 5).Value Select Case a Case "A" Range("E6:E31").Interior.ColorIndex = 6 Case "B" Range("E6:E17").Interior.ColorIndex = 8 Range("E18:E31").Interior.ColorIndex = 2 Case "C" Range("E18:E31").Interior.ColorIndex = 8 Range("E6:E17").Interior.ColorIndex = 2 Case "" Range("E6:E31").Interior.ColorIndex = 2 End Select End Sub ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ Cells(33, 5)で A を選択した時は、E6:E31を黄色で。 B を選択した時は、E6:E17を水色かつE18:E31を白 C を選択した時は、E18:E31を水色かつE6:E17を白 値なしを選択した時は、色なし(白)

  • VBA-セル内部の色表示について

    以下のプログラムで、セルを結合して色を設定しています。 For i = 4 To 63   With Sheet1.Range(Cells(4, i), Cells(4, i + 1))     .MergeCells = True '結合     .Interior.ColorIndex = 35 '薄い緑色・・・(1)   End With   i = i + 1 Next その後、エクセルのワークシート上のコマンドボタンをクリックすると、 色なしの元の状態に戻したいのですが、(1)の部分を以下にすると、 『.Interior.ColorIndex = 2 '白色』 セル内部を塗りつぶすため、罫線の外周までも白くなってしまいます。 白で塗りつぶすのではなく、元の「色なし」の状態にするプログラムを どなたか教えて下さい。

  • エクセルVBAでセル選択するコードが変

    エクセルのワークシートでVBAでセル選択するコードで理解に苦しむことがあります。 通常、Cells(2, 1)はセル番地で言えばA2セル Cells(4, 1)はセル番地で言えばA4セルです。 しかし、 With .Range("B5:B15")でくくれば  .Cells(2, 1)はセル番地で言えばB6セルだと思います。 .Cells(4, 1) はセル番地で言えばB8セルだと思います。 ところが下記のコードを動かすと、なぜかC10:C12が選択されてしまいます。 この理屈がわかりません。 Sub test02()   With Sheets("Sheet1")     With .Range("B5:B15")       .Range(.Cells(2, 1), .Cells(4, 1)).Select     End With   End With End Sub なお、 .Range(.Cells(2, 1), .Cells(4, 1)).Selectを .Range(“A2:A4”).Selectに書きかえると、希望のB6:B8が選択されます。

  • エクセル VBA セルの色をSheet1とSheet2の両方を変えたいのですが・・・

    最近困っているところが表題の通りなのですが Sheet1のB2を右クリックするとB2のセルの色を変えて Sheet2のB2のセルも色を変えたいというものです。 現状で Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Dim Rng As Range, myRng As Range Dim RngA As Range, myRngA As Range Set Rng = Range("B3:W3,b7:w8,b12:w12,d13:w13,d17:w18,d22:w23") Set myRng = Intersect(Target, Rng) If myRng.Interior.ColorIndex = xlColorIndexNone Then myRng.Interior.ColorIndex = 37 Else If myRng.Interior.ColorIndex = 37 Then myRng.Interior.ColorIndex = 45 Else myRng.Interior.ColorIndex = xlColorIndexNone End If End If Cancel = True End Sub とここまではあるのですが、これをどう改造すればSheet2の同じセルの色もかわるのでしょうか? 宜しくお願いいたします

  • エクセルマクロ セルの色つけ

    エクセルのマクロです。 条件で複数セルに色をつけたいのですが以下の方法しかないですか。 もっと多くのセルに一度に色を付ける良い方法がありましたら教えて下さい。 If days = "日" Then With Cells(i, 2).Interior .ColorIndex = 3 .Pattern = xlSolid End With With Cells(i, 13).Interior .ColorIndex = 3 .Pattern = xlSolid End With End If 以上 お願いします。

  • C# Excel 背景色設定 色が出ない

    C#でExcelを作るプログラムを作成しています。 背景色を任意の色に設定したいのですが、 設定出来る色と出来ない色があるようで、 両者の違いがよくわかりません。 もし原因をご存知の方がいらっしゃいましたらご教授ください。 実行環境とソースは以下のものとなります。 ----- 実行環境ここから Microsoft Visual Studio 2005 Version 8.0.50727.42 (RTM.050727-4200) Microsoft .NET Framework Version 2.0.50727 SP2 Microsoft Visual C# 2005(Edition: Professional) Interop.Excel.dll: 1.3.0.0 ----- 実行環境ここまで ----- ソース抜粋ここから // 準備 string fileName = "D:\\project\\test.xls"; Excel.Application app = new Excel.Application(); app.Visible = false; Excel.Workbook workbook = app.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet); workbook.Activate(); Excel.Sheets sheets = workbook.Sheets; Excel.Worksheet sheet = (Excel.Worksheet)sheets[sheets.Count]; // 色指定"#FFFFEE" -> 白で塗りつぶされる (sheet.get_Range(sheet.Cells[1, 1], sheet.Cells[1, 1])).Interior.Color = ColorTranslator.ToOle(ColorTranslator.FromHtml("#FFFFEE")); // 色指定"#CCFFFF" -> 指定色で塗りつぶされる (sheet.get_Range(sheet.Cells[1, 2], sheet.Cells[1, 2])).Interior.Color = ColorTranslator.ToOle(ColorTranslator.FromHtml("#CCFFFF")); // 色指定"#FFCCFF" -> 白で塗りつぶされる (sheet.get_Range(sheet.Cells[1, 3], sheet.Cells[1, 3])).Interior.Color = ColorTranslator.ToOle(ColorTranslator.FromHtml("#FFCCFF")); // 色指定"#FFF3F9" -> 白で塗りつぶされる (sheet.get_Range(sheet.Cells[1, 4], sheet.Cells[1, 4])).Interior.Color = ColorTranslator.ToOle(ColorTranslator.FromHtml("#FFF3F9")); // 色指定"#FFFF33" -> 指定色で塗りつぶされる (sheet.get_Range(sheet.Cells[1, 5], sheet.Cells[1, 5])).Interior.Color = ColorTranslator.ToOle(ColorTranslator.FromHtml("#FFFF33")); // 色指定"#FFCC33" -> 指定色で塗りつぶされる (sheet.get_Range(sheet.Cells[1, 6], sheet.Cells[1, 6])).Interior.Color = ColorTranslator.ToOle(ColorTranslator.FromHtml("#FFCC33")); // 終了処理 workbook.SaveAs(fileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing); workbook.Close(false, Type.Missing, Type.Missing); app.Quit(); ----- ソース抜粋ここまで

専門家に質問してみよう