返回列表 上一主題 發帖

[發問] 簡化巨集程式

[發問] 簡化巨集程式

最近一直在修改巨集程式,因為懂得不多,所以諸多問題,請見諒.
麻辣家族各位熱心人士幫忙我寫了些程式,我自己稍加修改成所需要的巨集程式,以下這個雖然改了好幾個小時,可以用了,但我知道有很多重複的語言,使得巨集跑得很慢,我已經試著修改N次了,都行不通,不知有沒有人可以幫我精簡它?
Sub copy_from_Multi_format()
'
' copy_from_Multi_format 巨集

   With Workbooks("2011 BCMart Multi-Format.xlsx").Sheets("BCM控管")
    .Columns("A:CZ").Hidden = False
    Set A = Intersect(.UsedRange, .Range("A:CZ")).SpecialCells(xlCellTypeVisible)
    With Workbooks("VBA Cluster.xlsm")  '請改成要複製活頁簿的名稱(已經打開)
    With Sheets("BCM控管")
    .Columns("A:CZ").Hidden = False
    A.Copy Workbooks("VBA Cluster.xlsm").Sheets("BCM控管").Range("A1")  '完全複製
   
   End With
   End With
   End With
   
       With Workbooks("VBA Cluster.xlsm")  '請改成要複製活頁簿的名稱(已經打開)
    With Sheets("BCM控管")
    Set A = Intersect(.UsedRange, .Range("A:CZ")).SpecialCells(xlCellTypeVisible)
    A.Copy
    .Range("A1").PasteSpecial xlPasteValues '選擇性貼上值
   End With
   End With
   
    Workbooks("VBA Cluster.xlsm").Activate
    Sheets("BCM控管").Select
    Columns("F:F").Select
    Selection.Replace What:="#N/A", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
        
    Workbooks("VBA Cluster.xlsm").Activate
    Sheets("VBA").Select
    Range("B1").Select
End Sub

看看前輩間的對話,深佑自己功有待加強
有空會常來此練功
謝謝啦
ELIOT JENG

TOP

GBKEE 先進, 謝謝您又用最簡單的例子教學, 我又學到了, Thanks
Homeman

TOP

我看不明 (真沒用), 但多謝GBKEE的教導.  我要多看幾次學習學習一下. 穴

TOP

回復 12# homeman
Intersect 方法 傳回 Range 物件,此物件代表兩個或多個範圍重疊的矩形範圍。
  1. Sub Ex()
  2.     With ActiveSheet
  3.     Set isect = Application.Intersect(.Range("A1:E5"), .Range("B1:B100"))
  4.         If isect Is Nothing Then
  5.             MsgBox "沒有 交集的範圍 "
  6.         Else
  7.          MsgBox isect.Address
  8.         isect.Select     '交集的範圍
  9.     End If
  10.     End With
  11. End Sub
複製代碼

TOP

請教先進, Set A = Intersect(.UsedRange, .Range("A:CZ")).SpecialCells(xlCellTypeVisible) 這段主要是
設定要複製的複製的範圍嗎 ? 有點無法理解設定這一段
Homeman

TOP

謝謝你的說明.

TOP

回復 9# PJChen
如有 這些Option  都必須置於 模組的頂端
Option Explicit     陳述式 : 在模組層次中強迫每個在模組�堛瘍僂くㄔ眸楨�確的宣告。
Option Compare 陳述式 : 在模組層次中用來宣告當比較字串資料時,所預設使用的比較方法。
Option Base         陳述式 : 在模組層次中用來宣告陣列索引的預設下限。
Option Private     陳述式 : 當主應用程式允許可引用跨越多個專案時,Option Private Module 可以避免模組被外部專案所引用。但若主應用程式不允許跨專案引用時,則 Option Private 沒有作用。

TOP

也可以刪除的嗎?謝謝.

TOP

回復 7# PJChen
你將複製程式碼後,貼在已有的程式碼下方當然會在那裡出現.
刪掉  或移 到頂端  就好了.

TOP

        靜思自在 : 屋寬不如心寬。
返回列表 上一主題