![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?a65a0e2)
VBAでセルの罫線の引き方が分からず、相談させてください。
売上や案件などを月ごとにシートを分けて管理しています。
データ入力する際に空白行が無くなった場合、自動で空白行を挿入するようコードを組みました。
しかし以下のコードが実行された時、空白行は追加されるのですが罫線や書式などがリセットされてしまいます。
.Borders等で罫線が引けることは調べて分かったのですが、その部分のコードの書き方がわかりません。
Target.Rowで空白行の追加された行番号を取得するのか、それとも他に方法があるのか・・・
ご教示いただけますと幸いです。よろしくお願い致します。
【自動で空白行を追加するコード】
'セルにデータ入力時の処理
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'シート名に"月"が含まれるシートの場合の処理
If InStr(ActiveSheet.Name, "月") >= 1 Then
'セルに"COUNT"関数が含まれている場合の処理
If InStr(ActiveCell.Formula, "COUNT") > 0 Then
'空白行を追加する
Target.Offset(1).EntireRow.Insert Shift:=xlDown
End If
Else
'シート名に"月"が含まれないシートの場合
Exit Sub '何もせず
End If
End Sub
No.3ベストアンサー
- 回答日時:
こんばんは
複数のシートで行いたいと言う事なのでしょうか、
Workbook_SheetChange を使われたのですね
ActiveCellを使われているようですが、Enterキーの移動設定や範囲選択での入力時に上手くいかない可能性があるのではないでしょうか
Targetを基準にOffsetで数式セルを特定する方が安全かも知れません。。
安全と言いますと・・付け加えますがChangeなので
個別シートのイベント抑制も考慮して
Application.EnableEvents などを設定しておく必要があると思います。
コードについては#1様の案が良いと思いますが・・罫線は問題ですね
ちょっと試しに書いて見ますが・・不十分ですかね
新たな実行の条件は入力セルの空白に囲まれた範囲が表の列範囲をカバーしている事です・・上のセル範囲が詰まっていれば良いことになりますが、どうでしょう?
可変でなければ、指定してしまう事で回避できますが複数シートで多分条件が違うかな・・
一例 (色など不十分かな)
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim b As Object, lCol As Long
'シート名に"月"が含まれるシートの場合の処理
If InStr(Sh.Name, "月") >= 1 Then
'セルに"COUNT"関数が含まれている場合の処理
If InStr(Target(1).Offset(1).Formula, "COUNT") > 0 Then
Application.EnableEvents = False
'CurrentRegionのカラム範囲№を取得
lCol = Target(1).CurrentRegion.Item(1).Column
'罫線の取得
Set b = Target(1).Borders(xlEdgeTop)
'行をコピー
Target.EntireRow.Copy
'コピー行を追加する
Target.Offset(1).EntireRow.Insert Shift:=xlDown
'値をクリアー
Target.Offset(1).EntireRow.ClearContents
'罫線の設定(可変列範囲・・列№を指定すれば解り易い
'Target(1).Offset(1, lCol - Target(1).Column) 新規に挿入された行の表下一番左のセル
'Resize(1, Target(1).CurrentRegion.Columns.Count) CurrentRegionの列数で拡張
With Target(1).Offset(1, lCol - Target(1).Column).Resize(1, Target(1).CurrentRegion.Columns.Count)
.Borders(xlEdgeTop).LineStyle = b.LineStyle
.Borders(xlEdgeTop).Weight = b.Weight
Set b = Nothing
End With
Application.EnableEvents = True
End If
Else
'シート名に"月"が含まれないシートの場合
Exit Sub '何もせず
End If
End Sub
ご回答ありがとうございます。
Application.EnableEventsの設定は仰る通り、設定したほうがいいと感じました。
私の記載したコードですと色々足らなすぎるようで、とんでもなく行がコピーされたりしていたので・・・
Qchan1962様の記載いただきましたコードを基に、肉付けをしていこうと思います!
試しに動かしている状態ですが、何も問題もなくやりたいことができているので、ほとんど完璧だと思います!
ありがとうございました!
No.2
- 回答日時:
こんにちは。
テーブルに変換してしまった方がデータ追加に際して書式設定や関数の引き継ぎをコードレスでできると思いますよ。
Youtube で excel テーブル を調べてみて。
ソースにあるように条件がある場合は、本回答はスルーして下さい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/02/02 09:25
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Excel(エクセル) エクセルのイベントプロシージャーでF列の最終行のセルの入力をトリガーにしたいのですが 1 2022/10/14 09:36
- Excel(エクセル) エクセルのイベントVBAを複数のシートで動かしたい 1 2022/12/07 16:55
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの条件付き書式設定の太い...
-
Excelの外枠太罫線を2~3倍さ...
-
エクセルで文字を入力すると罫...
-
エクセルで罫線も一緒に並び替...
-
EXCELで、下線の太さを変...
-
excel2003 罫線だけを保護したい
-
EXCELのオートフィルタで罫線が...
-
罫線の色を薄くしたい
-
パワーポイントで、表の一部を...
-
【エクセル】謎の枠線の消し方
-
エクセルのアンダーラインについて
-
エクセル 入力されていない線...
-
エクセル
-
<EXCEL>ページ最後の行の罫線...
-
エクセル の縦線
-
エクセルの罫線の表、点線を実...
-
WORDで点線が実線に変換されて...
-
罫線が引かれているセルの個数...
-
エクセル 罫線入りの文字 文...
-
Excelでアンダーラインに文字が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの外枠太罫線を2~3倍さ...
-
Excelの条件付き書式設定の太い...
-
excel2003 罫線だけを保護したい
-
EXCELで、下線の太さを変...
-
エクセルで文字を入力すると罫...
-
罫線の色を薄くしたい
-
エクセルで罫線も一緒に並び替...
-
【エクセル】謎の枠線の消し方
-
エクセル 入力されていない線...
-
パワーポイントで、表の一部を...
-
エクセルのアンダーラインについて
-
決まった罫線のなかで、文章入...
-
EXCELのオートフィルタで罫線が...
-
エクセル の縦線
-
エクセル
-
罫線が引かれているセルの個数...
-
エクセル表の罫線(縦)が消せ...
-
Wordで表のセル幅を超えたら次...
-
勝手に背景に色が付いて困っ...
-
罫線の色をまとめて変更する
おすすめ情報