初めて投稿させて頂きます。
似たような投稿がありましたが、過去の例とは若干違うので投稿させて頂きました。
Excel2007で罫線を引く下記の手順で処理を実行した所
実行時エラー '1004':
Border クラスの LineStyle プロパティを設定できません。
というエラーが発生してしまいます。
色々調査を行ってはみたのですが、具体的な解決策が見つかっておらず、
Excel2007のバグではないかと思って来ています・・・
解決策をご存知の方いらしゃったら、回答宜しくお願い致します。
再現手順 :
1.新規のBookに下記のマクロを設定してファイルを保存→閉じる
2.保存したファイルを開き直してマクロの実行→保存→閉じる
3.再度2を実行
4.再度2を実行→下記マクロの※1でエラー発生!!!
マクロ :
Private Sub Workbook_Open()
' 1.セルA1:E11を選択して選択したセルの内部縦線を点線にする。
Range(Cells(1, 1), Cells(11, 5)).Select
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous '※1
.Weight = xlHairline
End With
' 2.セルE1:E11を選択して選択したセルの左部縦線を実践にする。
Range(Cells(1, 5), Cells(11, 5)).Select
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
End With
End Sub
※上記1と2の間に別処理が入る為、セルA1:D11と選択し、
右部縦線を実線にするという事は出来ません。
補足 :
1.Excel2007 SP2,Microsoft Visual Basic 6.5を使用
2.Excel2002 SP3だとエラーは発生しない
3.シートの保護等は行っていない
4.再現手順の3を実行中、Bookを閉じる前はセルの書式設定が反応するが、
マクロを無効にして、再度開き直すとセルの書式設定が反応しなくなる。
5.Workbook_Openの代わりにWorkbook_BeforeSaveで同様のマクロを設定し、
何度Saveを実行してもエラーにならない。
(再度開き直して、Saveを行うと同様のエラーが発生する。)
以上の事から、実線→点線→実線と繰り返した後に、Bookを閉じると
セルがおかしくなってしまっているのかなと思います。
長々と書いてしまい申し訳ありませが、もしかしたら・・・
という回答でも構いませんので、回答宜しくお願い致します。
No.4ベストアンサー
- 回答日時:
こんにちは。
With Range("A1:E11").Borders(xlInsideVertical)
.LineStyle = xlNone
End With
なるほどね。こちらとしては、罫線も書式ですから、ShapeのLineのように上書きされるわけではないはずですけれど・・・。それとも、xlInsideVertical が問題なのでしょうか?
どうも割り切れているわけではないのですが、オブジェクト自体が安定していないのでしょうか。同様のエラーとしては、ピボットテーブルの更新でも発生するようですが、どうも私としては分かりませんでしたね。お役に立てずにすみませんでした。
お疲れ様です。
そうなんですよね。
結局私もすっきりはしていないのですが、やはりxlInsideVerticalが悪さしてそうですね。
いえいえ色々参考にさせて頂きました。
大変感謝しています。
ひとまず、回答は締め切らせて頂きます。
また機会があったら、宜しくお願い致します。
No.3
- 回答日時:
こんばんは。
海外の掲示板を検索してみると、同じようなエラーが、Excel 2007 で発生しているようです。マイクロソフト・サポートにはまだ出ていませんでした。ただ、私が読んだ限りでは、どこにも解決が出ていないようですが、ちょっと発想の転換をしてみました。一度、試してみてください。
その根拠は、単独で、xlInsideVertical を使用するとエラーを発生させる原因がある可能性があるからです。いずれ、この件は、Microsoft 側からはっきりすると思います。
なお、こちらではExcel 2007 で試してみましたが、エラーが発生しておりません。
'-------------------------------------------
Private Sub Workbook_Open()
Dim cl As Variant
Dim wt As Integer
For Each cl In Worksheets("Sheet1").Range("B1:E11").Columns
If cl.Column = 5 Then
wt = 2
Else
wt = 1
End If
With cl.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = wt
End With
Next cl
End Sub
度々ありがとうございます。
回答遅くなってしまい、申し訳ありません。
海外の掲示板までは検索していませんでした。
これからの参考にさせて頂きます。
そこまでして頂き、ありがとうございます。
やはりExcel2007のバグっぽいですか・・・
早くサポートされると嬉しいですね。
こちらでも今日色々試してみたのですが、以下のように一度線を消すという処理を入れると
エラーが発生しなくなりました。
ひとまず、この方法でやってみたいと思います。
Private Sub Workbook_Open()
Worksheets("Sheet1").Select
With Range("A1:E11").Borders(xlInsideVertical)
.LineStyle = xlNone
End With
With Range("A1:E11").Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlHairline
End With
With Range("E1:E11").Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
End With
End Sub
丁寧に回答して頂きありがとうございました。
No.2
- 回答日時:
こんにちは。
>コマンドボタンをSheet上に作成し、標準モジュール上で
>処理を行おうとしても、"保存→Bookを閉じる"という動作を行うと同じエラーが発生
なぜ、同じエラーが発生するのか良く分かりません。少なくとも、「保存→Bookを閉じる」というCommandButtonと、保存時のイベント(BeforeSave)とは関係ないのではありませんか?
私は、Openイベントの中身を、Call で、標準モジュールのマクロを呼び出すものというように考えていました。
ただ、一般論ですが、バージョンの違いでエラーが発生する場合は、以下のような対処をします。実際に、私は、Borders の引数は、長くこのように書いています。決して、臨時の書き方ではありません。
これでダメだったら、Workbook_Open()の下に、Stop と書いて、ステップモードにして、どの部分でエラーが発生する箇所を調べてみてください。
ところで、新規のブックにも同様になりますか?
これで原因が追求できないようですと、Class モジュールを使わなくてはならないと思います。(不確かですが、Micorosoft サポートにあったような気がします。)
'-------------------------------------------
Private Sub Workbook_Open()
Worksheets("Sheet1").Select
With Range("A1:E11").Borders(11)
.LineStyle = 1
.Weight = 1
End With
With Range("E1:E11").Borders(7)
.LineStyle = 1
.Weight = 2
End With
End Sub
再び回答ありがとうございます。
伝え方が下手ですいません。
CommandButtonの操作で行っているのは、Wendy02さんに記述していただいた
Worksheets("Sheet1").Select
With Range("A1:E11").Borders(11)
.LineStyle = xlContinuous
.Weight = xlHairline
End With
With Range("E1:E11").Borders(7)
.LineStyle = xlContinuous
.Weight = xlThin
End With
のみしか行っていないです。
CommandButtonの操作以外にはマクロを何も設定しない状態です。
CommandButtonのマクロを2回以上実行後に「保存→Bookを閉じる」を行うという事です。
LineStyle、Weightの指定に数字を使うのも試してましたが、駄目でした。
エラーになる箇所は、質問の所にも記入しましたが
With Range("A1:E11").Borders(11)
.LineStyle = xlContinuous
になります。
※新規のブックでも同様にエラーになります。
試して頂ければ再現できると思います。(何台かのPCで再現しているので)
Micorosoft サポートのClass モジュールについてはちょっと調べてみたいと思います。
ありがとうございます。
又何か分かる事があれば、回答お願い致します。
No.1
- 回答日時:
こんにちは。
まず、エラーそのものとは関係のないところから指摘します。
>実線→点線→実線と繰り返した後に、
どうみても、何度も繰り返すようなマクロではないような気がします。なぜ、Workbook_Open()イベントに登録したのでしょうか?一旦、罫線を引いたら、それでおしまいではないでしょうか?その罫線がないときに、罫線を引くということですが、Workbook_Open()イベントではなく、一般マクロにしたほうがよいのではありませんか?
Workbook_Open()イベントは、ローカルマクロ(特定のブックのみに適用される)ものですから、そのコードの中身自体は、「標準モジュール」に適しているとは思います。
ただ、書かれていない部分にエラーの原因があるかもしれませんが、現在のマクロに適用するものとして、書き換えてみました。たぶん、Range オブジェクトが正しく取れていないから、Border クラスのエラーが出たのではないか、と考えました。
'-------------------------------------------
Private Sub Workbook_Open()
Worksheets("Sheet1").Select
With Range("A1:E11").Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlHairline
End With
With Range("E1:E11").Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
End With
End Sub
回答ありがとうございます。
説明不足で申し訳ありません。
Workbook_Open()イベントで行っている理由は、Bookを閉じる際には罫線を引く列が増えている可能性があり、
Bookを開いた際に線を綺麗に引き直したい為、Workbook_Open()イベントで処理を行うようにしています。
(実際にはA1:E11,E1:E11という箇所には変数【セルから取得】が設定されており、Bookを開く度に値が変わります。)
ただ今回は書かれていない部分に関係なく、掲載したマクロのみでも事象を再現出来るので、その辺りを省略してしまいました。
Wendy02さんに修正して頂いたマクロのみでもやはり、同じエラーが発生してしまいます。
ちなみにご指摘頂いた様に、コマンドボタンをSheet上に作成し、標準モジュール上で
処理を行おうとしても、"保存→Bookを閉じる"という動作を行うと同じエラーが発生します。
(ボタンを2回以上押して"保存→Bookを閉じる"という動作を行い、Bookを開き直しボタンを押すとエラー)
何か他に考えられる原因はあるでしょうか・・・?
もし何か分かったら回答お願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/02/07 09:58
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/10 14:24
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- Visual Basic(VBA) エクセルのマクロとシートの保護について教えてください。 1 2022/10/18 08:36
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/26 13:19
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
BorderクラスのLinestyleプロパティを設定できません
PowerPoint(パワーポイント)
-
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
EXCELのVBAでRange(A1:C4")を変数にする方法を教え"
Visual Basic(VBA)
-
-
4
excel:条件付き書式の適用範囲が変わる
Excel(エクセル)
-
5
斜め罫線の判定 ExcelVBA
Excel(エクセル)
-
6
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
7
Excelの条件付き書式設定の太い罫線
Excel(エクセル)
-
8
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
9
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
10
VBA ユーザーフォームのChangeイベントを停止したい
Access(アクセス)
-
11
マクロ実行時、ユーザーフォームにラベルのテキストが表示されません。
Access(アクセス)
-
12
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
13
VBA ソートすると、1、11、2,3になって・・
Excel(エクセル)
-
14
VBA 数値を文字列として貼付したい
Excel(エクセル)
-
15
マクロの「Rangeメソッドは失敗しました’Globalオブジェクト」エラーの解決方法について
Excel(エクセル)
-
16
Rangeメソッドは失敗しました。globalオブジェクトについて
Excel(エクセル)
-
17
VBA シートをコピーする際に Copyメソッドは失敗しましたのエラーが出てしまいます
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
エクセルエラー13型が一致しま...
-
実行時エラー3001「引数が間違...
-
ExcelVBA Range クラスの Page...
-
なぜこんな初歩的なVBAのIf文で...
-
ACCESSのエラーで困っています
-
VBAがブレークモードになっ...
-
Application.ActiveInspectorで...
-
職場から目的地までの距離集計
-
VBS実行時エラー オブジェクト...
-
DataGridView からの値取得に関...
-
Excel2019 ワークシートのコピ...
-
VB6+SQL サーバー 2000 で 実行...
-
Outlook.ApplicationをCreateOb...
-
VBAでのエラー
-
ASP.NET OleDbConnectionが定義...
-
Access マクロでのテーブル削除
-
一般ODBCエラーについて
-
日本語環境下で作成したマクロ...
-
【Excel VBA】マクロをボタンに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
エクセルエラー13型が一致しま...
-
【Excel VBA】マクロをボタンに...
-
VBAでのエラー
-
マクロについて教えてください...
-
なぜこんな初歩的なVBAのIf文で...
-
VBAがブレークモードになっ...
-
実行時エラー3001「引数が間違...
-
ExcelVBA Range クラスの Page...
-
VBS実行時エラー オブジェクト...
-
EXCEL VBAマクロ中断でデバッグ...
-
Outlook.ApplicationをCreateOb...
-
VBSで変数の宣言はできないので...
-
VBAのコードがエラーになっ...
-
実行時エラー -'-2147417848
-
ADODB.Streamを使用してUTF-8を...
-
EXCEL/VBAで、自分のPCだけエラ...
-
OLEDB.NETで接続できない
-
プロシージャ名の取得
-
VB6+SQL サーバー 2000 で 実行...
おすすめ情報