返回列表 上一主題 發帖

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

回復 5# PKKO
資料驗證要如何輸入空白,直接清空.
  1. '** 資料驗證選單來源
  2.     '1 資料驗證選單來源是儲存格位置:但需是是同一工作表的儲存格
  3.     'With Range("d2:d" & allr).Validation
  4.     '   .Delete
  5.     '    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
  6.     '    xlBetween, Formula1:="=" & Range("A2:A10").Address
  7.     'End With
  8.    
  9.    '2 資料驗證選單來源用 ","連接的字串
  10.     With Sheets("轉換表")
  11.         myRange = .Range("s2:s" & .Range("s65536").End(xlUp).Row) '資料驗證用
  12.     End With
  13.     '** 陣列轉換成字串
  14.    
  15.     '** Join 函數 傳回一個字串,該字串是透過連結某個陣列中的多個子字串而建立的。
  16.     '** myRange參照儲存格是為二維陣列,需轉成一維陣列方可為Join 函數使用
  17.     'arr = Join(Application.Transpose(myRange), ",")
  18.    
  19.     '** 跑迴圈取得字串
  20.     'For Each e In myRange
  21.     '   arr = arr & "," & e
  22.     'Next
  23.      
  24.     '** Split 函數 傳回一個陳列索引從零開始的一維陣列,它包含指定數目的子字串。
  25.     '** arr = Split(Mid(arr, 2, 10000), ",") '錯誤的用法,因為 arr 傳回陣列,
  26.     '** arr 須是 字串.
  27.    
  28.     '************************************************
  29.    
  30.     With Range("d2:d" & allr).Validation
  31.         .Delete
  32.         .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
  33.         xlBetween, Formula1:=Join(Application.Transpose(myRange), ",") '<- arr
  34.     End With
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

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

回復 14# PKKO


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

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


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

TOP

        靜思自在 : 改變自己是自救,影響別人是救人。
返回列表 上一主題