標題:
[發問]
請教 Combobox 字串判斷
[打印本頁]
作者:
mark15jill
時間:
2012-11-2 09:41
標題:
請教 Combobox 字串判斷
本帖最後由 mark15jill 於 2012-11-2 09:50 編輯
如題。
Q1若 Combobox1 讀取 資料夾內半不規則 的檔案名稱,請問要怎在 Combobox1 判斷不重複,並且在Combobox2篩選
例如
C:\imagelist_test\ 內有以下檔案
099年度-01-001.jpg ~ 099年度-01-n.jpg (n 為不定值整數,如 001 002 003 等等之類 )
099年度-02-001.jpg ~ 099年度-02-n.jpg (n 為不定值整數,如 001 002 003 等等之類 )
099年度-03-001.jpg ~ 099年度-03-n.jpg (n 為不定值整數,如 001 002 003 等等之類 )
099年度-04-001.jpg ~ 099年度-04-n.jpg (n 為不定值整數,如 001 002 003 等等之類 )
在Combobox1 內已讀取 以上檔案:
099年度-01-001.jpg
099年度-01-002.jpg
099年度-01-003.jpg
099年度-01-004.jpg
099年度-02-001.jpg
099年度-02-002.jpg
099年度-02-003.jpg
099年度-02-004.jpg
099年度-03-001.jpg
099年度-03-002.jpg
099年度-03-003.jpg
099年度-03-004.jpg
099年度-04-001.jpg
099年度-04-002.jpg
099年度-04-003.jpg
099年度-04-004.jpg
要怎變成
Combobox1讀取 Combobox2(若選擇 099年度-01時候)
099年度-01 099年度-01-001.jpg
099年度-02 099年度-01-002.jpg
099年度-03 099年度-01-003.jpg
099年度-04 099年度-01-004.jpg
'相關程式碼
Private Sub cmdReadFileName_Click()
Dim strNowPath As String '儲存目前檔案目錄
Dim strFileName As String '讀取到的檔案名稱
Dim strFileExt As String '檔案副檔名
strNowPath = Range("B1") '如果有設定以設定為主
strFileExt = Range("b2") '查詢檔案類型
If Trim(strNowPath) = "" Then
strNowPath = Excel.ActiveWorkbook.Path
End If
n = 0
Sheet3.Cells.Delete '將之前的結果清除
If Right(strNowPath, 1) = "\" Then
strFileName = Dir(strNowPath & strFileExt, vbDirectory)
strFileNameTime = strNowPath
Else
strFileName = Dir(strNowPath & "\" & strFileExt, vbDirectory)
strFileNameTime = strNowPath & "\"
End If
While strFileName <> ""
If strFileName <> ActiveWorkbook.Name Then '這個檔案不要顯示
If strFileName <> "." And strFileName <> ".." Then
n = n + 1
Sheet3.Cells(n, 1).Value = n
Sheet3.Cells(n, 2).Value = strFileName
End If
End If
strFileName = Dir() '讀取下一個檔案
'strFileNameTime = FileDateTime()
Wend
Exit Sub
End Sub
複製代碼
Q2-1
若檔案名稱前段後段無規則,那要怎區分?
099年度-01月-x2x4sa1.jpg
099年度-10-x2x4se4.jpg
Q2-2
若檔案名稱前段後段無規則,那要怎區分?(若以-為分界點)
099年度-01月-x2x4sa1.jpg
099年度-10-x2x4se4.jpg
作者:
GBKEE
時間:
2012-11-2 18:02
本帖最後由 GBKEE 於 2012-11-2 18:05 編輯
回復
1#
mark15jill
若檔案名稱前段後段無規則,那要怎區分?(若以-為分界點)
就是以
-
為分界點
099年度-01月-x2x4sa1.jpg 099年度-10-x2x4se4.jpg
試試看
表單 有ComboBox1,ComboBox2
Option Explicit
Dim xlpath
Private Sub ComboBox1_Change()
If ComboBox1.ListIndex > -1 Then Combobox2檔案
End Sub
Private Sub UserForm_Initialize()
xlpath = "C:\imagelist_test\"
Combobox1檔案
End Sub
Sub Combobox1檔案()
Dim xF As String, x, Ar(), xi As Integer
xF = Dir(xlpath & "*-*-*.JPG")
Do While xF <> ""
x = Split(xF, "-")(0) & "-" & Split(xF, "-")(1)
If xi = 0 Then
ReDim Preserve Ar(xi)
Ar(xi) = x
xi = xi + 1
ElseIf UBound(Filter(Ar, x, True)) Then
ReDim Preserve Ar(xi)
Ar(xi) = x
xi = xi + 1
End If
xF = Dir
Loop
If xi > 0 Then Me.ComboBox1.List = Ar
End Sub
Sub Combobox2檔案()
Dim xF As String
ComboBox2.Clear
xF = Dir(xlpath & ComboBox1 & "*.JPG")
Do While xF <> ""
ComboBox2.AddItem xF
xF = Dir
Loop
End Sub
複製代碼
作者:
mark15jill
時間:
2012-11-5 09:20
回復
2#
GBKEE
感謝大大的教導。
抱歉 這幾天在忙沒上線 今天才看到,等等來去試驗 謝謝
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)