返回列表 上一主題 發帖

[發問] 有關[自動校正]裡(自動取代字串)的語法?

[發問] 有關[自動校正]裡(自動取代字串)的語法?

我是語法新手
請教各位先進..如何把EXCEL裡[自動校正]內(自動取代字串)部份變成巨集坎入工作表呢?
讓文件在不同電腦開啟可以辨識相同的取代文字,而不用逐一修改"自動校正選項"
其語法為何?

例如SHEET1表內的B1欄被輸入*77#時會顯示A,輸入*78#時會出現B,以此類推..超過3組格式化條件限制的方法
此工作表在別台電腦開啟時也同樣出現被替代的字

如單一欄位無法實行,修正全SHEET1也無妨

謝謝~

多謝Hsieh 版大的指導
原來少了一道解密還原的程序使得儲存格無法變更
沒腦的我搞半天不得其解
多虧了大大 讓我對VBA有更近一步的認知
謝謝!!

TOP

回復 9# united7878
先執行
  1. Sub xx()
  2. Application.EnableEvents = True
  3. End Sub
複製代碼
  1. Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  2. With Sh
  3. If Target.Address = "$F$2" And IsDate(Target) Then
  4. Sh.Unprotect "0000"
  5. Application.EnableEvents = False
  6. Select Case Format(.[F2], "m/d")
  7. Case "1/1"
  8. x = "王小明"
  9. Case "1/2"
  10. x = "李小華"
  11. Case "1/3"
  12. x = "張小美"
  13. End Select
  14. .[N3] = x
  15. Application.EnableEvents = True
  16. Sh.Protect "0000"
  17. End If
  18. End With
  19. End Sub
複製代碼
學海無涯_不恥下問

TOP

執行
Sub XX()
Application.EnableEvents = True
End Sub
學海無涯_不恥下問

TOP

請問大大~
我已在thisworkbook模組內編輯好所有數值
表中'N3'也會參照'F2'之日期而得到正確的值
但是一但我將工作表保護後,再'F2'輸入日期就會出現偵錯畫面
EXCEL會當掉再重開,沒當掉下解除保護後再輸入日期也無效@@"
想知道是那裡錯了,請大大們不吝指教
謝謝!!

TOP

哈~大量編輯的方法我找到了,把整年度的名字複製貼入某欄例如'G'
然後隨便一欄頭1列輸入Case "1/1"
2列輸入'=G1' ,框起該欄1.2列儲存格一直往下拉就自動填滿了..!

TOP

謝謝大大的指導~有了語法果然免去逐一套用函數的步驟,
但在thisworkbook模組下是否會套用到全工作表?如要選定某表可以嗎?
還有如何大量又快速編輯語法內的對照data?
Case "1/1"
x = "王小明"
Case "1/2"
x = "李小華"
Case "1/3"
x = "張小美"

在vba編輯器裡好像無法使用像excel的下拉填滿法..

感恩啦!!

TOP

本帖最後由 Hsieh 於 2010-12-29 09:49 編輯

回復 5# united7878


    這應該不是自動取代功能
你應該有個對照表
利用chang事件來填寫n3的內容即可
thisworkbook模組
  1. Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  2. With Sh
  3. If Target.Address = "$F$2" And IsDate(Target) Then
  4. Application.EnableEvents = False
  5. Select Case Format(.[F2], "m/d")
  6. Case "1/1"
  7. x = "王小明"
  8. Case "1/2"
  9. x = "李小華"
  10. Case "1/3"
  11. x = "張小美"
  12. End Select
  13. .[N3] = x
  14. Application.EnableEvents = True
  15. End If
  16. End With
  17. End Sub
複製代碼
學海無涯_不恥下問

TOP

多謝版大~
但我套用後'F2'輸入日期,'N3'直接變成X月X日,人名部份無法顯示?
我想可能是我形容的太複雜了...抱歉~"~

其實是'N3'會隨著'F2'的日期不同而顯示預定輸入的值就好了,
例如
'F2'              'N3'
2011/1/1      王小明
2011/1/2      李小華
2011/1/3      張小美
2011/1/X      X X X

有點像是只要在'日期欄'輸入日期就可以在'N3'欄顯示ID的值班表..
但參照'F2'時只針對月/日,不必管前面年份為何

謝謝!!

TOP

回復 3# united7878


   
  1. Sub Ex()  '工作表的排序不一定如圖
  2.     Dim Sh As Worksheet
  3.     For Each Sh In Sheets(Array("Sheet1", "sheet2", "sheet3", "sheet4", "sheet5", "sheet6", "sheet7", "sheet8", "sheet9", "sheet10"))
  4.         Sh.Range("N3") = Sh.Range("F2")
  5.         Sh.Range("N3").NumberFormatLocal = "m月d日"
  6.     Next
  7. End Sub
  8. Sub Ex1()  '如工作表的排序一定如從3到13 共10個工作表
  9.     Dim i As Integer
  10.     For i = 3 To 13
  11.         Sheets(i).Range("N3") = Sheets(i).Range("F2")
  12.         Sheets(i).Range("N3").NumberFormatLocal = "m月d日"
  13.     Next
  14. End Sub
複製代碼

TOP

        靜思自在 : 靜坐常恩己過、閒談莫論人非。
返回列表 上一主題