Board logo

標題: [發問] 請問有無神人可幫解決這格式化條件的問題 [打印本頁]

作者: hank10459    時間: 2014-3-3 12:06     標題: 請問有無神人可幫解決這格式化條件的問題

本帖最後由 hank10459 於 2014-3-3 12:07 編輯

各位 EXCEL神人您好,想請問我現在做這個圖,如果分為2個活頁(03BAY與04(05)BAY),當04BAY有資料時,03BAY的對應位置變成打一個大叉叉,不知有無高手有無辦法可用呢? 如果有看不懂得小弟會再多做說明。 謝謝
如圖為我想變成的這樣。
作者: seer_et    時間: 2014-3-3 12:42

回復 1# hank10459

兩個方法可能做到你要的:

1.使用名稱

2.使用indirect來處理你要格式化的條件參照。

請參考這裡:
http://tw.knowledge.yahoo.com/question/question?qid=1512071307819
作者: hank10459    時間: 2014-3-3 14:20

回復 2# seer_et
您好S大,目前我的格是也沒辦法用到那種X圖示說!請問有辦法可以給他打上大叉叉嗎?
作者: sunnyso    時間: 2014-3-3 15:08

回復 1# hank10459

上個附件, 帶有你公式等. 我來解決X的問題
作者: hank10459    時間: 2014-3-3 15:22

回復 4# sunnyso
回神人S, 我已經上船圖表^^麻煩您囉[attach]17645[/attach]
作者: sunnyso    時間: 2014-3-4 13:56

[attach]17664[/attach][attach]17663[/attach]回復 5# hank10459
作者: hank10459    時間: 2014-3-5 11:29

本帖最後由 hank10459 於 2014-3-5 11:31 編輯

回復 6# sunnyso
S大,您好我有看到您的回覆,但因為我LEVEL不夠...可否E-MAIL給我呢。我的信箱是[email protected]    謝謝S大
作者: sunnyso    時間: 2014-3-5 12:09

回復 7# hank10459

here is the code.
  1. Private Sub Worksheet_Activate()

  2. With Sheets(2)
  3.     blnk = .[R4] <> "" Or .[R5] <> "" Or .[R6] <> "" _
  4.         Or .[S5] <> "" Or .[S6] <> "" _
  5.         Or .[T5] <> "" Or .[T6] <> ""
  6. End With


  7. If blnk Then
  8.         Range("R4:T6").Select
  9.     With Selection
  10.         .WrapText = False
  11.         .Orientation = 0
  12.         .AddIndent = False
  13.         .ShrinkToFit = False
  14.         .ReadingOrder = xlContext
  15.         .MergeCells = True
  16.     End With
  17.     With Selection.Borders(xlDiagonalDown)
  18.         .LineStyle = xlContinuous
  19.         .ColorIndex = xlAutomatic
  20.         .TintAndShade = 0
  21.         .Weight = xlMedium
  22.     End With
  23.     With Selection.Borders(xlDiagonalUp)
  24.         .LineStyle = xlContinuous
  25.         .ColorIndex = xlAutomatic
  26.         .TintAndShade = 0
  27.         .Weight = xlMedium
  28.     End With
  29.     With Selection.Borders(xlEdgeLeft)
  30.         .LineStyle = xlContinuous
  31.         .ColorIndex = xlAutomatic
  32.         .TintAndShade = 0
  33.         .Weight = xlMedium
  34.     End With
  35.     With Selection.Borders(xlEdgeTop)
  36.         .LineStyle = xlContinuous
  37.         .ColorIndex = xlAutomatic
  38.         .TintAndShade = 0
  39.         .Weight = xlMedium
  40.     End With
  41.     With Selection.Borders(xlEdgeBottom)
  42.         .LineStyle = xlContinuous
  43.         .ColorIndex = xlAutomatic
  44.         .TintAndShade = 0
  45.         .Weight = xlMedium
  46.     End With
  47.     With Selection.Borders(xlEdgeRight)
  48.         .LineStyle = xlContinuous
  49.         .ColorIndex = xlAutomatic
  50.         .TintAndShade = 0
  51.         .Weight = xlMedium
  52.     End With
  53.     Selection.Borders(xlInsideVertical).LineStyle = xlNone
  54.     Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
  55. Else
  56.     Range("O4:Q6").Select
  57.     ActiveWindow.SmallScroll Down:=-6
  58.     Selection.Copy
  59.     Range("R4").Select
  60.     Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
  61.         SkipBlanks:=False, Transpose:=False
  62.     Application.CutCopyMode = False
  63.     Range("F4:H6").Select
  64.     Selection.Copy
  65.     Range("U4:W6").Select
  66.     Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
  67.         SkipBlanks:=False, Transpose:=False
  68.     Application.CutCopyMode = False

  69. End If


  70. End Sub
複製代碼

作者: hank10459    時間: 2014-3-5 12:55

回復 8# sunnyso


    收到了S大。謝謝您的提供。
作者: Hsieh    時間: 2014-3-5 14:52

回復 5# hank10459
格式化條件是無法控制斜線的格線
既然用VBA輔助,可以簡單一點
03BAY工作表模組程式碼
  1. Private Sub Worksheet_Activate()
  2. Dim r&, k&, i%
  3. With Sheets("(04)05BAY")
  4. For k = 3 To 33 Step 3 'C欄到AG欄,間隔3欄循環
  5.    For r = 4 To 26 Step 3 '第4列到26列,間隔3列循環
  6.       If Application.CountA(.Cells(r, k).Resize(3, 3)) = 7 Then '如果全部填滿
  7.          With Cells(r, k).Resize(3, 3)
  8.             .Merge '合併儲存格
  9.             For i = 5 To 6
  10.                With .Borders(i) '畫斜線
  11.                   .LineStyle = xlContinuous
  12.                End With
  13.             Next
  14.           End With
  15.           Else '否則執行複製貼上、清除內容
  16.           .Cells(r, k).Resize(3, 3).Copy Cells(r, k): Cells(r, k).Resize(3, 3) = ""
  17.        End If
  18.     Next
  19. Next
  20. End With
  21. End Sub
複製代碼
[attach]17679[/attach]
作者: yen956    時間: 2014-3-5 18:40

回復 10# Hsieh
大大的VBA真神奇, 先收下慢慢研究啦, 謝謝!!
作者: yen956    時間: 2014-3-5 18:58

回復 10# Hsieh
大大你好:
    Dim r&, k&, i%
請問 資料型態 & 代表什麼? 謝謝!!
站內,站外均已搜尋過了, ...
(我知道 % 代表整數)
作者: Hsieh    時間: 2014-3-5 22:24

回復 12# yen956


   http://forum.twbts.com/viewthrea ... %EA%AE%C6%AB%AC%BAA
作者: yen956    時間: 2014-3-6 09:47

本帖最後由 yen956 於 2014-3-6 09:48 編輯

回復 10# Hsieh
謝謝回覆與指導,
終於知道 Dim r& = Dim r as long, 謝謝!!
又, 試了好久, 也終於知道:
'.Borders(i) 畫邊框的參數
'i = 1 → 左
'i = 2 → 右
'i = 3 → 上
'i = 4 → 下
'i = 5 → 左上到右下
'i = 6 → 左下到右上
      For i = 5 To 6
           With .Borders(i)
                 .LineStyle = xlContinuous
           End With
     Next
的意思, 謝謝!!
作者: seer_et    時間: 2014-3-6 10:05

回復 14# yen956

也謝謝你的說明,學到了。
作者: yen956    時間: 2014-3-6 13:14

回復 15# seer_et
不客氣, 該謝謝版大.
作者: is681003    時間: 2014-3-10 12:20

好難喔
不知道如何解決
有神人嗎




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)