|
|
| Excel VBA Macro ・ セル制御 ・ FAQ |
|
罫線を引くとエラーが出るが?
|
|
|
|
Question 26.1 |
|
 |
 |
|
|
マクロを作成する際には、いつも参考にさせて頂いております。
本当に感謝しています。初心者の私でも解かり易く、重宝しています。
【質問】 罫線をひく簡単なマクロを作成しているのですが、解からない事があります。
線種の選択をメニューに入れて選択した線種で、
[Cntl]+[→]で罫線引きし、[Shift]+[→]で罫線を消すようなマクロなのですが、
太線(Weight=xlMedium),2重線(LineStyle=xlDouble)でエラーがでます。
その他の、細線,点線は問題ないのですが・・・ Excel2000を使っています
もし、よろしければご回答頂きたくよろしくお願い致します。
今後も、解かり易いマクロ集の更新に期待しております。
|
|
Answer |
Copyright (C) 2000.2.25 永井善王 |
|
|
矢印キーで罫線を引く便利なマクロを、作成されているようですね。ご質問の「罫線」とは、ワークシートのセルの書式設定の罫線のこととして、回答を進めます。
太線と2重線がうまく引けないということですので、LineStyleプロパティと Weightプロパティの定数を、下表にまとめてみました。
Excel2000で、LineStyleを xlDoubleと設定するのは、14番の2重線だけですが、Weightを xlMediumと設定するのは、8番〜12番の5種類の罫線があります。
|
| 罫線の種類 |
【Excel2000,98,97】 プロパティの定数 |
【Excel95】 プロパティの定数 |
| LineStyle |
Weight |
Weight (−は使えない) |
| 1 |
なし |
xlNone |
(設定不要) |
xlNone |
| 2 |
 |
xlContinuous |
xlHairline |
xlHairline |
| 3 |
 |
xlDot |
xlThin |
xlDot |
| 4 |
 |
xlDashDotDot |
xlThin |
− |
| 5 |
 |
xlDashDot |
xlThin |
− |
| 6 |
 |
xlDash |
xlThin |
xlDash |
| 7 |
 |
xlContinuous |
xlThin |
xlThin |
| 8 |
 |
xlDashDotDot |
xlMedium |
− |
| 9 |
 |
xlSlantDashDot |
xlMedium |
− |
| 10 |
 |
xlDashDot |
xlMedium |
− |
| 11 |
 |
xlDash |
xlMedium |
− |
| 12 |
 |
xlContinuous |
xlMedium |
xlMedium |
| 13 |
 |
xlContinuous |
xlThick |
xlThick |
| 14 |
 |
xlDouble |
xlThick |
xlDouble |
|
罫線を引くためのマクロの書き方は、Excel2000、98、97では、例えば 14番の2重線の場合、次とおりです。
( Excel95での書き方を知りたければ こちら )
'===================================================================================
Sub セルの下辺に2重線を引く()
Selection.Borders(xlEdgeBottom).LineStyle = xlDouble
Selection.Borders(xlEdgeBottom).Weight = xlThick
End Sub
'===================================================================================
ご質問では、「2重線(LineStyle=xlDouble)でエラー」とあるだけで、Weightプロパティをどう設定したか書かれていません。
しかし、「細線、点線は問題ない」とのことなので、この点の誤りはなかったとして、回答を進めます。
上記のマクロでは2重線しか引けませんね。「選択した線種」で引いたり消したりするマクロということですので、
LineStyleプロパティと Weightプロパティの値を、変数で設定するように書くと能率的です。 つまり、
'===================================================================================
Sub 選択された線種でセルの下辺に罫線を引く()
Selection.Borders(xlEdgeBottom).LineStyle = スタイル
Selection.Borders(xlEdgeBottom).Weight = 太さ
End Sub
'===================================================================================
というような書き方になるでしょう。
そして当然、このサブプロシージャーより前に、それぞれの変数にプロパテイの値または、定数を設定する次のようなマクロが、あるはずです。
'===================================================================================
Sub 二重線のプロパテイの定数を設定する()
スタイル = xlDouble
太さ = xlThick
End Sub
'===================================================================================
ご質問の文章によると、太線、2重線、細線、点線の、少なくとも 4種類は選択できるようなので、上のようなマクロが 4つ以上あると思われます。
さあ、ここからが注意点です。
「スタイル」変数と 「太さ」変数を、異なるサブプロシージャーで共通して使うためには、変数を宣言しておく方法が一般的ですから、
次のようなマクロコードがあると思います。
Dim スタイル As Variant
Dim 太さ As Long
LineStyleプロパティはバリアント型の値を使用するので、「スタイル」変数は As Variant、
Weightプロパティは長整数型の値を使用するので、「太さ」変数は As Long と書きます。
よって、As String と書いて実行すると、「実行時エラー '1004': Border クラスの LineStyle プロパティを設定できません。」のエラーが出る場合があるでしょう。 このエラーメッセージの意味は、もう、理解できますね。修正してから試してみてください。 ご成功を祈ります。
|
|
|
|
| |
|
|