Board logo

標題: [發問] 如何在輸入完一段字後,在最前面加入統一匯款字樣 [打印本頁]

作者: s7659109    時間: 2013-9-24 11:27     標題: 如何在輸入完一段字後,在最前面加入統一匯款字樣

當摘要KEYIN一段字後,跳離原儲存格,
且前方貨號欄為空白時,則在這一段字最前方統一加上
統一匯款-(紅字)
如:統一匯款-雜貨1批。
作者: luhpro    時間: 2013-9-25 22:22

回復 1# s7659109
你想要的功能在 Excel一般區(即單純透過儲存格輸入資料或公式) 是很難做到的,
因為 Excel 的儲存格內容在 "任一時間點上" 除非使用者或是程式(包含公式中的日期時間或是亂數函數等,不同時點資料可能會不同者)有做了變更,
不然是不會自己變動的,
即便是內容為公式亦或是樞紐分析表也是逃脫不出此點.

所以既然你的需求是使用者輸入資料後,
儲存格的內容還要有所變動,
那就只能透過程式囉,
現依你的需求實作如下 :
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.   With Target
  3.     If .Column = 2 Then
  4.       If .Offset(, -1) = "" And .Value <> "" Then
  5.         Application.EnableEvents = False
  6.         .Font.ColorIndex = -4105
  7.         .Value = "統一匯款-" & .Value
  8.         .Characters(1, 5).Font.ColorIndex = 3
  9.         Application.EnableEvents = True
  10.       End If
  11.     End If
  12.   End With
  13. End Sub
複製代碼

作者: s7659109    時間: 2013-9-26 10:21

若原先已有的資料,如何一次全部在前面補充統一匯款字樣,後面再輸入依回答方式處理。
作者: Hsieh    時間: 2013-9-27 23:34

回復 3# s7659109
  1. Sub Add_Character()
  2. Dim A As Range
  3. For Each A In Range("B:B").SpecialCells(xlCellTypeConstants) '針對B欄位資料做檢查
  4.    If Left(A, 5) <> "統一匯款-" And A.Offset(, -1) <> "" Then
  5.    A = "統一匯款-" & A: A.Characters(1, 5).Font.ColorIndex = 3
  6.    ElseIf Left(A, 5) = "統一匯款-" And A.Offset(, -1) = "" Then
  7.    A.Characters(1, Len(A)).Font.ColorIndex = 0: A = Replace(A, "統一匯款-", "")
  8.    End If
  9. Next
  10. End Sub

  11. Private Sub Worksheet_Change(ByVal Target As Range)
  12. Application.EnableEvents = False
  13. Add_Character
  14. Application.EnableEvents = True
  15. End Sub
複製代碼

作者: s7659109    時間: 2013-10-3 11:46

若要將已填入統一匯款的說明欄,copy出來一離開儲存格,會在填入統一匯款字樣,copy愈多次,就填入愈多次。




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