Board logo

標題: [發問] Range()內字串 [打印本頁]

作者: prince120101    時間: 2014-12-24 17:34     標題: Range()內字串

請問各位大大

下列這四行Range()裡面的 字串 可以只用一行表示嗎??
  1. Range("A4").Select
  2.     Range(Selection, Selection.End(xlDown)).Select
  3.     Range(Selection, Selection.End(xlDown)).Select
  4.     Range(Selection, Selection.End(xlUp)).Select
複製代碼

作者: owen06    時間: 2014-12-24 19:43

回復 1# prince120101


    我只能寫到2行…
  1. Sub test()
  2. [a4].End(4).Select
  3. Range(Selection, Selection.End(3).End(3)).Select
  4. End Sub
複製代碼

作者: GBKEE    時間: 2014-12-24 21:13

回復 1# prince120101
是這樣嗎?
  1. Sub Ex()
  2.     With Range("A4")
  3.         Range(.Cells, .End(xlDown).End(xlDown).End(xlUp)).Select
  4.     End With
  5. End Sub
複製代碼

作者: prince120101    時間: 2014-12-25 10:48

回復 3# GBKEE
回復 2# owen06


感謝 owen06 GBKEE 的回覆


會有這想法是
我的EXCEL VBA 表單 上

動作程序
有兩個ListBox
ListBox1 內容是 sheet1~sheet9
當選擇sheet1時
ListBox2內容會顯示 sheet1"A4"之後 儲存格有資料的內容
當選擇sheet2時
ListBox2內容會顯示 sheet2"A4"之後 儲存格有資料的內容..等等

然而 這 sheet1~9 "A4" 一開始是無資料的 後續會增加
  1. Range("A4").Select
  2. If ListBox1.Value = "sheet1" Then ListBox2.List = Workbooks("活頁簿1.xlsm").Sheets("sheet1").Range(Selection, Selection.End(xlDown)).Value
  3. If ListBox1.Value = "sheet2" Then ListBox2.List = Workbooks("活頁簿1.xlsm").Sheets("sheet2").Range(Selection, Selection.End(xlDown)).Value
複製代碼
那時候測試後 如果換選擇sheet2時 這程序就出現錯誤了~
後來也就想說看可不可以把Range("A4")放入 Range(Selection, Selection.End(xlDown))裡面
  1. Range("A4").Select
  2. Range(Selection, Selection.End(xlDown)).Select
  3. Range(Selection, Selection.End(xlDown)).Select
  4. Range(Selection, Selection.End(xlUp)).Select
複製代碼
這是那時候用巨集錄製的
但如果遇到一開始"A4"沒資料的時候
這動作也就不成立了
作者: GBKEE    時間: 2014-12-25 11:02

回復 4# prince120101
試試看
  1.     If ListBox1.Value <> "" Then
  2.         ListBox2.Clear
  3.         With Workbooks("活頁簿1.xlsm").Sheets(ListBox1)
  4.             If .Range("A4").End(xlDown).Row <> .Rows.Count Then  '有資料
  5.                 ListBox2.List = .Range(.Range("A4"), .Range("A4").End(xlDown)).Value
  6.             End If
  7.         End With
  8.     End If
複製代碼

作者: ashan0418    時間: 2014-12-25 11:05

回復 2# owen06

owen06 大大

可否請教end(3)中的3代表什麼意思??
能從何處查詢相關的資訊呢??
作者: owen06    時間: 2014-12-25 11:51

回復 6# ashan0418

  那是程式的簡碼
    end(1)=end(xltoleft)
           2 =        xltoright
           3 =        xlup
           4 =        xldown

很多後面有接括號的語法,其實都有代碼可以輸入以節省時間,只是要怎麼查可能要其他高手才能解答了,
我也是無意間google時看到的。
作者: ashan0418    時間: 2014-12-25 12:31

回復 7# owen06


原來如此,感謝您的分享!!
作者: prince120101    時間: 2014-12-25 13:10

回復 5# GBKEE

謝謝 GBKEE
剛測試後可以動作了

Sheets(ListBox1.Value)不過這邊好像要加.value 才能執行
  1. If ListBox1.Value <> "" Then
  2. ListBox2.Clear
  3. With Workbooks("活頁簿.xlsm").Sheets(ListBox1.Value)
  4. If .Range("A4").End(xlDown).Row <> .Rows.Count Then  '有資料
  5. ListBox2.List = .Range(.Range("A4"), .Range("A4").End(xlDown)).Value
  6. End If
  7. End With
  8. End If
複製代碼

作者: prince120101    時間: 2014-12-25 13:16

回復 7# owen06


    感謝 owen06 的分享~~~




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