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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの条件付き書式設定の太い...
-
Excelの外枠太罫線を2~3倍さ...
-
エクセルで罫線も一緒に並び替...
-
excel2003 罫線だけを保護したい
-
罫線の色を薄くしたい
-
EXCELで、下線の太さを変...
-
パワーポイントで、表の一部を...
-
エクセル
-
エクセルのアンダーラインについて
-
エクセル の縦線
-
エクセルでデータがある部分だ...
-
罫線が引かれているセルの個数...
-
【エクセル】謎の枠線の消し方
-
エクセルでセルに入力している...
-
エクセルで文字を入力すると罫...
-
EXCELのオートフィルタで罫線が...
-
エクセル表の罫線(縦)が消せ...
-
Excelでアンダーラインに文字が...
-
エクセルで作った図を180度回転...
-
エクセル 罫線入りの文字 文...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの条件付き書式設定の太い...
-
Excelの外枠太罫線を2~3倍さ...
-
excel2003 罫線だけを保護したい
-
罫線の色を薄くしたい
-
EXCELで、下線の太さを変...
-
エクセルで文字を入力すると罫...
-
エクセルで罫線も一緒に並び替...
-
【エクセル】謎の枠線の消し方
-
エクセルのアンダーラインについて
-
エクセル
-
パワーポイントで、表の一部を...
-
決まった罫線のなかで、文章入...
-
EXCELのオートフィルタで罫線が...
-
エクセル 入力されていない線...
-
エクセル表の罫線(縦)が消せ...
-
Excelでアンダーラインに文字が...
-
エクセル の縦線
-
罫線が引かれているセルの個数...
-
勝手に背景に色が付いて困っ...
-
条件付き書式で自動で斜線の罫...
おすすめ情報