- ベストアンサー
Excelの出力について
VB6を使用しています。 Excelに出力するときにあるセルの部分を 線を太くしたいのですがどういうコードを書けばいいのですか? ヘルプを見ると Borders(xlEdgeBottom).Color = RGB(255, 0, 0) これだと下線を赤色にするってことみたいなんですが、 xlEdgeBottom←これが下線を表すなら 上線は?右の縦線は?左の縦線は?なんて書けばいいのでしょうか? 初心者のなので親切丁寧な回答をお願いします。
- moshamosha
- お礼率21% (37/169)
- Visual Basic
- 回答数4
- ありがとう数0
- みんなの回答 (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)
シート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)
上 … xlEdgeTop 下 … xlEdgeBottom 左 … xlEdgeLeft 右 … xlEdgeRight 「マクロの記録」を実行して、セルの詳細設定→罫線で プリセットを外枠にして決定して記録を終了して記録された マクロを見るとかすれば、望む記述がわかりますよ。
- todo36
- ベストアンサー率58% (728/1234)
Excelで"新しいマクロの記録"をしてみれば、分かると思います。
関連するQ&A
- 今まで使えていたコードがいきなり使えなくなった
今まで使えていたコードがいきなり使えなくなったのですがどうしてでしょうか? コードは With Rows(100).Borders(xlEdgeBottom) .LineStyle = xlContinuous '下に線を引く .Color = 39423 End With です。 .LineStyle = xlContinuous '下に線を引く これでエラーになります。 実行時エラー1004です。 エクセルのバージョンは2010です。
- ベストアンサー
- オフィス系ソフト
- 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 - - - - - - - - - - - - -
- ベストアンサー
- その他MS Office製品
- エクセル:シートを切り替えずに別シート上の操作をする
タイトルが正しいかどうか疑問ですが。 シート[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(エクセル)
- 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
- ベストアンサー
- Excel(エクセル)
- エクセルで下線を二重線にするには?
毎度お世話になっております。 今回質問したいのは エクセルで下線を引きたいのですが、その線を 二重線にしたいのです。 一本線は引けるのですが、二重に引くツールや オプションが見当たりません。 ヘルプをみてもそれらしい回答が得られませんでした。 (ちなみにこれまではまずふつうに一本線をひいて、 その下のセルに線だけを書いてセルの間隔を狭めて えせ二重線を引いていました・・・) どうかご存知の方、お知恵をお貸しください。 お願いいたします。
- ベストアンサー
- オフィス系ソフト
- 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点ご教授お願いします。
- ベストアンサー
- Visual Basic
- エクセル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
- ベストアンサー
- オフィス系ソフト