返回列表 上一主題 發帖

[發問] 各位老師vba 改善獲取指定頁的程式內有程序代碼!

[發問] 各位老師vba 改善獲取指定頁的程式內有程序代碼!

本帖最後由 GBKEE 於 2014-2-19 15:00 編輯
  1. Private Sub OptionButton1_Click() 'for default page
  2. Dim Arr(1 To 20) As String
  3. 'Dim thisworkbook As Workbook

  4. Arr(1) = "xxx1109"
  5. Arr(2) = "xxx1160"
  6. Arr(3) = "xxx1150"
  7. Arr(4) = "xxx1110"
  8. Arr(5) = "xxx1130"
  9. Arr(6) = "xxx1141"
  10. Arr(7) = "xxx1171"
  11. Arr(8) = "xxx1172"
  12. Arr(9) = "xxx1173"
  13. Arr(10) = "xxx1176"
  14. Arr(11) = "xxx1174"
  15. Arr(12) = "xxx1175"
  16. Arr(13) = "xxx1623"
  17. Arr(14) = "xxx1180"
  18. Arr(15) = "xxx1201"
  19. Arr(16) = "xxx1610"
  20. Arr(17) = "xxx1621"
  21. Arr(18) = "xxx1622"
  22. Arr(19) = "xxx1630"
  23. Arr(20) = "xxx1710"
  24. For A = 1 To 20
  25. UserForm1.ListBox2.AddItem (Arr(A))
  26. Next A

  27. End Sub
複製代碼
各位老師,我想選取指定的excel頁,共有20頁

我現在寫的方法是定了檔名​​arr(1)xxx1109,

舉例第一個是xxx1109,當頁名是xxx1109


就會在ListBox顯示,但xxx是會變動的,數字就不會變

xxx一轉,如改成頁名zzzz1109 我就選取不到了

有方法用搜查數字,從而選取xxx1109/zzzz1109嗎?


我的意思就是遍歷所有表格名稱
然後提取每個表名稱最後的四個字符進行匹配,再添加進列表。
請問各位可以寫程序代碼出來教教我嗎??


上傳了附件,求教

UserForm1.rar (1.7 KB)

好,謝謝我會努力研究!

TOP

回復 18# marco2000

版大不懂的地方都指向變數名稱上,變數名稱可隨意命名(但需避開VBA的關鍵字),
變數只是個容器,可裝載所需的資訊,並可隨時更改容器內的資訊來做有效的運用。

若要完全了解變數如何運作,除了GBKEE超級版主提出的方法之外,建議去買本 Excel VBA 基本教科書來研究吧。
[b]Kubi[/b]

TOP

回復 17# marco2000
謝謝你,我知道有什麼用,但看不明程序代碼
因為我想進行修改,但看不明白代碼,以致更改不到

羅馬不是一天造成的,告訴你代碼是什麼意義,你也不見得就會進行修改
老生常談: 你不懂的程式碼可在vba視窗中的說明暸解,可複製它的範例
          多看多練習,真有疑問再發問不遲

如圖滑鼠選取文字, 後按 F1說明鍵

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

TOP

rr = 7                                           rr=7是什麼意思?
    For c = 1 To lb2                             這個是listbox2的檔案
        text1sl = UserForm1.ListBox2.List(c - 1)                         text1sl 是什麼
        pp = rr + 2                                         
        kk = checkrow                                   檢查橫例??
        arn = "C8" & ":" & "Z" & kk                                   arn是有什麼用?":"是用來連接?
        ActiveWorkbook.Worksheets(text1sl).Range(arn).Copy
        rrn = "B" & rr                                                                 B??
        ThisWorkbook.Sheets(1).Range(rrn).PasteSpecial
        rr = rr + kk - 5                                                   
        
        arn2 = "A" & pp & ":" & "A" & (rr - 3)                          'for fill "A" column
        ThisWorkbook.Sheets(1).Range(arn2) = ActiveWorkbook.Worksheets(text1sl).Cells(8, 3)

TOP

回復 16# Kubi


謝謝你,我知道有什麼用,但看不明程序代碼
因為我想進行修改,但看不明白代碼,以致更改不到

TOP

回復 15# marco2000

大概是說從作用中活頁簿內,依序從清單方塊(ListBox2)內選單所有列示的工作表名稱,循環複製該工作表C~Z欄範圍內的資料,至本活頁簿內相同工作表名稱的B欄內。

因不是原著也沒有原檔案可參照,可能會有些失準,最好是找到原著,請他來解釋較妥。
[b]Kubi[/b]

TOP

回復 13# Kubi
  1.     ThisWorkbook.Sheets(1).UsedRange.Clear
  2.     lb2 = UserForm1.ListBox2.ListCount
  3.    
  4.     rr = 7
  5.     For c = 1 To lb2
  6.         text1sl = UserForm1.ListBox2.List(c - 1)                        'for copy content
  7.         pp = rr + 2
  8.         kk = checkrow
  9.         arn = "C8" & ":" & "Z" & kk
  10.         ActiveWorkbook.Worksheets(text1sl).Range(arn).Copy
  11.         rrn = "B" & rr
  12.         ThisWorkbook.Sheets(1).Range(rrn).PasteSpecial
  13.         rr = rr + kk - 5
  14.         
  15.         arn2 = "A" & pp & ":" & "A" & (rr - 3)                          'for fill "A" column
  16.         ThisWorkbook.Sheets(1).Range(arn2) = ActiveWorkbook.Worksheets(text1sl).Cells(8, 3)
  17.     Next c
  18.    
複製代碼
大大你看得明嗎?
可以解釋一下嗎?

TOP

回復  marco2000


請於開始之 Private Sub CommandButton3_Click()

與 ThisWorkbook.Sheets(1).Use ...
Kubi 發表於 2014-2-18 19:53


試了,全對
我就是想要這樣,很感激你的一整天幫助:D

TOP

回復 12# marco2000


請於開始之 Private Sub CommandButton3_Click()

與 ThisWorkbook.Sheets(1).UsedRange.Clear

兩行中間插入底下的判斷式,試看看。

sn = UserForm1.ListBox2.ListCount
If sn = 0 Then
    MsgBox "並沒有選到檔案", vbCritical + vbOKOnly, "請重選"
    Exit Sub
Else
    If MsgBox("選了 " & sn & " 個檔案,是否確定要執行?", vbQuestion + vbYesNo, "請確認") = vbNo Then Exit Sub
End If
[b]Kubi[/b]

TOP

        靜思自在 : 虛空有盡.我願無窮,發願容易行願難。
返回列表 上一主題