VBA

2016-04-13 28 views
0

'da For..Next Loop içinde sayaç için ilk boş satır ve sayaç için değişken bildirme Başlat Aşağıdaki kod, basit bir formül yineleyicisidir. İyi çalışan bir tane vardı, ancak select ve activate'dan uzaklaşmak ve kodun okunması daha kolay olması için değişkenleri bildirmeye başlamak istiyorum.VBA

Temel olarak kısayoluma basıp kodun F sütunundaki ilk boş satırdan başlamasını istiyorum (F4'ten başlayarak). Daha sonra kodun bu formattaki değerleri kullanarak bir formül girmesini istiyorum: Formül (ValueTwoColumnsLeft, ValueOneColumnLeft).

Gerçekten yardıma ihtiyacım olan şey For..Next döngülerinin anlaşılmasıdır. For StartCell = 1 To 2500 bölümü için, i'un ne olduğunu veya nasıl tanımlamam gerektiğini anlamıyorum. Bir menzil olamayacağını biliyorum, o zaman artık mantıklı değil.

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 formülü hakkında endişelenmeyin, kendi başına çalışır. Evet, sürükleyebilirim ama pratik yapmaya çalışıyorum. Rowcount ATM'yi tanımlamada tür uyuşmazlığı elde etme. Eğer çalışma sayfasını bildirmek için unuttum rağmen

cevap

1

, bu

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

teşekkür arıyoruz Umut! Ne yazık ki, bu bana başlık ile aynı sorunu veriyor. AKA "i" sayacı tanımlanmamıştır. Bunun ne anlama geldiğini bilmiyorum ... Satır yöntemi için alttan başlamayı gerçekten çok seviyorum, +1 ihtiyacını ortadan kaldırıyor. Büyük bahşiş! –

+0

@ J.H, düzenlenmiş koduna bakın. "i" nin amacı, –

+0

numaralı F sütunundan karşılık gelen latitute ve longiture'ı elde etmektir. Döngünün sonunda "Next i" olması gerekmez mi? Yanlışsam düzelt! –