2017-09-26 13 views
2

この質問で複数の回答が見つかりましたが、自分のワークシートに適用する方法がわかりません。 コードの最初のステップは、列Cの昇順ソートです。 2番目の手順では、C列の最初のセルをゼロより大きい値(C7である必要があります)で検索します。すでにVBA:0より大きい最初のセルのアドレスを使用する方法

Sub findAdres() 

' First Step Sort Values 

Range("A2:C2").Select 
Range(Selection, Selection.End(xlDown)).Select 
ActiveSheet.Sort.SortFields.Clear 
ActiveSheet.Sort.SortFields.Add Key:=Range(_ 
    "C:C"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ 
    xlSortNormal 
With ActiveSheet.Sort 
    .SetRange Range("A:C") 
    .Header = xlYes 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 
    .Apply 
End With 

' Second Step find address of first cell in column C greater than zero 

Dim lcell As Range 

For Each lcell In Range("C2:C100") 
    If CLng(lcell.Value) > 0 Then 
    not_zero = lcell.Address 
    Exit For 
    End If 
Next lcell 

' Third step is cut all rows from row 7 down to end an paste in sheet2 
' how do you use the lcell.Address to indicate what you want to cut? 

End Sub 

答えて

0

あなたは:私は把握することはできませんどのような はここで、これまでのコードだ

Sheet2の

上でそれらを行7、8および9をカット&ペーストするために、第2のステップでのアドレスを使用する方法であります前の手順で lcellRangeと定義されています)があるので、 Resizeと一緒に使用できます。

' Third step is cut all rows from row 7 down to end an paste in sheet2  
' Copy >> Paste in 1 line, to "Sheet2" at "A2" 
lcell.Resize(100 - lcell.Row + 1, 1).EntireRow.Copy Destination:=Worksheets("Sheet2").Range("A2") 

:私は最後の行として100を使用しています(上記のコードと同じ)。

注2::手順2のFor Each lcell In Range("C2:C100")ループをFindに置き換えることができます。

+0

ありがとうございました! (私は今、「サイズ変更」の方法について説明します)。とても有難い。 – Hernus

+0

@Hernusは、答えの左側にある灰色のチェックマークをクリックすることで、 "答え"としてマークするようになりました –

関連する問題