Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2013)
セルの削除
投稿日時: 17/06/19 19:36:00
投稿者: mirukujp

お世話になります
 
教えていただけないでしょうか
N列に関数式 VLOOKUPが入ってる式があった場合
削除して左に詰めて行きたいです
下記の様に考えたのですが 作動してくれません
 
ご教示お願いいたします
 
Sub sakujooooo()
Dim mySelect
 
  Sheets("aaa").Select
  Do While (True)
    Columns("n:n").Select
    Set mySelect = Selection.Find(What:="*VLOOKUP*")
    If mySelect Is Nothing Then Exit Do
    Cells(mySelect.n).Select
    Selection.Delete Shift:=xlShiftToLeft
  Loop
   
 
End Sub

回答
投稿日時: 17/06/19 21:24:09
投稿者: sy

こんばんわ。
  
LookInがxlValuesになっていたらマッチしません。
後SetしてるのでmySelectが削除対象のセルそのものです。

Sub sakujooooo()
    Dim mySelect As Range

    Do
        Set mySelect = Sheets("aaa").Range("N:N").Find(What:="*VLOOKUP*", LookIn:=xlFormulas)
        If mySelect Is Nothing Then Exit Sub
        mySelect.Delete Shift:=xlToLeft
    Loop

End Sub

全く問題は無いですけど、"*VLOOKUP*"の書き方は珍しいですね。
一般的にはこんな書き方をする事が多いと思います。
Set mySelect = Sheets("aaa").Range("N:N").Find(What:="VLOOKUP", LookIn:=xlFormulas, LookAt:=xlPart)

https://www.moug.net/tech/exvba/0050116.html
使い方や取得したセルなどに関しては、こう言うページなどで学習して下さい。
「VBA FIND」などで検索すれば、他にもたくさん出てくるので、検索を活用した方が上達は早いですよ。
 
最後にN列の数式はVLOOKUPだけですか?
VLOOKUP以外の数式が入っていないのでしたら、1行で書けますよ。
Sub sakujooooo2()

    Sheets("aaa").Range("N:N").SpecialCells(xlCellTypeFormulas).Delete Shift:=xlToLeft

End Sub
[/code]

投稿日時: 17/06/20 09:02:24
投稿者: mirukujp

sy様
 
有難う御座います
 
色々 参考になるところも教えていただき有難うございました