2011-12-13 13 views
0

我正在研究一個相當大的VBA宏的一部分,它被設計用來在另一個單元格等於1時應用條件格式,以便單元格可以高亮顯示爲'selected'。 「
當生成這樣做的條件格式公式時,excel似乎會自動更改常量值 - 它讀取的所有值應該在第99行,並且在代碼中,但是Excel將公式更改爲=IF(B101=1,1,0)爲第一個,然後=IF(B105=1,1,0)爲下一個等等。
這些都是合併的單元格,所以我會假設excel試圖通過將公式向下偏移多少行來自動完成我的代碼。顯然,這是不希望的,有誰知道我怎麼能阻止這樣做的Excel?代碼的相關部分低於:VBA正在改變自己的常量值

For Each x In Range(crange) 
      condrow = 99 
      Range(Cells(coffset + 3, y + 1), Cells(coffset + 2 + currentdiv, y + 1)).FormatConditions.Delete 
      Cells(coffset + 3, y + 1).Value = x 
      selectform = "=IF(" & ConvertToLetter(Cells(coffset + 3, y + 1).Column) & CStr(condrow) & "=1,1,0)" 
      Range(Cells(coffset + 3, y + 1), Cells(coffset + 2 + currentdiv, y + 1)).Merge 
     Range(Cells(coffset + 3, y + 1), Cells(coffset + 2 + currentdiv, y + 1)).FormatConditions.Delete 
     Range(Cells(coffset + 3, y + 1), Cells(coffset + 2 + currentdiv, y + 1)).FormatConditions.Add Type:=xlExpression, Formula1:= _ 
      "clashform" 

回答

1

我相信你需要一個「$」,以防止Excel自動調整它不同的行或列前綴的行或列的參考。

例如,「B $ 101」將允許在公式移動到不同位置時對列(B)進行調整,但對於前面有「$」的行,不允許對列進行調整。