返回列表 上一主題 發帖

移動有顏色的列到其他sheet(小問題請教)

移動有顏色的列到其他sheet(小問題請教)

Dear各位大大:

請教小問題,如附檔,移動已格式化設定的列到不同sheet

再煩請論壇的各位多多指導,謝謝

移動有顏色的列到其他sheet_1030.rar (11.91 KB)

回復 14# Hsieh

Dear  Hsieh 超版:

          非常感謝您的補充說明,還是一如既往的熱心,it works.
           真是太感謝了,也謝謝GBKEE熱心的指導
            感謝2位

TOP

回復 13# jj369963
2003版本與其他新版的格式化條件公式,
並不會因為作用中儲存格位置改變而變動相對參照的部分公式,
所以,還找不出可個別判斷條件成立與否的函數或方法
退而求其次,置換格式化條件公式的參照列位
  1. Sub ex()
  2. Dim A As Range, f As FormatCondition, Rng(1 To 2) As Range
  3. With Sheet1
  4.    For Each A In .Range(.[A2], .[C2].End(xlDown).Offset(, -2)).SpecialCells(xlCellTypeAllFormatConditions)
  5.       For i = 1 To A.FormatConditions.Count
  6.          If Evaluate(Replace(A.FormatConditions(i).Formula1, 1, A.Row)) > 0 Then
  7.             If Rng(i) Is Nothing Then Set Rng(i) = Union(.[A1], A) Else Set Rng(i) = Union(Rng(i), A)
  8.             Exit For
  9.          End If
  10.       Next
  11.     Next
  12. End With
  13. sht = Array("無帳密", "無作答")
  14. For i = 1 To 2
  15.    Rng(i).EntireRow.Copy Sheets(sht(i - 1)).[A1]
  16.    Sheets(sht(i - 1)).UsedRange.FormatConditions.Delete '清除格式化條件
  17. Next
  18. End Sub
複製代碼
學海無涯_不恥下問

TOP

回復 12# GBKEE


    Dear GBKEE 版大:
  
   非常謝謝您的回覆,而且回覆的好詳細,感謝。
『你說的執行語法後只有標題列移過去,格式化的列沒有移到對應的sheet,(百思不解..)』
  回覆:如附檔
不過我在想會不會是excel版本的差異(???),因為版大有執行出來,所以問題應該在我這邊。

  謝謝版大用心且詳細的回覆

只有移動標題.gif

TOP

本帖最後由 GBKEE 於 2013-11-7 15:23 編輯

回復 10# jj369963
如圖示依你6#的檔案執行7#的程式,
你說的執行語法後只有標題列移過去,格式化的列沒有移到對應的sheet,(百思不解..)
2003版中 RGB(3, 255, 101)  ->  傳回一個數值  Criteria1=RGB(3, 255, 101) -> 這函數傳回的數字
  1. 'xlFilterCellColor這參數為2010版的不適用2003
  2. ActiveSheet.Range("$A$1:$CQ$370").AutoFilter Field:=6, Criteria1:=RGB(3, 255, 101), Operator:=xlFilterCellColor
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 4# jj369963
會發生溢位有可能是 Dim  i As Integer 的關係,
因為列號最大可達到65536 ,
所以建議改用 Dim  i As Long ,
較不易發生溢位的情形.

回復 10# jj369963
以你提供的範例檔案,
套用 9# 的程式並不會發生你所說的情形呢.
建議你對原始檔案中的需要格式化條件的所有儲存格,
再確認一次所套用的條件內容是否都一樣.

只要 Mark 所有需套用相同格式條件的儲存格,
再按 格式 -> 設定格式化條件 看看是否都是相同的條件公式,
若是你看到 "空白"(沒有內容) 的條件內容,
那就是被 Mark 的儲存格有不同的條件存在.
請確認看看.

TOP

本帖最後由 jj369963 於 2013-11-3 18:10 編輯

回復 9# GBKEE

Dear GBKEE版大:
您好
1.測試後,只搬移標題列,格式化的列並未搬移
謝謝,再煩請指教
另外這是我用錄製做的語法來套用,也出錯,但時有時有把部分列移過去,
再勞煩您看一下了,感謝
  1. Sub Macro1()
  2. '
  3.     Cells.Select
  4.     Selection.AutoFilter
  5.     ActiveSheet.Range("$A$1:$CQ$376").AutoFilter Field:=6, Criteria1:=RGB(250, _
  6.         192, 144), Operator:=xlFilterCellColor
  7.     Selection.Copy
  8.     Sheets("無作答").Select
  9.     ActiveSheet.Paste
  10.     Sheets("Sheet0").Select
  11.     Application.CutCopyMode = False
  12.     Rows("59:411").Select
  13.     Selection.Delete Shift:=xlUp
  14.     ActiveSheet.Range("$A$1:$CQ$370").AutoFilter Field:=6, Criteria1:=RGB(3, _
  15.         255, 101), Operator:=xlFilterCellColor
  16.     Selection.Copy
  17.     Application.CutCopyMode = False
  18.     Selection.Copy
  19.     Rows("1:338").Select
  20.     Application.CutCopyMode = False
  21.     Selection.Copy
  22.     Sheets("無帳密").Select
  23.     ActiveSheet.Paste
  24.     Sheets("無帳密").Select
  25.     Rows("18:402").Select
  26.     Application.CutCopyMode = False
  27.     Rows("18:18").Select
  28.     ActiveWindow.SmallScroll Down:=-3
  29.     Rows("18:402").Select
  30.     Selection.Delete Shift:=xlUp
  31.     Selection.AutoFilter
  32. End Sub
複製代碼

TOP

回復 8# jj369963
再試試看
  1. Option Explicit
  2. Sub Ex()
  3.     Dim Sh(1 To 2) As Worksheet, R As Integer, E As Range
  4.     Set Sh(1) = Sheets("無帳密")
  5.     Set Sh(2) = Sheets("無作答")
  6.      Sh(1).UsedRange.Clear
  7.      Sh(2).UsedRange.Clear
  8.     With Sheets("sheet0")
  9.         Sh(1).Rows(1) = .Rows(1).Value
  10.         Sh(2).Rows(1) = .Rows(1).Value
  11.         .Activate
  12.         For Each E In .UsedRange.Columns(1).Cells
  13.             '2003版 儲存格設定格式化可有3個條件可設公式
  14.              E.Select          '需在設定格式化的儲存,方可計算設定格式化條件公式是否成立
  15.             If E.FormatConditions.Count = 2 Then
  16.                 If Application.Evaluate(E.FormatConditions(1).Formula1) Then       '計算設定格式化第1個條件公式是否成立
  17.                     R = Sh(1).UsedRange.Rows.Count + 1                                          '計算 UsedRange.Rows 的總數+1
  18.                     Sh(1).Rows(R) = E.EntireRow.Value
  19.                 ElseIf Application.Evaluate(E.FormatConditions(2).Formula1) Then   '計算設定格式化第2個條件公式是否成立
  20.                     R = Sh(2).UsedRange.Rows.Count + 1
  21.                     Sh(2).Rows(R) = E.EntireRow.Value
  22.                 End If
  23.             End If
  24.         Next
  25.     End With
  26. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 7# GBKEE


    Dear GBKEE版大:
您好
附檔有2個檔案(工作表名稱都相同)有同時開啟,執行EX程式嗎?
回覆:我沒有同時開啟

另外執行語法後只有標題列移過去,格式化的列沒有移到對應的sheet
這次沒有跑出錯誤視窗
不知問題在哪??
再煩請有空之餘,指教與協助

感謝

test_m_1.rar (62.79 KB)

TOP

回復 6# jj369963
附檔有2個檔案(工作表名稱都相同)有同時開啟,執行EX程式嗎?
  1. Option Explicit
  2. Sub Ex()
  3.     Dim Sh(1 To 2) As Worksheet, i As Integer, R As Integer
  4.     Set Sh(1) = ThisWorkbook.Sheets("無帳密")  '程式碼所在活頁簿的工作表
  5.     Set Sh(2) = ThisWorkbook.Sheets("無作答")
  6.     '****************************************************************
  7.     'Set Sh(1) = ActiveWorkbook.Sheets("無帳密")  '作用中活頁簿的工作表
  8.     '********************************************************************   
  9.      Sh(1).UsedRange.Clear
  10.      Sh(2).UsedRange.Clear
  11.     With ThisWorkbook.Sheets("sheet0")            '程式碼所在活頁簿的工作表
  12.     '****************************************************************
  13.     'With ActiveWorkbook.Sheets("sheet0")         '作用中活頁簿的工作表
  14.     '****************************************************************
  15.         Sh(1).Rows(1) = .Rows(1).Value
  16.         Sh(2).Rows(1) = .Rows(1).Value
  17.         .Activate
  18.         i = 2
  19.         Do While .Cells(i, "a").FormatConditions.Count = 2 And .Cells(i, "a") <> ""
  20.             '2003版 儲存格設定格式化可有3個條件可設公式
  21.             .Cells(i, "a").Select          '需在設定格式化的儲存,方可計算設定格式化條件公式是否成立
  22.             If Application.Evaluate(.Cells(i, "a").FormatConditions(1).Formula1) Then       '計算設定格式化第1個條件公式是否成立
  23.                 R = Sh(1).UsedRange.Rows.Count + 1                                          '計算 UsedRange.Rows 的總數+1
  24.                 Sh(1).Rows(R) = .Cells(i, "a").EntireRow.Value
  25.             ElseIf Application.Evaluate(.Cells(i, "a").FormatConditions(2).Formula1) Then   '計算設定格式化第2個條件公式是否成立
  26.                 R = Sh(2).UsedRange.Rows.Count + 1
  27.                 Sh(2).Rows(R) = .Cells(i, "a").EntireRow.Value
  28.             End If
  29.             i = i + 1
  30.         Loop
  31.     End With
  32. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 人要知福、惜福、再造福。
返回列表 上一主題