標題:
[發問]
關於Union的用法及修改,兩個問題請教
[打印本頁]
作者:
chiang0320
時間:
2016-11-6 23:59
標題:
關於Union的用法及修改,兩個問題請教
本帖最後由 chiang0320 於 2016-11-7 00:04 編輯
[attach]25742[/attach][attach]25743[/attach][attach]25745[/attach]
[attach]25747[/attach]
兩個問題請教老師教導,謝謝!
以下vba程式碼,條件--->將大於30的儲存格選取
1. 怎麼修改成選取 "整列(rows) "
2. 如果條件改成小於2的儲存格選取,會顯示錯誤, "請問怎麼修改成,如果沒有在條件內的資料則跳過"
Public Sub QQQ()
Dim i As Long, Target As Range
For i = 2 To 11
If Cells(i, "B") > 30 Then
If Target Is Nothing Then
Set Target = Cells(i, "B")
Else
Set Target = Union(Target, Cells(i, "B"))
End If
End If
Next
Target.Select
End Sub
作者:
c_c_lai
時間:
2016-11-7 08:25
回復
1#
chiang0320
提問: "2. 如果條件改成小於2的儲存格選取,會顯示錯誤"
照你寫的語法看來一定會出問題的,因為你的 "B 欄位" 中
並無條件小於2 的 COUNT, 所以 Target 變數則從宣告為
Range 後一直到迴圈結束,未經異動 (處理),依然保留為其初始值。
接著當你執行 Target.Select 時,則一定會產生錯誤訊息。 將
Target.Select
複製代碼
改成
If Not Target Is Nothing Then Target.Select
複製代碼
至於將 Target 欄改成設定為列:
If Target Is Nothing Then
Set Target = Cells(i, "B")
Else
Set Target = Union(Target, Cells(i, "B"))
End If
複製代碼
換成
If Target Is Nothing Then
Set Target = Rows(i)
Else
Set Target = Union(Target, Rows(i))
End If
複製代碼
就可行了。
作者:
c_c_lai
時間:
2016-11-7 08:29
回復
1#
chiang0320
修正後:
Sub QQQ()
Dim i As Long, Target As Range
For i = 2 To 11
If Cells(i, "B") > 30 Then
If Target Is Nothing Then
Set Target = Rows(i)
Else
Set Target = Union(Target, Rows(i))
End If
End If
Next
If Not Target Is Nothing Then Target.Select
End Sub
複製代碼
作者:
GBKEE
時間:
2016-11-7 14:35
回復
1#
chiang0320
1. 怎麼修改成選取 "整列(rows) "
可修改如下
Option Explicit
Sub QQQ()
Dim i As Long, Target As Range, Rng As Range
Set Rng = Range("A1").CurrentRegion.Rows '** 附檔資料的範圍的的所有列
For i = 2 To 11
If Rng(i).Cells(2) < 2 Then
'If Rng.Range("B" & i) < 2 Then '** 也可以
If Target Is Nothing Then
Set Target = Rng(i)
Else
Set Target = Union(Target, Rng(i))
End If
End If
Next
If Not Target Is Nothing Then Target.Select
End Sub
複製代碼
作者:
c_c_lai
時間:
2016-11-7 16:00
回復
4#
GBKEE
不錯的詮釋,謝謝指導!
作者:
chiang0320
時間:
2016-11-7 20:43
回復
1#
chiang0320
感謝 GBKEE 及 c_c_lai 兩位前輩的指導,謝謝!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)