返回列表 上一主題 發帖

vba - Rows內變數應如何寫

vba - Rows內變數應如何寫

各位高手大家好
  變數 [a2] = 84
Rows("100:144").Select  要改寫成
   Rows(" [a2]+16:[a2]+60).Select
正確寫法是如何 ? 請指導 謝謝1

回復 1# jim
  1. Sub Ex()
  2.     [A2] = 84
  3.     Rows(([A2] + 16) & ":" & ([A2] + 60)).Select
  4. End Sub
複製代碼

TOP

回復 2# c_c_lai
c_c_lai  多謝

TOP

c_c_lai 高手
若是在  變數為 [A2]=84
Set rng = Range([125:h250], [h65536].End(3))
[h125:h250] = ??是否可改寫為 ?? [ H ?? [A2]+43: H??[A2]+166]

TOP

回復 4# jim
Set rng = Range([125:h250], [h65536].End(3)) ???
不太清楚你的表達。

TOP

c_c_lai  多謝關照
[h125:h250]
如同上 用 [a2]+43 代表 125 ,[a2]+166 代表 250
Set rng = Range([125:h250], [h65536].End(3))
  應如何改寫

TOP

回復 6# jim
Set rng = Range([125:h250], [h65536].End(3))?
我猜想你是指
[A2] = 84
Set rng = Range(Range("H" & ([A2] + 41)),  [H65536].End(3))
目前的範圍值為: H125:H###   
(假設  [H65536].End(3) 位址為 H###)

TOP

回復 6# jim
附上一個實務範例,供參考:
  1. Sub 換月()
  2.     Dim cts As Integer, xs As Integer
  3.     Dim rng As Range, lDate As Date
  4.     Dim 年 As String, 月 As String
  5.    
  6.     With Sheets("XXXXXX")
  7.         For xs = 0 To 2
  8.             '  將 H1:AL2、H18:AL19、H35:AL36 範圍內之資料清空。
  9.             .Range("H" & (xs * 17 + 1) & ":AL" & (xs * 17 + 2)).ClearContents
  10.             '  設定 rng 為 H1、H18、以及 H35 欄位。
  11.             Set rng = .Range("H" & IIf(xs < 3, xs * 17 + 1, 63))
  12.             For cts = 1 To Day(DateSerial(年, 月 + 1, 0))      '  取得該月天數
  13.                 rng.Offset(, cts - 1) = cts   
  14.                 '  H1、H18、以及 H35 欄位值為幾號;並依序往右延伸。
  15.                 lDate = DateSerial(年, 月, cts)
  16.                 '  H2、H19、以及 H36 欄位值為星期幾;並依序往右延伸。
  17.                 rng.Offset(1, cts - 1) = Right(WeekdayName(Weekday(lDate)), 1)
  18.             Next cts
  19.         Next xs
  20.     End With
  21. End Sub
複製代碼

TOP

c_c_lai  謝謝
我的原意是
Set rng = Range([h125:h250], [h65536].End(3))
可否改變為
Set rng = Range("H" & ([A2] + 41:"H"& [A2] + 166), [h65536].End(3)).
此語法對嗎?

TOP

回復 9# jim
Set rng = Range("H" & ([A2] + 41:"H"& [A2] + 166), [h65536].End(3)).
應該為
Set rng = Range(Range("H" & ([A2] + 41) & ":H" & ([A2] + 166)), [h65536].End(3))
假設 [A2]] = 84,其結果的範圍值為: H125:H###  
兩點之間取最小及最大值,由下圖你便會瞭解了。

TOP

        靜思自在 : 要批評別人時,先想想自己是否完美無缺。
返回列表 上一主題