• ベストアンサー

Excelの出力について

VB6を使用しています。 Excelに出力するときにあるセルの部分を 線を太くしたいのですがどういうコードを書けばいいのですか? ヘルプを見ると Borders(xlEdgeBottom).Color = RGB(255, 0, 0) これだと下線を赤色にするってことみたいなんですが、 xlEdgeBottom←これが下線を表すなら 上線は?右の縦線は?左の縦線は?なんて書けばいいのでしょうか? 初心者のなので親切丁寧な回答をお願いします。

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

  • ベストアンサー
  • 2ch
  • ベストアンサー率51% (64/125)
回答No.4

要EXCEL参照設定 改マクロの記録 Sub Main()     Dim xlsApp      As Excel.Application     Dim xlsBook     As Excel.Workbook     Dim xlsSheet    As Excel.Worksheet     Dim xlsRange    As Excel.Range          Set xlsApp = New Excel.Application     xlsApp.Visible = True     Set xlsBook = xlsApp.Workbooks.Open("c:\test.xls")     Set xlsSheet = xlsBook.Worksheets("Sheet1")     Set xlsRange = xlsSheet.Range("B2:E7")     With xlsRange         '左         With .Borders(XlBordersIndex.xlEdgeLeft)             .LineStyle = XlLineStyle.xlDash             .Weight = XlBorderWeight.xlMedium         End With         '上         With .Borders(XlBordersIndex.xlEdgeTop)             .LineStyle = XlLineStyle.xlContinuous             .Weight = XlBorderWeight.xlThin         End With         '右         With .Borders(XlBordersIndex.xlEdgeRight)             .LineStyle = XlLineStyle.xlDouble             .Weight = XlBorderWeight.xlThick         End With         '下         With .Borders(XlBordersIndex.xlEdgeBottom)             .LineStyle = XlLineStyle.xlSlantDashDot             .Weight = XlBorderWeight.xlHairline         End With         '内側縦         With .Borders(XlBordersIndex.xlInsideVertical)             .LineStyle = XlLineStyle.xlDashDotDot             .Weight = XlBorderWeight.xlMedium         End With         '内側横         With .Borders(XlBordersIndex.xlInsideHorizontal)             .LineStyle = XlLineStyle.xlContinuous             .Weight = XlBorderWeight.xlMedium         End With              '左上から左右下への斜線         With .Borders(XlBordersIndex.xlDiagonalDown)             .LineStyle = XlLineStyle.xlContinuous             .Weight = XlBorderWeight.xlHairline         End With         '右上から左下への斜線         With .Borders(XlBordersIndex.xlDiagonalUp)             .LineStyle = XlLineStyle.xlContinuous             .Weight = XlBorderWeight.xlThin         End With     End With     Stop     Set xlsRange = Nothing     Set xlsSheet = Nothing     xlsBook.Close False 'ブックを保存しない     Set xlsBook = Nothing     xlsApp.Quit     Set xlsApp = Nothing End Sub

その他の回答 (3)

  • TTak
  • ベストアンサー率52% (206/389)
回答No.3

シート1のセルA1の例です。 Set wkbObj = GetObject("C:\???\???.xls") With wkbObj.Worksheets(1).Range("A1")   .Borders(xlEdgeLeft).Weight = xlMedium '-左   .Borders(xlEdgeTop).Weight = xlMedium '-上   .Borders(xlEdgeBottom).Weight = xlMedium '-下   .Borders(xlEdgeRight).Weight = xlMedium '-右 End With xlMediumは中くらいの太さになります。

  • BlueRay
  • ベストアンサー率45% (204/453)
回答No.2

上 … xlEdgeTop 下 … xlEdgeBottom 左 … xlEdgeLeft 右 … xlEdgeRight 「マクロの記録」を実行して、セルの詳細設定→罫線で プリセットを外枠にして決定して記録を終了して記録された マクロを見るとかすれば、望む記述がわかりますよ。

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

Excelで"新しいマクロの記録"をしてみれば、分かると思います。

関連するQ&A

  • 今まで使えていたコードがいきなり使えなくなった

    今まで使えていたコードがいきなり使えなくなったのですがどうしてでしょうか? コードは With Rows(100).Borders(xlEdgeBottom) .LineStyle = xlContinuous '下に線を引く .Color = 39423 End With です。 .LineStyle = xlContinuous '下に線を引く これでエラーになります。 実行時エラー1004です。 エクセルのバージョンは2010です。

  • エクセル BGR?

    http://oshiete1.goo.ne.jp/qa4068415.html こちらでセルA1から他のセルB1の背景色を指定する方法を教えていただきました。 ありがとうございます。 うまくはいったのですが、指定されたカラーコードの認識が、 RGBではなくBGRのようですね。 A1でRGBで指定したカラーコードの通りに、B1の背景色を表示することは可能なのでしょうか? よろしくお願いいたします。

  • EXCEL VBAでカラーチャートを作りたいです

    お世話になります。VBAを勉強中の者です。 自分なりに調査してみたのですが、解決できなかったので質問させて頂くことにしました。 EXCEL2003を使ってカラーチャートを作成しています。 1セル1色を、(色の)漏れがなく、かつ、ダブり無く塗りつぶし、 1つのシートのセルを全て使って256×256×256色のグラデーションを作成しようとしています。 上述カラーチャートを作成するにあたり、 まずは簡単なSubプロシージャを作成することにしました。 RGB関数のRedの値を0から255まで変化させ順次セルを塗りつぶすことで 黒→赤 のグラデーションを得ようと考えたのです。 作成したコードは以下の通りです。 このコードを実行すると、意図している黒から赤への連続的なグラデーションは得られず、 Redの値が0から64までは黒、65から192までは栗色っぽい色、193から255までは赤 という3色しか表示されない結果となりました。 Excelは、セルの塗りつぶしやフォントの色などをカラーインデックスという形で 保持しているということまでは、調査で把握しました。256色の連続的なグラデーション ではなく、3色のグラデーションとなってしまったのは、RGB関数で指定した値が カラーインディックスに丸め込まれたからであるとは予想がつきますが、 RGB関数で指定した色でセルを塗りつぶす方法が分かりません。 グラデーションを得るにはどうすれば良いのでしょうか? お力をお借りしたいです。宜しくお願い致します。 - - - - - - - - - - - - - Sub RGB_Color_Red() Dim n As Long Dim cnst As Long cnst = 0 For n = 1 To 256 Cells(n, 1).Interior.Color = RGB(n - 1, cnst, cnst) Next End Sub - - - - - - - - - - - - -

  • エクセル:シートを切り替えずに別シート上の操作をする

    タイトルが正しいかどうか疑問ですが。 シート[Sheet1]にて値を入力したアドレス(の行番号と列番号)を取得し、 その周囲のセルの罫線の色を赤(3)から灰色(15)に置換するコードを作っています。 Sheet1のコードには、 Private Sub Worksheet_Change(ByVal Target As Range)  AAA Target End Sub とだけ書き、入力があったらプロシージャAAAへTargetを持って飛びます。 Sub AAA(ByVal Target As Range)  Dim M_Row As Integer  Dim M_Clm As Integer  Dim Y As Range  M_Row = Target.Row  M_Clm = Target.Column  For Each Y In Worksheets("Sheet1").Range(Cells(M_Row - 2, M_Clm), Cells(M_Row + 1, M_Clm + 5))   With Y    If .Borders(xlEdgeTop).ColorIndex = 3 Then .Borders(xlEdgeTop).ColorIndex = 15    If .Borders(xlEdgeLeft).ColorIndex = 3 Then .Borders(xlEdgeLeft).ColorIndex = 15    If .Borders(xlEdgeBottom).ColorIndex = 3 Then .Borders(xlEdgeBottom).ColorIndex = 15   End With  Next End Sub ここまでは正常に動きます。 この後に、アクティブでないシート[Sheet2]の同じセル範囲にある罫線の色も同じように置換したいので、 上記コードに続けて、以下のように書きました。 Sub AAA(ByVal Target As Range)  Dim M_Row As Integer  Dim M_Clm As Integer  Dim Y As Range  M_Row = Target.Row  M_Clm = Target.Column  For Each Y In Worksheets("Sheet1").Range(Cells(M_Row - 2, M_Clm), Cells(M_Row + 1, M_Clm + 5))   With Y    If .Borders(xlEdgeTop).ColorIndex = 3 Then .Borders(xlEdgeTop).ColorIndex = 15    If .Borders(xlEdgeLeft).ColorIndex = 3 Then .Borders(xlEdgeLeft).ColorIndex = 15    If .Borders(xlEdgeBottom).ColorIndex = 3 Then .Borders(xlEdgeBottom).ColorIndex = 15   End With  Next  For Each Y In Worksheets("Sheet2").Range(Cells(M_Row - 2, M_Clm), Cells(M_Row + 1, M_Clm + 5))   With Y    If .Borders(xlEdgeTop).ColorIndex = 3 Then .Borders(xlEdgeTop).ColorIndex = 15    If .Borders(xlEdgeLeft).ColorIndex = 3 Then .Borders(xlEdgeLeft).ColorIndex = 15    If .Borders(xlEdgeBottom).ColorIndex = 3 Then .Borders(xlEdgeBottom).ColorIndex = 15   End With  Next End Sub これだと、  For Each Y In Worksheets("Sheet2").Range(Cells(M_Row - 2, M_Clm), Cells(M_Row + 1, M_Clm + 5)) の部分で失敗します。 この1行前に、  Sheets("Sheet2").Select と入れてやると正常に動作するのですが、 シートを切り替えずにやりたいと思っています。 可能でしょうか? 以下のように、 実行後にSheet1に戻し、 それらを Application.ScreenUpdating = False Application.ScreenUpdating = True で挟むことで、見た目はシートを切り替えずに実行できるのですが、 実際にこのコードを組み込んでいるシートはシート上にあるデータが多いためか(600行×100列程度)、 全く同じコードを実行しても一瞬画面がチラついてしまいます。 (新規Bookで同じコードを組み込んで、何行かに罫線を引いただけのシートだと全くチラつかなかったので、 シート上のデータが多いせいじゃないかと思いました) Sub AAA(ByVal Target As Range)  Dim M_Row As Integer  Dim M_Clm As Integer  Dim Y As Range  M_Row = Target.Row  M_Clm = Target.Column  For Each Y In Worksheets("Sheet1").Range(Cells(M_Row - 2, M_Clm), Cells(M_Row + 1, M_Clm + 5))   With Y    If .Borders(xlEdgeTop).ColorIndex = 3 Then .Borders(xlEdgeTop).ColorIndex = 15    If .Borders(xlEdgeLeft).ColorIndex = 3 Then .Borders(xlEdgeLeft).ColorIndex = 15    If .Borders(xlEdgeBottom).ColorIndex = 3 Then .Borders(xlEdgeBottom).ColorIndex = 15   End With  Next  Application.ScreenUpdating = False  Sheets("Sheet2").Select  For Each Y In Worksheets("Sheet2").Range(Cells(M_Row - 2, M_Clm), Cells(M_Row + 1, M_Clm + 5))   With Y    If .Borders(xlEdgeTop).ColorIndex = 3 Then .Borders(xlEdgeTop).ColorIndex = 15    If .Borders(xlEdgeLeft).ColorIndex = 3 Then .Borders(xlEdgeLeft).ColorIndex = 15    If .Borders(xlEdgeBottom).ColorIndex = 3 Then .Borders(xlEdgeBottom).ColorIndex = 15   End With  Next  Sheets("Sheet1").Select  Application.ScreenUpdating = True End Sub よろしくお願いします。

  • エクセルのセル外改行は可能ですか?

     エクセルのセル内改行ができることは知っていたのですが、セル外の改行は可能ですか?  例えば文章を書くところに下線(横)があり、文章を書いていくと、縦線にぶつかるので、それ以上は次のセルに自動的に改行がされないと思うのですが・・ 文章を更正する場合エクセルでやる場合には、切り取り、貼り付け等でやらざるを得ないのでしょうか?線がある場合にはエクセルでは対応ができないのでしょうか? 

  • エクセル マクロ オートシェイプ 縦線

    エクセルのマクロで,以下の条件でオートシェイプの縦線を引きたいと思っています。 条件(1) 縦線を引く範囲は,セルを選択している範囲(任意)の中央を通るようにしたいです。 条件(2) 縦線の太さは一番細い線,色は赤色です。 なお,条件(2)の線の太さ,線の色は,マクロのどの部分を変更すればよいのかもご教授いただけるとありがたいです。 どうぞよろしくお願いいたします。

  • excel vba 遅延のソースゴード

    excel vba で動作させたものを動作の遅延をさせたいのですが、本コーナーで教えて頂いた下記の コードをどの様に使えばいいのでしょうか。 Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub Sample()   Range("A1") = 0   For i = 1 To 10     Sleep 500 '500msec(0.5秒)待機     Range("A1") = i   Next i End Sub ーーーーーーーーーーーーーーーーーー (bf38:bn38)を赤  (bo38:by38)を緑にします。この動作を赤から緑になるまでに少し遅延させたいのです。mt2008さんに教えて頂きましたが解決できませんでした。継続して再質問させていただきたかったのですが、方法がわかりませんでしたので、このような形になりましたお許し下さい。 Range("BF38:Bn38").Select With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 3 End With Range("Bo38:By38").Select With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 4 End With End Sub

  • エクセルで下線を二重線にするには?

    毎度お世話になっております。 今回質問したいのは エクセルで下線を引きたいのですが、その線を 二重線にしたいのです。 一本線は引けるのですが、二重に引くツールや オプションが見当たりません。 ヘルプをみてもそれらしい回答が得られませんでした。 (ちなみにこれまではまずふつうに一本線をひいて、 その下のセルに線だけを書いてセルの間隔を狭めて えせ二重線を引いていました・・・) どうかご存知の方、お知恵をお貸しください。 お願いいたします。

  • VB2010でExcel罫線

    VB初心者です。 VB2010からExcel操作をして帳票印刷をするコードを考えています。 色々調べた結果、下記のようなコードに行き着きました。 (その他のExcel操作コード) '罫線設定 Dim xlBorders As Excel.Borders Dim xlBorder As Excel.Border xlBorders = xlSheet.Range(xlCells(2, 5), xlCells(3, 20)).Borders xlBorder = xlBorders(Excel.XlBordersIndex.xlEdgeBottom) xlBorders.LineStyle = Excel.XlLineStyle.xlDouble xlSheets.PrintOut() If Not xlBorder Is Nothing Then System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBorder) If Not xlBorders Is Nothing Then System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBorders) (その他のExcel開放コード) このままですと選択された範囲全てのセルが格子状に二重線になってしまいます。 選択範囲の下辺のみ罫線を引くのはどの様にしたらいいでしょうか? またこの罫線コードを追加すると『EXCEL.EXE』がプロセスに残ってしまいます。 この2点ご教授お願いします。

  • エクセルVBA 行列の数を指定して罫線を引くマクロ教えてください

    下のようにSheet1に罫線を引く「開始セル(左右端)」「行」「列」が書いてあります。 この条件で罫線をSheet2に引くようにしたいのですが、変数の設定の仕方などが分かっていないようで、できません。教えていただけないでしょうか。マクロの記録をとったところ、下のようになりました。よろしくお願いします。 開始セル Sheet2!A1・・・Sheet1のB1セル 行 8・・・Sheet1のB2セル 列 2・・・Sheet1のB3セル Sub borders() Range("A1:B8").Select Selection.borders(xlDiagonalDown).LineStyle = xlNone Selection.borders(xlDiagonalUp).LineStyle = xlNone With Selection.borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.borders(xlEdgeTop) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.borders(xlInsideVertical) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.borders(xlInsideHorizontal) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With End Sub