いつもお世話になっております。
罫線を1行づつ引く場合、とても時間がかかります。
なにか良い方法はないでしょうか。
ScreenUpdatingを使ってはいるのですが、
1行づつの処理が見えてしまいます。
(selectしている時点で、ダメなのでしょうか)
何か良い方法をご存知でしたら、ご教授いただきたく、
よろしくお願い致します。
下記に私のつたないソースを記入します。
Function kei07_縦中央線削除 _
(file_name, sh_name, f_gyo, e_gyo, f_retu, e_retu)
Application.ScreenUpdating = False
back_file_name = ActiveWorkbook.Name
back_sh_name = ActiveSheet.Name
Workbooks(file_name).Activate
Worksheets(sh_name).Select
Range(Cells(f_gyo, f_retu), Cells(e_gyo, e_retu)).Select
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Cells(e_gyo + 1, f_retu).Select
Workbooks(back_file_name).Activate
Worksheets(back_sh_name).Select
Application.ScreenUpdating = True
End Function
No.5
- 回答日時:
>罫線を1行づつ引く場合、とても時間がかかります
Range(Cells(f_gyo, f_retu), Cells(e_gyo, e_retu)).Select
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
は、書いた罫線を消しているのでは。
又罫線を1行ずつ引く(消す)イメージの処理ではない。コードは、セル範囲を指定して抹消しているでしょう。
10000行x10列ぐらいでマス目罫線を引いて、下記を実行すると、一瞬で終わりましたが。
Application.ScreenUpdating = Falseも入れていません。
Sub test01()
Range(Cells(2, 2), Cells(10000, 10)).Borders(xlInsideHorizontal).LineStyle = xlNone
End Sub
またなぜ一旦書いた、横罫線を抹消する作業をするのか判らない。
何か外の原因で遅くなっているのでは。それを質問だけからは難しいと思うが。
>Function名で縦中央線削除 とあるが
>(xlInsideHorizontalだと横罫線が削除されるようだが。
ご回答ありがとうございました。
ご指摘どおり、function名も変ですし、
書いている内容とPGも違いますね。
すみません。
同じような1行1行条件によって線をつける処理を
しているところもあり、また、縦線を消す処理もあったので、
色々なことがごちゃ混ぜになってしまいました。
すみません。
ご回答ありがとうございました。
No.4
- 回答日時:
答えを貰うまでは「そんなのできない」と逃げる割に何をしているのかの情報は出さない,後出しでダメだしだけが得意な解決の難しいご相談です。
>1行づつの処理が見えてしまいます。
というお話の様子から,遅さの原因(ボトルネック)はご質問で掲示されたFunctionとは違う部分,この関数を呼び出している元のループ部分にある様子に思われます。掲示されたマクロも,「そこまで」処理を重くする要因は見あたりません。(あちこちselectしたりactivateしたりとかはあるにしても,です)
また,処理の対象となっているシートに何か別のイベントプロシジャを仕込んでいるなどで,そちらが割り込んで遅くなっているような状況も考えられます。
とりあえず最初の手として,掲示されたFunctionの中で行っている全てのアクションをコメントアウトして「全く何もしない」Functionにしてしまい,呼び出し元を実行してこの関数によってどれだけ遅くなっている(何もしないとどれだけ早くなる)か,まず確認してみてはいかがでしょう。
参考に:
条件付き書式でも,単に使い方に慣れていないだけで問題なく作成できそうに思われますが,まぁマクロでゴリゴリやりたいご希望なら勿論それはあなたのやりたいようになさって頂いて構いません。
ご回答ありがとうございます。
確認等行います。
条件付書式についてのよく知らないのに、
マクロでと言ってしまったこと、すみませんでした。
今から、条件付書式で行えるか、
やってみようと思います。
ありがとうございました。
No.3
- 回答日時:
遅いのは「マクロ自体を繰り返す」事に問題があるんであって、この処理そのものには「これ以上大きく処理速度を上げる要素」は無いです。
Range(Cells(f_gyo, f_retu), Cells(e_gyo, e_retu)).Select
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
Cells(e_gyo + 1, f_retu).Select
要は、この部分を例えばFOR-NEXTでくくって
FOR i = 1 TO 10
Range(Cells(i, f_retu), Cells(i, e_retu)).Select
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
NEXT
と言う風にループで回すか、
Range(Cells(f_gyo, f_retu), Cells(f_gyo + 10, e_retu)).Select
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
と言う風に一気に全行を選択して罫線を引くかすればいい、という話です。
すいませんが、コードの確認テストはしていません。動かない時はごめんなさい。
ご回答ありがとうございます。
やはり、処理速度を速めるのは難しそうです。
前の行と比較したりして、線をつけたり
消したりしなければならないため、
一気に選択をしたり、同じLOOPを回したりは
不可能なんです。
ご回答ありがとうございました。
No.2
- 回答日時:
selectせずに試してみるのが一番最初かと思います
Worksheets(sh_name).Range(Cells(f_gyo,f_retu),Cells(e_gyo,e_retu)).Borders(xlInsideHorizontal).LineStyle=xlNone
のように繋げることも可能だと思います
あとはそのシートを不可視にする事も出来ます
worksheet(sh_name).visible=false
こうすれば処理が見える事はありません
ご回答ありがとうございます。
早速やってみましたが、
処理時間は同じでした。
見え方も同じでした。
visible=falseにしても不安な時間を過ごすように
なるため、どうしようか悩み中です。
No.1
- 回答日時:
マクロを使わず,条件付き書式で作成してください。
「中央線」と無理にこだわらず,各列ごと右(または左)の縦線を無しにするか,若しくは最初から表の全域の縦線を無しにしておいて「右(もしくは左)縦線のあるべき列」だけ条件付き書式でその縦線を表示させるように仕込んだ方が多分簡単です。
この回答への補足
ご回答ありがとうございます。
以下の観点などから、マクロで行わなければいけません。
(1)行数・列が確定していない
(2)条件が複雑
(3)マクロの一部で使われるfunction
説明不足ですみません。
よろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) 日付を重複させずに数えたい 4 2022/12/04 16:26
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- JavaScript 電車の運賃を出すプログラムを作っています。 2 2022/06/22 09:36
- JavaScript JavascriptからSQLへ繋ぎ方が分からない 3 2022/07/07 00:27
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
EXCEL VBA マクロ 実行する度に処理速度がどんどん遅くなる原因が知りたい
Excel(エクセル)
-
エクセルVBA 配列からセルに「関数式」を一気代入したい
Visual Basic(VBA)
-
VBA public変数はどのようなことをしたら解放されますか?
Visual Basic(VBA)
-
-
4
Excelの条件付き書式設定の太い罫線
Excel(エクセル)
-
5
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
6
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
7
Changeイベントでの複数セルのクリアの処理について
Visual Basic(VBA)
-
8
Application.Runエラー(1004)
Excel(エクセル)
-
9
ExcelVBAで質問です。離れた二次元配列を一つにしたい
Visual Basic(VBA)
-
10
DATE型変数を初期化する方法
Visual Basic(VBA)
-
11
VBAでの結合セルのコピー&ペースト
Excel(エクセル)
-
12
エクセルVBAのEntireRow.Hiddenをスピードアップしたいのですが・・・。
Excel(エクセル)
-
13
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
14
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
15
Excelでのセル内容の高速消去方法
その他(プログラミング・Web制作)
-
16
エクセルのマクロで結合セルに値を貼り付けたい
Excel(エクセル)
-
17
VBA ユーザーフォームのChangeイベントを停止したい
Access(アクセス)
-
18
Excelでの罫線のみのコピーについて
Excel(エクセル)
-
19
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
20
【EXCEL VBA】Range(A:A").Find(What:="キーワード")の1行目について"
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル、ページをまたがった...
-
ワードの文章囲み枠(?)を消...
-
wordで罫線が引けない・・・
-
ワードの表の罫線が見えるけど...
-
パワーポイントの表
-
ワードで勝手に点線ラインがでる
-
PDFファイルの罫線を消す方法
-
2段組みで左右別々に書き込め...
-
エクセル 罫線の色が変えられ...
-
WORD- - - - -点線が消えません
-
PowerPointの表の罫線を二重罫...
-
Wordで左右に分割
-
改行した時に罫線を越えたい
-
罫線を引いて保存しても消えて...
-
エクセル 2010 ピボットテーブ...
-
ワードで既に書かれた罫線の太...
-
(Word)点線枠の消し方を教えて...
-
【Excel】デフォルトの罫線の色...
-
表の罫線の一部を破線にしたい...
-
回覧板
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル、ページをまたがった...
-
ワードの文章囲み枠(?)を消...
-
wordで罫線が引けない・・・
-
ワードで勝手に点線ラインがでる
-
パワーポイントの表
-
PDFファイルの罫線を消す方法
-
PowerPointの表の罫線を二重罫...
-
ワードの表の罫線が見えるけど...
-
エクセル 罫線の色が変えられ...
-
Excelの表をWordにリンク...
-
回覧板
-
2段組みで左右別々に書き込め...
-
エクセルの表をワードに貼り付...
-
罫線を引いて保存しても消えて...
-
(Word)点線枠の消し方を教えて...
-
WORD- - - - -点線が消えません
-
WORD文書の青い枠線を消したい
-
オプションボタンの背景を透明...
-
Wordで左右に分割
-
エクセル 2010 ピボットテーブ...
おすすめ情報