簡體   English   中英

每個循環的Excel VBA

[英]Excel VBA For Each Loop

我在其中帶有If語句的for-each循環中遇到了一些麻煩。

這是代碼:

Private Sub Worksheet_Calculate()

Dim rng1 As range
Dim cell1 As range
Set rng1 = range("A1")

Application.EnableEvents = False

For Each cell1 In rng1

    While rng1.Rows.Count > 1

        If cell1.Value >= 6000 And cell1.Value < 8000 Then
            range("2:5").EntireRow.Hidden = False
            range("B1:B5").Formula = "=(CEILING($A$10*(1+$A$11+$A$12),5))/4"
            Set rng1 = rng1.Resize(4)

        ElseIf cell1.Value >= 4000 And cell1.Value < 6000 Then
            range("2:3").EntireRow.Hidden = False
            range("4:5").EntireRow.Hidden = True
            range("B1:B4").Formula = "=(CEILING($A$10*(1+$A$11+$A$12),5))/3"
            range("B5:B5").ClearContents
            Set rng1 = rng1.Resize(3)

        ElseIf cell1.Value >= 2000 And cell1.Value < 4000 Then
            range("2:2").EntireRow.Hidden = False
            range("3:5").EntireRow.Hidden = True
            range("B1:B3").Formula = "=(CEILING($A$10*(1+$A$11+$A$12),5))/2"
            range("B4:B5").ClearContents
            Set rng1 = rng1.Resize(2)

        ElseIf cell1.Value >= 0 And cell1.Value < 2000 Then
            range("2:5").EntireRow.Hidden = True
            range("B1:B1").Formula = "=(CEILING($A$10*(1+$A$11+$A$12),5))"
            range("B2:B5").ClearContents

        End If
    Wend
Next

Application.EnableEvents = True

結束子

基本上,我希望它執行此操作,但不能正常工作:它看起來有一定范圍。 如果該范圍的值在4000到6000之間,則取消隱藏3行,隱藏第4行,將3個可見行設置為等於公式,然后將范圍值平均分配在3行之間,清除隱藏行的內容,然后設置它所看的原始范圍等於可見行的范圍(這是我認為自己掛在邏輯上的地方)。 任何幫助將不勝感激。

a)如果單元格A1 = 5000而單元格A2 = 3000會怎樣? 將執行哪個代碼塊? 有沖突嗎?

b)您已將范圍用作變量。 使用其他名稱。 “范圍”必須是保留字。 具有R大寫字母的Range必須用於將某些名稱聲明為Range對象。

c)我注意到一個A43:A4。 我猜這是一個錯字-應該是A3:A4嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM