Board logo

標題: [發問] 插入儲存格後無法自動填滿 [打印本頁]

作者: cathaylife    時間: 2016-8-20 22:40     標題: 插入儲存格後無法自動填滿

各位先進好:
小弟最近碰到一個感覺很簡單的問題
A欄是簡單的數列,B欄則是逐列直接參照A欄的值
如果此時新增一個數字在A欄資料的中間
此時我想使用B欄的自動向下填滿功能會碰到空白那個就停止
想請問該如何把空白那欄自動填滿呢? 比較希望能以VBA解決 謝謝!!
作者: GBKEE    時間: 2016-8-21 06:24

回復 1# cathaylife
是這樣嗎?
  1. Option Explicit
  2. Sub Ex()
  3.     With Range("a1:a" & Range("a1").End(xlDown).Row)
  4.         .Offset(, 1) = .Value
  5.     End With
  6. End Sub
複製代碼

作者: cathaylife    時間: 2016-8-21 10:00

版主早:
您的確讓兩欄都一樣,但B欄變得跟A欄一樣都是數值了,我的需求是維持住B欄的公式自動填滿到下面的儲存格~
作者: cathaylife    時間: 2016-8-21 13:42

回復 3# cathaylife

ok
作者: GBKEE    時間: 2016-8-21 14:01

回復 4# cathaylife
試試看
  1. Option Explicit
  2. Sub Ex()
  3.     With Range("a1:a" & Range("a1").End(xlDown).Row)
  4.         .Offset(, 1).FillDown
  5.     End With
  6. End Sub
複製代碼

作者: cathaylife    時間: 2016-8-21 21:57

感謝版主已經可以正常作業了! 另請教您
Offset(, 1) 的逗點是什麼意思? 其他類似的函數試用嗎?
還有就是option explicit的功用我已經知道是強制變數宣告,看了之前您的解釋是"方便偵錯"
但我在我在VBA裡試圖不宣告就使用,還是可以在區域變數裡看到該變數以及偵錯
所以宣告以後的方便偵錯是相對方便在哪裡呢?
作者: GBKEE    時間: 2016-8-22 04:47

回復 6# cathaylife
  1. Range("A1").Offset(ColumnOffset:=5).Select
  2. Offset 屬性
  3. 請參閱套用至範例特定套用至 Range 物件時用 Offset 屬性。
  4. 傳回 Range 物件,用以代表某個指定區域以外的範圍。唯讀。
  5. expression.Offset(RowOffset, ColumnOffset)
  6. expression     必選。該運算式傳回 Range 物件。
  7. RowOffset      選擇性的 Variant。用列數表示的區域位移 (正值、負數或零 (0))。正值表示向下位移,負值表示向上位移。預設值為 0。
  8. ColumnOffset      選擇性的 Variant。用欄數表示的區域位移 (整數、負數或 0 (零))。正值表示右位移,負值表示左。預設值為 0。
複製代碼
方便偵錯:是指變數編寫不正確導致計算錯誤得不到預期的效果
當程式寫的龐大時不易找出的
  1. Sub Ex()
  2.     Dim xl As Integer
  3.     x1 = 5
  4.     MsgBox 10 + xl  '應該是15才對
  5. End Sub
複製代碼
  1. Option Explicit
  2. Sub Ex()
  3.     Dim xl As Integer
  4.     x1 = 5
  5.     MsgBox 10 + xl  '應該是15才對
  6. End Sub
複製代碼

作者: cathaylife    時間: 2016-8-23 10:20

所以在這個例子裡
.Offset(, 1).FillDown
逗號前面沒接東西就是預設列的基準欄位沒變 是嗎?
Option Explicit 試了好久才發現是 x1 跟 xL....




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)