Board logo

標題: [發問] 請教新增表單編號問題 [打印本頁]

作者: afu9240    時間: 2017-12-13 11:14     標題: 請教新增表單編號問題

版大 各位vba高手:

    想請教在表單 按--新增後---表單號碼是否可產生成單號"009", 附上圖片及檔案,,,,[attach]28112[/attach][attach]28112[/attach][attach]28112[/attach][attach]28113[/attach]求協助!!謝謝
作者: GBKEE    時間: 2017-12-13 14:02

回復 1# afu9240
  1. TextBox6.Value = Format(Worksheets("叫修明細").Cells(x, 1) + 1, "000")
複製代碼

作者: afu9240    時間: 2017-12-14 10:27

回復 2# GBKEE

G大 版主  您好  小妹可以再請教一個問題

附件是一個訓練履歷表,為何我用名字mark查詢後,listbox1會出現資料,但在clear後,再輸入mark查詢卻無法出現資料,輸入別得名字也一樣, 是否可解惑!!感恩謝謝

     [attach]28123[/attach]
[attach]28124[/attach]
作者: GBKEE    時間: 2017-12-14 14:39

  1. Private Sub CommandButton4_Click() 'clear
  2.     TextBox11.Text = ""
  3.     TextBox10.Text = ""
  4.     TextBox1.Text = ""
  5.     Image1.Picture = LoadPicture
  6.     With ListBox1
  7.     'If Selection.Count > 7 Then
  8.   '  .List = Selection.Value
  9.   '  Else
  10.     .Clear
  11.    ' .AddItem Selection
  12.    ' End If
  13.    ' .ColumnCount = Selection.Columns.Count
  14.     End With
  15.    
  16. End Sub
複製代碼
回復 4# afu9240
作者: afu9240    時間: 2017-12-18 15:49

回復 5# GBKEE

G大  您好

    小妹卡住了,關鍵字搜尋要如何帶出到"工作表2"(只要跟這字有關係的都要帶出),真的很抱歉想[attach]28138[/attach][attach]28138[/attach]跟您請益!!!!
作者: Hsieh    時間: 2017-12-18 17:53

  1. Private Sub CommandButton2_Click()
  2. Dim A As Range, Rng As Range
  3. If TextBox1.Text = "" Then
  4.     MsgBox "請輸入正確的值"
  5. Else
  6. Application.ScreenUpdating = False
  7. Worksheets("工作表2").Range("A:G").Clear
  8. With Worksheets("工作表1")
  9. Set A = .Cells.Find(TextBox1, Lookat:=xlPart)
  10. If Not A Is Nothing Then
  11.   first = A.Address
  12. Do
  13. If Rng Is Nothing Then
  14.    Set Rng = .Cells(A.Row, 1).MergeArea
  15.    Else
  16.    Set Rng = Union(Rng, .Cells(A.Row, 1).MergeArea)
  17. End If
  18. Set A = .Cells.FindNext(A)
  19. Loop While Not A Is Nothing And A.Address <> first
  20. Rng.EntireRow.Copy Sheets("工作表2").[A1]
  21. Else
  22. MsgBox "無符合資料"
  23. End If
  24. End With
  25. End If
  26. Application.ScreenUpdating = True
  27. End Sub
複製代碼
回復 7# afu9240
作者: afu9240    時間: 2018-1-2 15:11

回復 8# Hsieh

感謝版大,,,長知識 [attach]28192[/attach][attach]28192[/attach][attach]28192[/attach][attach]28192[/attach]

請教一下附件, 如何用vba寫死函數公式, 爬文跟在論壇內找了找都沒有相關文章,是否可協助解惑!小妹感激
作者: GBKEE    時間: 2018-1-2 19:07

回復 9# afu9240

是這樣嗎?
  1. Sub old() '年齡自動代入
  2.     Dim x1, x2, i As Integer
  3.     Cells(1, 5) = Now()
  4.     'x1 = YearFrac(Now(), 0) '這裡錯誤
  5.     'x1 = Application.WorksheetFunction.YearFrac(Now(), 0)
  6.     X = 2
  7.     Do
  8.         Cells(X, "C") = "=AGE(RC[-1])"  'RC[-1] R1C1的格式參照法
  9.         X = X + 1
  10.     Loop Until Cells(X, "B") = ""
  11. End Sub
  12. '***'Module1(一般模組)的程式碼
  13. '**自訂函數
  14. Function AGE(D1)  
  15.     AGE = "#NA"
  16.     Application.Volatile (False)
  17.     If IsDate(D1) And D1 > 0 Then AGE = DateDiff("YYYY", D1, Date)
  18. End Function
複製代碼

作者: afu9240    時間: 2018-1-3 09:58

回復 8# GBKEE

感謝G大回復..G大真的太厲害了
想請問G大是否可以計算到小數點兩位數  因為現在好像都是取整數
作者: GBKEE    時間: 2018-1-3 12:21

回復 9# afu9240
  1. Function AGE(D1 As Range)         'Module1(一般模組)
  2.     AGE = "#NA"
  3.     Application.Volatile (False)
  4.     If IsDate(D1) And D1 > 0 Then
  5.         AGE = DateDiff("m", D1, Date)
  6.         AGE = Round(Int(AGE / 12), 0) & "." & AGE - (Round(Int(AGE / 12), 0) * 12)  ' 剩餘月份的小數點
  7.         'AGE = Round((AGE / 12), 2)   '10進位的小數點
  8.    End If
  9. End Function
複製代碼

作者: afu9240    時間: 2018-1-3 16:51

回復 10# GBKEE


    G大真的是我的偶像,,感謝[attach]28199[/attach]
 G大 小妹還有一個小問題,附件用您給我的funtion為何帶不出全廠平均年齡∼∼∼
作者: GBKEE    時間: 2018-1-3 18:32

回復 11# afu9240
  1. '** Val(文字) >  轉換數字******************
  2.             AGE = Val(Round(Int(AGE / 12), 0) & "." & AGE - (Round(Int(AGE / 12), 0) * 12))  ' 剩餘月份的小數點
  3.             
  4.             '**10進位的小數點***平均年齡較為準確  *****************
  5.             AGE = Round((AGE / 12), 2)   '10進位的小數點
  6.             '*******************************************
複製代碼
  1. Sub 平均年齡()
  2.     Dim aa As Range
  3.     Cells(1, 8) = Now()
  4.     'Times = Cells(65536, x + 1).End(xlUp).Row
  5.     Set aa = Range("d2:d" & [d2].End(xlDown).Row) '所有加總範圍
  6.    
  7.     Sheets("工作表1").Cells(9, 9) = Application.WorksheetFunction.Sum(aa) / aa.Count
  8. End Sub
複製代碼

作者: afu9240    時間: 2018-1-4 10:11

  1.     '** Val(文字) >  轉換數字******************
  2.                 AGE = Val(Round(Int(AGE / 12), 0) & "." & AGE - (Round(Int(AGE / 12), 0) * 12))  ' 剩餘月份的小數點
  3.                
  4.                 '**10進位的小數點***平均年齡較為準確  *****************
  5.                 AGE = Round((AGE / 12), 2)   '10進位的小數點
  6.                 '*******************************************
複製代碼
回復 12# GBKEE

請教G大 這段[attach]28201[/attach][attach]28201[/attach]放進去後,原本計算的年齡會變不正確,是哪一個地方有出現問題呢!!!再請G大協助 謝謝
作者: GBKEE    時間: 2018-1-4 10:51

回復 13# afu9240
給的程式碼請多了解才會為己用
  1. '** Val(文字) >  轉換數字****是因為funtion傳回文字 ,SUM()無法加總,而修改的
  2.             AGE = Val(Round(Int(AGE / 12), 0) & "." & AGE - (Round(Int(AGE / 12), 0) * 12))  ' 剩餘月份的小數點

  3.             '**10進位的小數點***平均年齡較為準確  *****************
  4.             AGE = Round((AGE / 12), 2)   '10進位的小數點    'funtion傳回數字 ,SUM()可以加總不必修改
  5.             '******************************************
複製代碼

ˋ此程式碼有註解,請再了解看看 ,二選一使用
作者: afu9240    時間: 2018-1-4 17:07

回復 14# GBKEE


    感謝G大鼓勵,我會努力,>>>>>:'(
作者: afu9240    時間: 2018-1-5 13:48

回復 14# GBKEE


    G大 抱歉  想跟您請教
  
   要如何查詢到資料到部門人員資料後,直接計算出部門平均年齡呢???求協助 謝謝

   能在工作表1黃色實線儲存格顯示嗎???[attach]28204[/attach][attach]28204[/attach]
作者: GBKEE    時間: 2018-1-6 07:18

本帖最後由 GBKEE 於 2018-1-6 08:02 編輯

回復 16# afu9240
  1. Function AGE(D1 As Date)     'Module1(一般模組)
  2.         Application.Volatile (False)
  3.         If IsDate(D1) And D1 > 0 Then
  4.             AGE = DateDiff("m", D1, Date)
  5.             'AGE = Round(Int(AGE / 12), 0) & "." & AGE - (Round(Int(AGE / 12), 0) * 12)  ' 小數點為剩餘月份
  6.             '***此AGE的程式碼中**  & "." & ** 傳回文字不能計算,用VAL()函數將文字轉為數字,可計算
  7.             AGE = Val(Round(Int(AGE / 12), 0) & "." & AGE - (Round(Int(AGE / 12), 0) * 12))  ' 小數點為剩餘月份
  8.             
  9.             'AGE = Round((AGE / 12), 2)   '小數點為10進位  '***此AGE傳回數字,可計算
  10.             
  11.        End If
  12. End Function
複製代碼
  1. Private Sub CommandButton1_Click()
  2.     With Worksheets("人員年資分析表")
  3.         If .AutoFilterMode Then .UsedRange.AutoFilter
  4.     End With
  5.     End
  6. End Sub
  7. 'Private Sub CommandButton4_Click() '*****
  8. Private Sub ComboBox4_Change()  '可改用Change不須再按查詢
  9.     Dim Rng As Range, AGE_Average As Double
  10.     'If ComboBox4.ListIndex = -1 Then MsgBox "請輸入正確的值": Exit Sub
  11.     If ComboBox4.ListIndex = -1 Then Exit Sub        '.ListIndex = -1 不在清單的內容
  12.     Set Rng = Worksheets("人員年資分析表").Range("A2")
  13.     If Rng.Parent.AutoFilterMode Then Rng.AutoFilter   '取消自動篩選
  14.     Set Rng = Range(Rng, Rng.End(xlToRight).End(xlDown))
  15.     Rng.AutoFilter 1, ComboBox4.Value
  16.     Set Rng = Range(Rng.Cells(2, 1), Rng.End(xlToRight).End(xlDown)).SpecialCells(xlCellTypeVisible)
  17.     AGE_Average = Round(Application.WorksheetFunction.Average(Rng.Columns("G")), 2)
  18.     MsgBox ComboBox4 & " 部門" & vbLf & "平均年齡 " & AGE_Average
  19.    
  20.     With Worksheets("工作表1")
  21.         .Cells.Clear
  22.         Rng.Copy .[a1]
  23.         With .Range("g1", .Range("g1").End(xlDown).Address)
  24.             .Cells(.Count + 1) = "=Average(" & .Cells.Address & ")"
  25.            .Cells(.Count + 1).NumberFormatLocal = "0.00_)"
  26.         End With
  27.     End With
  28. End Sub
複製代碼





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