[[20161025210940]] 『セルの挿入と書式設定』(とし) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『セルの挿入と書式設定』(とし)

前回質問させて頂き、多くの方々のアドバイスをもとに
イベントプロシージャで特定の範囲のセルをクリックすると
セルが挿入されるという下記のコードを作成することが出来ました。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

  Dim myTarget As Range
    Set myTarget = Application.Intersect(Target, Range("J6:J107"))
    If myTarget Is Nothing Then
        Exit Sub
    Else
      myTarget.Offset(, 1).Resize(1, 3).Insert Shift:=xlToRight, _
                                CopyOrigin:=xlFormatFromLeftOrAbove
   
   Cancel = True

  End If
End Sub

今回はこの表に変更が出てしまいましたのでアドバイスを頂けたらと思います。
今、セルJ6〜J107をWクリックすると、右隣の同じ行の3つのセル(列:KLM)
が挿入されるようになっています。
今回、列:KLMに条件付き書式を設定することになりました。
挿入先のセルの書式に条件付き書式を反映したくないのですが、
このコードのままですと条件付き書式が反映されてしまい困っています。
ClearFormatsメソッドを使うのかなと思うのですが、オブジェクトをどう指定
していいか分かりませんでした。
初心者過ぎて申し訳ありませんが、またアドバイス頂けらと思います。

< 使用 Excel:Excel2016、使用 OS:Windows8 >


 前回の質問の時に思ったのですが、挿入する必要があるのかなぁ・・・と。

 単にK列より右の範囲をコピーして、3つ右へ「値の貼り付け」(= 転記)して、
 KLM列は、値をクリアすればいいんじゃないですか?
 
(半平太) 2016/10/25(火) 21:44

 具体的にはこんな風になりますね。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

     Dim myTarget As Range
     Dim pos As Long

     Set myTarget = Application.Intersect(Target, Range("J6:J107"))

     If myTarget Is Nothing Then
         Exit Sub
     Else
         pos = Application.Max(13, Cells(myTarget.Row, Columns.Count).End(xlToLeft).Column)

         With Cells(myTarget.Row, "K").Resize(1, pos - 10) '転記元
             .Offset(, 3) = .Value
             .Resize(1, 3).ClearContents
         End With

         Cancel = True
     End If
End Sub

(半平太) 2016/10/25(火) 22:43


ありがとうございます。
使わせて頂きました。
この表は、列:KLMには日付をいれるのですが
この日付は何度も追加され、古い日付を表の右へとずらしたかったので
挿入を考えました。
(とし) 2016/10/26(水) 19:31

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.