2016-04-13 10 views
0

以下のコードは単純な数式リピータです。私は正常に動作したものを持っていましたが、selectactivateから離れて変数を宣言してコードを読みやすくしたいと思います。最初の空白行で開始し、VBAのFor..Nextループのカウンタの変数を宣言する

私は基本的に自分のショートカットを押して、コードをF列(F4から始まる)の最初の空白行から開始したいと考えています。次に、コードにこの形式の値を使用して数式を入力します。数式(ValueTwoColumnsLeft、ValueOneColumnLeft)。

私が本当に必要とするのは、For..nextループを理解することです。 For StartCell = 1 To 2500の部分については、iが何を想定しているのか、どう定義すればよいのか分かりません。私はそれが範囲ではないことを知っています、そしてそれはもはや意味をなさない。

Sub FormulaRepeater() 

' Keyboard Shortcut: Ctrl+q 
Dim sht As Worksheet 
Dim Address As Range 
Dim rowcount As Long 
Dim Latitude As String 
Dim Longitude As String 
Dim result As String 
Dim StartCell As Range 

Set sht = Worksheets("S2") 
Set Address = sht.Range("F4").End(xlDown) 

rowcount = sht.Cells(Rows.Count, Address) 'start from first blank row in F 
Set StartCell = sht.Cells(rowcount + 1, Address) 

Latitude = Cells.Offset(0, -2).Value ' get latitude 2 cells to the left 
Longitude = Cells.Offset(0, -1).Value 'get longitude 1 cell to the left 
'Would using offset here be the same as select i.e. sets Application.ScreenUpdating=True 

For rowcount = StartCell To 10 'from the selected cell to 2500, _ 
which is the daily limit for the Google API 

     result = GEOAddress(Latitude, Longitude) 


    Next 
End Sub 

P.Sという式は心配しないでください。それは自分で動作します。はい、私はそれを下にドラッグできますが、私は練習しようとしています。行カウントATMを定義する際に型の不一致が発生しました。ワークシートを宣言するのを忘れたが、

答えて

1

は、あなたがこの

Sub FormulaRepeater() 
    Dim sht As Worksheet 
    Dim rowcount As Long 
    Dim Latitude As String 
    Dim Longitude As String 
    Dim result As String 
    Dim StartCell As Long 
    Set sht = Worksheets("S2") 
    StartCell = sht.Range("F4").End(xlDown).Row 
    rowcount = sht.Range("F" & Rows.Count).End(xlUp).Row 'start from first blank row in F 
    For i = StartCell To rowcount 
     Latitude = sht.Range("F" & i).Offset(0, -2).Value ' get latitude 2 cells to the left 
     Longitude = sht.Range("F" & i).Offset(0, -1).Value 'get longitude 1 cell to the left 
     result = GEOAddress(Latitude, Longitude) 
    Next 
End Sub 
+0

感謝を探している願っています! 残念ながら、これは私のタイトルと同じ問題をもたらします。カウンタAKA「i」は定義されていない。私はこれが何を意味するのか分かりません... 私は実際に行のメソッドの底から始めるのが好きです、+1の必要性を排除します。素晴らしいヒント! –

+0

@ J.H、編集されたコードを参照してください。 "i"の目的は、F列から対応するlatituteとlongitureを取得することです。 –

+0

ループの終わりに "Next i"にしてはいけませんか?私が間違っているなら私を訂正してください! –

関連する問題