Excel VBA - Belirtilen Aralık Boş Değilken “Nesne Gerekli” Hatasını Alma


0

Aşağıda hata alıyorum kodum. Hatanın kalın olduğu çizgiyi işaretledim (örn. ** satırın başında ve sonunda **).

Hata alıyorum kodun belirli bir kısmı: Ve (Aralık ("M5: M78") boş değil)

Aralık bir nesne ise, neden bu aralığın (yukarıda) Boş Değil olduğunu belirtemiyorum?

Option Explicit

Sub ResetWorksheetMonth1()

Dim i As Long

Dim LastRow As Long

LastRow = Range("X" & Rows.Count).End(xlUp).Row

With Worksheets("Analysis Worksheet").Activate

For i = 5 To LastRow

**If Range("M" & i).Value = 0 And (Range("M5:M78") Is Not Null) And Range("N" & i).Value > 0 And Range("O" & i).Value > 0 And Range("P" & i).Value > 0 _
    And Range("Q" & i).Value > 0 And Range("R" & i).Value > 0 And Range("S" & i).Value > 0 And Range("T" & i).Value > 0 _
    And Range("U" & i).Value > 0 And Range("V" & i).Value > 0 And Range("W" & i).Value > 0 And Range("X" & i).Value > 0 Then**

Range("M" & i).Value = Range("N" & i).Value

Range("N" & i).Value = Range("O" & i).Value

Range("O" & i).Value = Range("P" & i).Value

Range("P" & i).Value = Range("Q" & i).Value

Range("Q" & i).Value = Range("R" & i).Value

Range("R" & i).Value = Range("S" & i).Value

Range("S" & i).Value = Range("T" & i).Value

Range("T" & i).Value = Range("U" & i).Value

Range("U" & i).Value = Range("V" & i).Value

Range("V" & i).Value = Range("W" & i).Value

Range("W" & i).Value = Range("X" & i).Value

Range("X" & i).Value = Range("Z" & i).Value

Range("Y" & i).Formula = "=SUM(" & Range(Cells(i, 13), Cells(i, 24)).Address(False, False) & ")"

Range("Z" & i).Value = Null

Range("AL" & i).Formula = "=SUM(" & Range(Cells(i, 26), Cells(i, 37)).Address(False, False) & ")"

End If

Next i

Bunu çözebildi. SQL (özellikle SQL Server) programlamaya alışkınım, bu yüzden VBA ile aşina değilim. Kullanarak çalışmak için kodumu elde edebildi And Not IsEmpty(Range("M" & i).Value)ise cümlenin sonunda.
HeatherD

Yanıtlar:


0

Bu aralıktaki tüm hücrelerin boş olup olmadığını kontrol etmeye çalışıyorsanız,

WorksheetFunction.CountA(Range("M5:M78")) <> 0

Çalıştığınız şeyin, tüm bir aralığın null değerine eşit olup olmadığını kontrol etmeye devam edeceğini unutmayın, döngüden değil, o aralıktaki her bir hücrenin içeriğini kontrol edin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.