返回列表 上一主題 發帖

[發問] 使用VBA自訂範圍資料驗證失敗

[發問] 使用VBA自訂範圍資料驗證失敗

想請教大大們為何會失敗呢~?
'自訂區域
With Sheets("轉換表")
        myRange = .Range("s2:s" & .Range("s65536").End(xlUp).Row) '資料驗證用
end With

'資料驗證選單
'試過兩種方式
'第一種
    For Each e In myRange
        arr = arr & "," & e
    Next
    arr = Split(Mid(arr, 2, 10000), ",")
    With Range("d2:d" & allr).Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:=arr
    End With
'第二種是直接將Arr換成myRange
PKKO

回復 16# GBKEE


   嗯嗯嗯!我了解了,確實也可以加快撰寫程式碼的速度,謝謝哦!!
PKKO

TOP

回復 14# PKKO


   
WITH ME因該是沒有存在的必要?(假設已經將程式碼放置在該SHEET內的話)
也不是如此的說法,可簡化程式碼的key in .

如圖 工具->選項 的勾選
如對vba的語法不熟,也可加快程式碼的編寫,熟悉.


感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 HUNGCHILIN 於 2015-3-9 00:24 編輯

只是單純的測試程式,沒別的
簡化程式,很好的想法
Hung-Chi Lin/林宏吉
HUNGCHILIN/林宏吉的OFFICE專欄

TOP

回復 13# GBKEE


    恩恩,感謝!

   但若是已經放在該SHEET內應該就可以直接用 Rows(1).Find("所有單位", Lookat:=xlWhole).Column '代號的Column

而不用使用以下的寫法
WITH ME
   .Rows(1).Find("所有單位", Lookat:=xlWhole).Column '代號的Column
END WITH

當然版主大大是因為直接修改我的程式碼會比較快,但除此之外
如果是自己撰寫程式碼的話,WITH ME因該是沒有存在的必要?(假設已經將程式碼放置在該SHEET內的話)
還是有其他的用法?
PKKO

TOP

回復 12# PKKO
不是速度快,可指定這物件的屬性,子物件
  1. With Cells(1, 1)
  2.         .Value = 555
  3.         .Interior.Color = vbRed
  4.         With .Font
  5.             .Bold = True
  6.             .ColorIndex = xlAutomatic
  7.         End With
  8.    End With
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 PKKO 於 2015-3-8 01:32 編輯

感謝版主大大,原來如此!

但想問一下,若是已經放在該SHEET內的程式碼

不就可以直接使用ex: CELLS(1,1),不需要WITH

還是說透過WITH 裡面[ . 的程式碼]執行速度會比較快?
PKKO

TOP

本帖最後由 HUNGCHILIN 於 2015-3-7 23:54 編輯

回復 10# PKKO
阿吉測試時把程式貼在,Sheets("轉換表") 的工作表程式区内,故直接用Me,就可以了,
如果程式放在 模組1 内,就一定要指定,with Sheets("轉換表"),
我通常較少用 Sheets("轉換表")的寫法,因為改Sheet名稱程式就會報錯誤提示。
有時用Sheet1,Sheet2寫法較佳。
Hung-Chi Lin/林宏吉
HUNGCHILIN/林宏吉的OFFICE專欄

TOP

回復 6# HUNGCHILIN

版主大大,可否請教您使用的 With Me => 這個Me 代表的是?
PKKO

TOP

回復 8# GBKEE


    感謝,原來如此!
PKKO

TOP

        靜思自在 : 【蒙蔽的自由】人常在什麼都可以自由自在的時候,卻被這種隨心所欲的自由蒙蔽,虛擲時光而毫無覺知。
返回列表 上一主題