2012-04-11 3 views
0

スクリプトを簡略化する作業をしていましたが、一番左側の空いている列まで範囲の列をコピーするスクリプトを作成したかったのです。その後、元の列を削除します。Excel VBAを使用して列を上書きして元の列を削除する

私はこのスクリプトを微調整して、私が欲しいものをほとんど見つけ出しました。すべてをコピーしますが、削除しません。

また、上記の列範囲内のどの行を参照するかを選択できるようにする必要があります。

誰かがスクリプトを見て、私が始めたことを終えるのを手伝ってもらえますか?私はExcel VBAをゆっくりと学びました。私の仕事は私が準備が整う前に複数の方向に前進していましたので、コピーと削除のオプションは単純にすべきですが、私の仕事のためにいろんなことを正しく学ぶ時間がなかったので、これは簡単な答えですが残念ですが、このスクリプトを可能な限りリーンにしておく必要があります。これは私が知っているものコードとヘルプのためのインターネット。

Option Explicit 

Sub MoveColumns() 

    Dim cel As Range 

    With ActiveSheet 
     For Each cel In Intersect(.UsedRange, .[B:N]).SpecialCells(xlCellTypeBlanks).Cells 
      cel = cel.Offset(0, 1) 
     Next 
    End With 
End Sub 

ありがとうございます。

+0

この

Option Explicit Sub MoveColumns() Dim ws As Worksheet Dim lastCol As Long, i As Long Dim DelRange As Range Set ws = Sheets("BackOrder") With ws lastCol = .Cells.Find(What:="*", _ After:=.Range("A1"), _ Lookat:=xlPart, _ LookIn:=xlFormulas, _ SearchOrder:=xlByColumns, _ SearchDirection:=xlPrevious, _ MatchCase:=False).Column For i = 1 To lastCol If Application.WorksheetFunction.CountA(.Columns(i)) = 0 Then If DelRange Is Nothing Then Set DelRange = .Columns(i) Else Set DelRange = Union(DelRange, .Columns(i)) End If End If Next If Not DelRange Is Nothing Then DelRange.Delete End With End Sub 

を試した後、私は一種の混乱したものとなどだデータが存在しないと仮定しています:)左に移動しますまさにあなたは試していますか?あなたは私に例を挙げることができますか? –

+0

確かに...ここにExcelワークブックがあります。基本的には、行6に、次に列Bに、次にNに至るまで、そしてスペースがあれば、最も近い右の列を取って、最も左の空の列にデータをコピーして削除します。元のデータに戻り、移動する列がなくなるまで続けます。 ここには本のリンクhttp://dl.dropbox.com/u/3327208/Excel/DeleteColumn.xlsm –

+0

だから、基本的にあなたはセルI5を削除したい:K193? M5:M193と同じプロセスを繰り返しますか?また、194行目以降のデータはどうですか? –

答えて

1

メインの下でデータを気にしない、私はこのスクリプトを実行するときに、それはそれの下に何も実行され、それを取り除くするスクリプトを持っています。コピーG:GをF:Fに移動し、G:Gを削除し、H:HをG:Gに移動し、H:Hを削除し、すべての列がスペースなしで並べられるまで続行したい場合その間に重複はありません。何をしたい

は、物事を移動する複雑な方法です。最も簡単な方法は、空白の列を削除することです。残りの列は自動的に行194

はHTH

+0

問題は、OとPに何かがあり、OとPにとどまる必要があることです。あなたがやっていることは、この状況では行えないことです。 –

+0

少しでも気をつけることができます:)目を覚ますとコードが更新されます。ベッドに行く:それはすでに5:45 AMです –

関連する問題