Board logo

標題: [發問] 查詢產品數量 [打印本頁]

作者: owen9399    時間: 2013-9-3 13:29     標題: 庫存輸入計算

本帖最後由 GBKEE 於 2013-9-3 14:22 編輯

請問各位大大 如何設計

庫存輸入計算

1.秀出輸入表單
2.將表單的資料儲存在 工作表1 中
3.選擇 下拉式時 將資料儲存


謝謝
作者: GBKEE    時間: 2013-9-5 08:47

回復 1# owen9399
如此的問題等同請人替你設計一程式,這不是本討論版的主旨
(羅馬不是一天造成的,多瀏灠練習VBA會進步的)
作者: owen9399    時間: 2013-9-5 09:02

我有修改 一些程式

下拉式 輸入 不會
查詢 不會
作者: GBKEE    時間: 2013-9-5 10:54

回復 3# owen9399
Private Sub UserForm1_Initialize() 不是表單的內建事件程序

程式偵錯方法: 滑鼠移動到 要偵錯的程式碼中,按 F8逐行執行 檢視 即時運算視窗 , 區域變數視窗  可偵錯

[attach]15945[/attach]
作者: owen9399    時間: 2013-9-5 11:14

謝謝大大  GBKEE
但是,如何將 下拉式的值  輸入到 SHEET1 中的位置
作者: owen9399    時間: 2013-9-5 11:19

修改 下拉式選單 完成
但 如何 輸入整筆資料 (新增) ?
作者: GBKEE    時間: 2013-9-5 11:38

回復 6# owen9399
  1. Dim Ar()
  2. Private Sub UserForm_Initialize()
  3.     ComboBox1.RowSource = Range("L2:L5").Address
  4.     ComboBox2.RowSource = Range("N2:N6").Address
  5.     ComboBox3.RowSource = Range("M2:M4").Address
  6.     Ar = Array(TextBox1, ComboBox1, ComboBox2, TextBox2, TextBox3, ComboBox3, TextBox4, TextBox5, TextBox6)
  7. End Sub
  8. Private Sub CommandButton1_Click()
  9.     Dim nrow As Integer
  10.     With Worksheets("sheet1")
  11.         nrow = .Range("A" & .Rows.Count).End(xlUp).Row + 1
  12.         '由工作表欗底部最後一個列,往上到第一個有資料的列號+1
  13.        .Range("a" & nrow).Resize(, UBound(Ar) + 1) = Ar
  14.     End With
  15. End Sub
複製代碼

作者: owen9399    時間: 2013-9-5 14:40

大大 :

我有輸入 你的程式碼

我卻無法 執行 ?

那裡出錯
作者: Hsieh    時間: 2013-9-5 15:11

回復 6# owen9399


    所有欄位都是要使用者輸入嗎?
如果是這樣你只要使用EXCEL的內建表單就可達成所有功能
如果數量的欄位要經過計算,那計算的方式是怎樣?
看你的數據不懂庫存差額欄位是怎麼算出來的
作者: GBKEE    時間: 2013-9-5 15:29

回復 8# owen9399
  1. Dim Ar()   '模組的最頂端   宣告此模組的程序可用之變數
複製代碼

作者: owen9399    時間: 2013-9-5 15:33

DEAR Hsieh:
大大

我是希望

       (台北出貨1 + 台北出貨2)  -  業務員的 (進貨數量1+進貨數量2)   = 庫存差額
ex.    ( 100   +  0 )  - (  50  +   60 ) =   -10
          (  60  + 60  )  - ( 100  +20  )  =    0
          (  50  + 50  ) -  (  40  + 40   )  = +20

另外 . 自動編號 輸入 新增 就自動產生
刪除整列 是指   如果第 10列 不要 就刪除 第10列

謝謝指教
作者: owen9399    時間: 2013-9-7 11:43

DEAR 大大:

自動編號 有做出
但是 無法相容


查詢 不會做

另外,原本的 表單輸入   (庫存差額) 取消掉
用 公式 代替
作者: GBKEE    時間: 2013-9-7 20:51

回復 12# owen9399
(台北出貨1 + 台北出貨2)  -  業務員的 (進貨數量1+進貨數量2)   = 庫存差額 這庫存差額的公式有點怪,
庫存額的公式,應該是= 進貨 - 出貨
自動編號的程式碼,附檔中沒有看到.
作者: wufonna    時間: 2013-9-8 11:07

請問 由工作表右邊最後一個有資料是如何表示,中間有空白欄
謝謝
作者: GBKEE    時間: 2013-9-8 13:09

回復 14# wufonna
  1. Sub Ex()
  2.     Dim I As Integer
  3.     With ActiveSheet
  4.         .Cells(1, .Columns.Count).End(xlToLeft).Select
  5.         '第1列 由最右邊(最後一欗: Columns.Count ),往左有資料的儲存格
  6.     End With
  7. End Sub
複製代碼

作者: wufonna    時間: 2013-9-8 23:17

謝謝 G大 ^0^
作者: owen9399    時間: 2013-9-10 10:10

A3=IF(OR(A2="",B3=""),"",A2+1)
A4
A5
....往下拉


直接於表單顯示
但是 按下輸入表單 卻跳過

無法 整合在一起
作者: owen9399    時間: 2013-9-10 13:10

本帖最後由 owen9399 於 2013-9-10 13:19 編輯

部份達成我要的目標了

但是
查詢 與 刪除列 不會


如附件

謝謝
作者: owen9399    時間: 2013-9-10 17:22     標題: 查詢產品數量

DEAR 大大:

如何查詢 產品數量

如附表
作者: GBKEE    時間: 2013-9-10 18:11

回復 18# owen9399
附檔沒有一點程式碼??
12# 有問你自動編號的程式碼,附檔中沒有看到.??(沒有回覆,如何指導你?)
作者: owen9399    時間: 2013-9-11 09:27

回復 20# GBKEE


  DEAR 大大:

自動編碼 我找到

可是 查詢 和 刪除整列 不會做

如附件

謝謝指教
作者: GBKEE    時間: 2013-9-11 10:52

回復 21# owen9399
  1. Option Explicit
  2. Option Base 1
  3. Dim Ar(), Sh As Worksheet
  4. Private Sub CommandButton1_Click()
  5.     Dim Nrow As Integer
  6.     If 資料檢查 = True Then Exit Sub
  7.     Nrow = 資料數
  8.     If MsgBox("確定新增第 " & Nrow & " 資料", vbYesNo) = vbNo Then Exit Sub
  9.    
  10.     Ar(1).Value = Nrow
  11.     With Sh.Range("a" & Ar(1) + 1)
  12.         .Resize(, UBound(Ar)) = Ar
  13.         .Resize(, UBound(Ar)) = .Resize(, UBound(Ar)).Value
  14.        '.Cells(1, "i") = "=sum(r2c4:rc4)+sum(r2c5:rc5)-(sum(r2c7:rc7)+sum(r2c8:rc8))"  '庫存差額
  15.         '(台北出貨1 + 台北出貨2)  -  業務員的 (進貨數量1+進貨數量2)   = 庫存差額   ** 怪怪的 **

  16.         '***************************************************************************************
  17.         ' 庫存差額 : 應該是業務員的 (進貨數量1+進貨數量2) - (台北出貨1 + 台北出貨2)
  18.         .Cells(1, "i") = "=sum(r2c7:rc7)+sum(r2c8:rc8)-(sum(r2c4:rc4)+sum(r2c5:rc5))"  '庫存差額
  19.         '***************************************************************************************
  20.         .Cells(1, "i").Value = .Cells(1, "i")     '轉化公式 = 計算後的數值
  21.     End With
  22. End Sub
  23. Private Sub CommandButton2_Click()
  24.     Dim I As Integer
  25.     For I = 1 To UBound(Ar)
  26.       Ar(I).Value = ""
  27.     Next
  28. End Sub
  29. Private Sub CommandButton3_Click()
  30.     Dim I As Integer, Rng As Range
  31.     With Sh
  32.         .AutoFilterMode = False
  33.         For I = 1 To UBound(Ar)
  34.             If Ar(I) <> "" Then .Range("A1").AutoFilter I, Ar(I)
  35.         Next
  36.         .Range("A:i").SpecialCells(xlCellTypeVisible).Copy .Range("AA1")
  37.         .AutoFilterMode = False
  38.         Set Rng = .Range("AA1").CurrentRegion.Offset(1)
  39.     End With
  40.    ListBox1.RowSource = Rng.Address
  41. End Sub
  42. Private Sub CommandButton4_Click()
  43.     Dim s, E As Range, I As Integer
  44.     With ListBox1
  45.         If .ListIndex = -1 Then MsgBox "沒有選擇!!": Exit Sub
  46.         s = Application.Index(Application.Transpose(Application.Transpose(.List)), IIf(.ListCount = 1, 0, 1))
  47.         If Join(s, "") = "" Then MsgBox "沒有資料!!": Exit Sub
  48.         s = Application.Index(Application.Transpose(Application.Transpose(.List)), IIf(.ListCount = 1, 0, .ListIndex + 1))
  49.     End With
  50.     s = Join(s, ",")   'S:  結合控制項的字串 [ 自動編號序號公司產品名稱台北出貨1台北出貨2業務員進貨數量1進貨數量2庫存差額 ]
  51.     With Sh
  52.         For Each E In .Range("A1", .Range("A1").End(xlDown)).Resize(, 9).Rows '整列:[ 自動編號......庫存差額 ]
  53.             If s = Join(Application.Transpose(Application.Transpose(E)), ",") Then
  54.                 If MsgBox(Join(Application.Transpose(Application.Transpose(E.Value)), ","), vbYesNo, "刪除列") = vbYes Then
  55.                     處裡刪除整列 E
  56.                 End If
  57.             End If
  58.         Next
  59.     End With
  60.     CommandButton3_Click   '重新查詢
  61. End Sub
  62. Private Sub CommandButton5_Click()
  63.     End
  64. End Sub
  65. Private Sub UserForm_Initialize()
  66.     Ar = Array(TextBox1, ComboBox1, ComboBox2, TextBox2, TextBox3, ComboBox3, TextBox4, TextBox5)
  67.     Set Sh = Worksheets("sheet1")
  68.     With Sh
  69.         ComboBox1.RowSource = Sh.Range("L2:L5").Address
  70.         ComboBox2.RowSource = Sh.Range("N2:N6").Address
  71.         ComboBox3.RowSource = Sh.Range("M2:M4").Address
  72.     End With
  73.     With ListBox1
  74.         .ColumnHeads = True
  75.         .ColumnCount = 9
  76.     End With
  77. End Sub
  78. Private Sub 處裡刪除整列(Rng As Range)
  79.     Dim I As Integer
  80.     Rng.Delete xlUp
  81.     I = 資料數
  82.     If I > 1 Then
  83.         With Sh
  84.             With .Range("a2:a" & I)
  85.             .Value = "=row()-1"
  86.             .Value = .Value
  87.         End With
  88.         With .Range("i2:i" & I)
  89.             .Value = "=sum(r2c7:rc7)+sum(r2c8:rc8)-(sum(r2c4:rc4)+sum(r2c5:rc5))"  '庫存差額
  90.             .Value = .Value
  91.         End With
  92.      End With
  93.     End If
  94.      
  95. End Sub
  96. Private Function 資料數() As Integer
  97.     資料數 = Application.CountA(Sh.Range("A:A"))     '自動編號
  98. End Function
  99. Private Function 資料檢查() As Boolean
  100.     Dim s As String, E As Range, I As Integer, ii
  101.     With Sh
  102.     For I = 2 To UBound(Ar)
  103.         ii = 10 - Len(Sh.Cells(1, I))
  104.         If I = 2 Or I = 3 Or I = 6 Then
  105.             If Ar(I).ListIndex = -1 Then s = s & IIf(s = "", "", vbLf) & Sh.Cells(1, I) + Space(ii) & vbTab & Ar(I)
  106.         Else
  107.             If Not IsNumeric(Ar(I)) And Ar(I) <> "" Then s = s & IIf(s = "", "", vbLf) & Sh.Cells(1, I) + Space(ii) & vbTab & Ar(I)
  108.         
  109.         End If
  110.     Next
  111.     If s <> "" Then
  112.     資料檢查 = True: MsgBox s, , "資料有誤!!": Exit Function
  113.     ElseIf s = "" And Ar(4) & Ar(5) & Ar(7) & Ar(8) = "" Then
  114.         資料檢查 = True: MsgBox "出貨 進貨 沒有數量", , "資料有誤!!": Exit Function
  115.     End If
  116.     s = "," & Join(Ar, "")
  117.     s = Replace(s, "," & Ar(1), "")  'S:  結合控制項的字串 [ 序號公司產品名稱台北出貨1台北出貨2業務員進貨數量1進貨數量2 ]
  118.         For Each E In .Range("B1", .Range("B1").End(xlDown)).Resize(, 7).Rows
  119.             If s = Join(Application.Transpose(Application.Transpose(E.Value)), "") Then
  120.                 MsgBox Replace(Join(Ar, ","), Ar(1) & ",", "") & vbLf & "已存在為 第" & E.Row - 1 & " 筆 資料不可新增"
  121.                 資料檢查 = True
  122.                 Exit Function
  123.             End If
  124.         Next
  125.     End With
  126. End Function
複製代碼
如圖 表單中新加一 ListBox1

[attach]16020[/attach]
作者: owen9399    時間: 2013-9-11 12:05

回復 22# GBKEE


    Dear 大大:

   真的很感謝你

    我的庫存差額 是指 每一筆 的差值
   並非 全部筆數 累計 的差額
  
   如何修正

   謝謝
作者: GBKEE    時間: 2013-9-11 12:27

回復 23# owen9399
  1. Private Sub CommandButton1_Click()
  2.   Dim Nrow As Integer
  3.     If 資料檢查 = True Then Exit Sub
  4.     Nrow = 資料數
  5.     If MsgBox("確定新增第 " & Nrow & " 資料", vbYesNo) = vbNo Then Exit Sub
  6.     ar(1).Value = Nrow
  7.     With Sh.Range("a" & ar(1) + 1)
  8.         .Resize(, UBound(ar)) = ar
  9.         .Resize(, UBound(ar)) = .Resize(, UBound(ar)).Value
  10.         '.Cells(1, "i") = "=sum(r2c7:rc7)+sum(r2c8:rc8)-(sum(r2c4:rc4)+sum(r2c5:rc5))"  '庫存差額
  11.         '.Cells(1, "i") = "=sum(r2c4:rc4)+sum(r2c5:rc5)-(sum(r2c7:rc7)+sum(r2c8:rc8))"  '庫存差額
  12.         .Cells(1, "i") = "=(rc4+rc5)-(rc7+rc8)"  '庫存差額    公式
  13.       '  .Cells(1, "i").Value = .Cells(1, "i")     '轉化公式 = 計算後的數值
  14.     End With
  15. End Sub
複製代碼
  1. Private Sub 處裡刪除整列(Rng As Range)
  2.     Dim I As Integer
  3.     Rng.Delete xlUp
  4.     I = 資料數
  5.     If I > 1 Then
  6.         With Sh
  7.             With .Range("a2:a" & I)
  8.                 .Value = "=row()-1"
  9.                 .Value = .Value
  10.             End With
  11.             With .Range("i2:i" & I)
  12.                 '.Value = "=sum(r2c7:rc7)+sum(r2c8:rc8)-(sum(r2c4:rc4)+sum(r2c5:rc5))"  '庫存差額
  13.                 .Value = "=(rc4+rc5)-(rc7+rc8)" '庫存差額  公式
  14.               '  .Value = .Value                      ''庫存差額  數值

  15.             End With
  16.         End With
  17.     End If
  18. End Sub
複製代碼

作者: owen9399    時間: 2013-9-11 13:23

回復 24# GBKEE


    Dear 大大:

   謝謝

  程式ok 非常感恩
作者: owen9399    時間: 2013-9-11 17:53

本帖最後由 owen9399 於 2013-9-11 17:59 編輯

回復 24# GBKEE


    Dear 大大:

我要 再 延伸 新的工作表 如
1.秀出 輸入數值 的表單
如果 可以 整合 用 sheet1的 下拉式 就比較好
sheet1 的 部份數值 會和 輸入數值 結合 在分到 3位總清單
目前
輸入  不會改
刪除整列   不會改

2.到時後要整合 分別 帶到 3位業務員總清單

附件


謝謝指導
作者: GBKEE    時間: 2013-9-12 06:40

回復 26# owen9399
沒說明sheet1部份數值,輸入數值的關係, 如何結合到3位總清單
配額,筆數 與 sheet1數值的關連如何??
輸入數值的表單,新增程式沒弄好
  1. '*** UserForm2 表單模組 *********
  2. Option Base 1
  3. Dim ar(), Sh(1 To 2) As Worksheet
  4. Private Sub UserForm_Initialize()
  5.      ar = Array(TextBox1, ComboBox1, TextBox2, TextBox3, TextBox4, TextBox5, TextBox6, ComboBox2)     '這裡有修改控制項,事正確的
  6.      Set Sh(1) = Worksheets("Sheet1")
  7.      Set Sh(2) = Worksheets("輸入數值")
  8.        With Sh(2)
  9.         ComboBox1.RowSource = Sh(1).Range("L2:L5").Address  ' 整合用sheet1的下拉式
  10.         ComboBox2.RowSource = Sh(1).Range("M2:M4").Address
  11.      End With
  12.      With ListBox1
  13.         .ColumnHeads = True
  14.         .ColumnCount = 8
  15.      End With
  16. End Sub
  17. Private Function 資料檢查() As Boolean
  18.         Dim s As String, E As Range, I As Integer, ii
  19.         With Sh
  20.         For I = 2 To UBound(ar)
  21.             ii = 10 - Len(Sh.Cells(1, I))
  22.             If I = 2 Or I = 3 Or I = 6 Then   'I= ??  ComboBox 及 ListBox 才有.ListIndex的屬性
  23.             '*** 這裡沒改:TextBox1 沒有.ListIndex的屬性  ****
  24.                If ar(I).ListIndex = -1 Then s = s & IIf(s = "", "", vbLf) & Sh.Cells(1, I) + Space(ii) & vbTab & ar(I)
  25.                
  26.            Else
  27.                 If Not IsNumeric(ar(I)) And ar(I) <> "" Then s = s & IIf(s = "", "", vbLf) & Sh.Cells(1, I) + Space(ii) & vbTab & ar(I)
  28.                 '*** 這裡也要改  ***********
  29.             End If
  30.             Next
  31.         If s <> "" Then
  32.         資料檢查 = True: MsgBox s, , "資料有誤!!": Exit Function
  33.         ElseIf s = "" And ar(4) & ar(5) & ar(7) & ar(8) = "" Then  '*** 這裡也要改  ***********
  34.             資料檢查 = True: MsgBox "出貨 進貨 沒有數量", , "資料有誤!!": Exit Function
  35.        End If
  36.         s = "," & Join(ar, "")
  37.         s = Replace(s, "," & ar(1), "")  'S:  結合控制項的字串 [ 自動編號序號公司配額筆數數值應付已付(進貨數量1+進貨數量2)業務員 ]
  38.             For Each E In .Range("B1", .Range("B1").End(xlDown)).Resize(, 7).Rows
  39.                 If s = Join(Application.Transpose(Application.Transpose(E.Value)), "") Then
  40.                     MsgBox Replace(Join(ar, ","), ar(1) & ",", "") & vbLf & "已存在為 第" & E.Row - 1 & " 筆 資料不可新增"
  41.                     資料檢查 = True
  42.                     Exit Function
  43.                 End If
  44.             Next
  45.         End With
  46.         
  47.   End Function
複製代碼

作者: owen9399    時間: 2013-9-12 10:43

回復 27# GBKEE


    Dear 大大:
   我有修改
   可是 刪除整列 無法用

   不知如何改

   謝謝
作者: GBKEE    時間: 2013-9-12 11:22

回復 28# owen9399
  1. Private Sub CommandButton3_Click() '查詢
  2.     Dim I As Integer, Rng As Range
  3.      With Sh(2)
  4.          .AutoFilterMode = False
  5.          For I = 1 To UBound(ar)
  6.             If ar(I) <> "" Then .Range("A1").AutoFilter I, ar(I)
  7.          Next
  8.         '.Range("A:i").SpecialCells(xlCellTypeVisible).Copy .Range("AA1") ->'Sh(2)的 AA1->AI欗
  9.          '*******   .ColumnCount = 8    'ListBox1設定8欗     所以改成如下********
  10.         .Range("A:H").SpecialCells(xlCellTypeVisible).Copy .Range("AA1")
  11.          .AutoFilterMode = False
  12.          Set Rng = .Range("AA1").CurrentRegion.Offset(1)   'Sh(2)的 AA1->AH :AI欗的資料,*****AI欗須先刪掉(手動)*****
  13.      End With
  14.   ListBox1.RowSource = Rng.Address
  15. End Sub
  16. Private Sub CommandButton4_Click() '刪除整列
  17.     Dim s, E As Range, I As Integer
  18.     With ListBox1
  19.         If .ListIndex = -1 Then MsgBox "沒有選擇!!": Exit Sub
  20.         s = Application.Index(Application.Transpose(Application.Transpose(.List)), IIf(.ListCount = 1, 0, 1))
  21.         If Join(s, "") = "" Then MsgBox "沒有資料!!": Exit Sub
  22.         s = Application.Index(Application.Transpose(Application.Transpose(.List)), IIf(.ListCount = 1, 0, .ListIndex + 1))
  23.         'S= ListIndex的選擇.ListIndex 那一列的資料,會比 Resize(, 8)多一欗.
  24.         '當
  25.         '->.Range("A:i").SpecialCells(xlCellTypeVisible).Copy .Range("AA1") ->'Sh(2)的 AA1->AI欗
  26.         '-> For Each E In .Range("A1", .Range("A1").End(xlDown)).Resize(, 8).Rows '整列:[ 自動編號......業務員 ]
  27.     End With
  28.     s = Join(s, ",")   'S:  結合控制項的字串 [ 自動編號序號公司配額筆數數值應付已付(進貨數量1+進貨數量2)業務員 ]
  29.     With Sh(2)
  30.          For Each E In .Range("A1", .Range("A1").End(xlDown)).Resize(, 8).Rows '整列:[ 自動編號......業務員 ]
  31.             Debug.Print s
  32.             Debug.Print Join(Application.Transpose(Application.Transpose(E)), ",")
  33.             If s = Join(Application.Transpose(Application.Transpose(E)), ",") Then
  34.                
  35.                 If MsgBox(Join(Application.Transpose(Application.Transpose(E.Value)), ","), vbYesNo, "刪除列") = vbYes Then
  36.                      處裡刪除整列 E
  37.                 End If
  38.             End If
  39.         Next
  40.     End With
  41.     CommandButton3_Click   '重新查詢
  42. End Sub
複製代碼

作者: owen9399    時間: 2013-9-12 13:09

回復 29# GBKEE


    DEAR 大大:

   我試不出來 刪除整列 的問題

   無法執行
作者: GBKEE    時間: 2013-9-12 13:47

回復 30# owen9399
請在對照 29# 看看我說了什麼!
  1. Private Sub CommandButton3_Click() 'UserForm2的查詢程式碼
  2. Dim I As Integer, Rng As Range
  3.      With Sh(2)
  4.           .Range("AA1").CurrentRegion = ""  '加這行 UserForm2表單執行一次後可不需這程式碼
  5.          .AutoFilterMode = False
  6.          For I = 1 To UBound(ar)
  7.             If ar(I) <> "" Then .Range("A1").AutoFilter I, ar(I)
  8.          Next
  9.         .Range("A:h").SpecialCells(xlCellTypeVisible).Copy .Range("AA1")
  10. '原本是 .Range("A:i").SpecialCells(xlCellTypeVisible).Copy .Range("AA1")
  11.          .AutoFilterMode = False
  12.          Set Rng = .Range("AA1").CurrentRegion.Offset(1)
  13.      End With
  14.   ListBox1.RowSource = Rng.Address
  15. End Sub
複製代碼

作者: owen9399    時間: 2013-9-13 17:44

回復 31# GBKEE


    Dear 大大:
  我有新的問題 要問
  如附件
  
  將 輸入進貨表的數據 分出給 阿美 阿仁 小王

並把相同公司 的數量 總計  (進貨 出貨 總計)  
  謝謝
作者: GBKEE    時間: 2013-9-13 21:27

回復 32# owen9399
選擇進貨表中的資料範圍,用指令[資料]-> [自動篩選],將各業務員依次的篩選資料,複製到各業務員的工作表裡
自己試試,用錄製巨集,看看程式碼,練習一下,
作者: owen9399    時間: 2013-9-17 15:49

回復 33# GBKEE


    Dear 大大 :

   我有做出 部份的篩選 按 阿美總庫存 按鈕 ,再點選  阿美總庫存 的表 就分類出來

   1.篩選後的加總 不會
   2.按 阿美總庫存 按鈕 自動跑到 秀出 阿美總庫存的資料表


  謝謝

祝 中秋佳節 愉快
作者: GBKEE    時間: 2013-9-17 16:49

回復 34# owen9399
進步好多,讚.
  1. Private Sub CommandButton3_Click()
  2.     Dim y
  3.     Dim Joken3 As String
  4.     Joken3 = "小王"
  5.     If Joken3 = "" Then Exit Sub
  6.     With Sheets("進貨表")
  7.         '若在篩選中,先解除顯示全部
  8.         If .FilterMode Then .ShowAllData
  9.         '以〔第5欄.業務員〕進行篩選
  10.         .[A1].AutoFilter Field:=5, Criteria1:=Joken3
  11.         '取得篩選後,最後一筆資料的〔列號〕
  12.         y = .[A65536].End(xlUp).Row
  13.         '進行貼轉資料
  14.         .Range("A1:F" & y).Copy [小王總庫存!A1]
  15.         '再恢復全表
  16.         .ShowAllData
  17.         '取消[自動篩選] 下拉箭號
  18.         .[A1].AutoFilter
  19.         MsgBox [SUM(小王總庫存!F:F)]  '篩選後的加總
  20.   End With
  21.   Beep
  22. End Sub
複製代碼

作者: owen9399    時間: 2013-10-8 11:14

本帖最後由 owen9399 於 2013-10-8 11:15 編輯

回復 35# GBKEE


    dear 大大:
   請問一下 如何在 進貨表 中 , 按一下 阿美庫存表 就秀出來

  謝謝
作者: owen9399    時間: 2013-10-8 14:09

大大
我找出來了
如何在 進貨表 中 , 按一下 阿美庫存表 就秀出來

指令:
Sheet2.Activate
作者: owen9399    時間: 2013-10-8 14:59

DEAR GBKEE 版大:
我在 阿美庫存表中 加入 查詢功能
為函數改為 VBA程式

如何 改成 VBA 程式
將 下拉式選單的 查詢公司 重覆的 不顯示出來 , 並統計 出貨數量 與 進貨數量 的總合

謝謝

如附件
作者: GBKEE    時間: 2013-10-10 16:27

本帖最後由 GBKEE 於 2013-10-11 14:49 編輯

回復 38# owen9399
[阿美總庫存] 模組預設事件程序之程式碼
  1. Option Explicit
  2. Private Sub Worksheet_Activate()          '活頁簿: 選擇工作表的預設事件
  3.     '進階篩選  公司名稱  'Columns.Count ->工作表的總欗數 ->最後一欗
  4.     Range("B:B").AdvancedFilter xlFilterCopy, , Cells(1, Columns.Count), True
  5.     With Range("I2").Validation   '資料的驗證清單
  6.         .Delete
  7.         .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
  8.         xlBetween, Formula1:="=" & Range(Cells(2, Columns.Count).Address, Cells(1, Columns.Count).End(xlDown).Address).Address
  9.         .IgnoreBlank = True
  10.       
  11.     End With
  12. End Sub
  13. Private Sub Worksheet_Change(ByVal Target As Range)
  14.     Application.EnableEvents = False
  15.     If Target.Address(0, 0) = "I2" Then
  16.         Range("J2") = [SUMIF(B:B,I2,D:D)]   '工作表的函數在 VBA用中括號計算  [ <- 工作表的函數  -> ]
  17.         Range("K2") = [SUMIF(B:B,I2,F:F)]
  18.     End If
  19.     Application.EnableEvents = True
  20. End Sub
複製代碼

作者: owen9399    時間: 2013-10-11 14:37

本帖最後由 owen9399 於 2013-10-11 14:43 編輯

回復 39# GBKEE


    dear 版大:
   我有貼上測試,但是 出貨數量 與 進貨數量 並無統計  ,未同步
   該如何做
   謝謝
作者: owen9399    時間: 2013-10-11 17:02

回復 39# GBKEE


    DEAR 版大:
    更改 後 數字也沒有變化

    Application.EnableEvents = True

   不知如何修正

   謝謝
作者: GBKEE    時間: 2013-10-12 14:27

回復 41# owen9399
程式碼更新後,請檔案關閉,再開啟.
作者: owen9399    時間: 2013-10-15 15:29

回復 42# GBKEE

  謝謝大大指導

  請教 大大:
  我另外 創一個 合併的 新工作表
  新增  庫存工作表 ( 3位 )
  目前 只規畫
  阿美的 總清單 與 阿美 庫存
  在 sheet1 輸入 會存到  阿美 庫存
  在 輸入數值 輸入 會存到  阿美 總清單
  
  可是 如 另外一個 附件  相同的 數值無法輸入
作者: owen9399    時間: 2013-10-15 15:47

回復 43# owen9399


    輸入數值也一樣 無法 輸入 相同
作者: GBKEE    時間: 2013-10-15 15:58

回復 44# owen9399
  1. Private Function 資料檢查() As Boolean
  2.     Dim s As String, E As Range, I As Integer, ii
  3.     With Sh
  4.         For I = 2 To UBound(ar)
  5.             ii = 10 - Len(Sh.Cells(1, I))
  6.             If I = 2 Or I = 3 Or I = 6 Then
  7.                If ar(I).ListIndex = -1 Then s = s & IIf(s = "", "", vbLf) & Sh.Cells(1, I) + Space(ii) & vbTab & ar(I)
  8.             Else
  9.                 If Not IsNumeric(ar(I)) And ar(I) <> "" Then s = s & IIf(s = "", "", vbLf) & Sh.Cells(1, I) + Space(ii) & vbTab & ar(I)

  10.             End If
  11.         Next
  12.         If s <> "" Then
  13.             資料檢查 = True: MsgBox s, , "資料有誤!!": Exit Function
  14.         ElseIf s = "" And ar(4) & ar(5) & ar(7) & ar(8) = "" Then
  15.             資料檢查 = True: MsgBox "出貨 進貨 沒有數量", , "資料有誤!!": Exit Function
  16.         End If
  17.         '******** 以下為檢查是否有相同的資料 如不需要可刪除  ****************
  18.         s = "," & Join(ar, "")
  19.         s = Replace(s, "," & ar(1), "")  'S:  結合控制項的字串 [ 序號公司產品名稱台北出貨1台北出貨2業務員進貨數量1進貨數量2 ]
  20.         For Each E In .Range("B1", .Range("B1").End(xlDown)).Resize(, 7).Rows
  21.             If s = Join(Application.Transpose(Application.Transpose(E.Value)), "") Then
  22.                 MsgBox Replace(Join(ar, ","), ar(1) & ",", "") & vbLf & "已存在為 第" & E.Row - 1 & " 筆 資料不可新增"
  23.                 資料檢查 = True
  24.                 Exit Function
  25.             End If
  26.         Next
  27.         '******************************************************************************
  28.         End With
  29.   End Function
複製代碼

作者: owen9399    時間: 2013-10-15 16:45

回復 45# GBKEE


    謝謝 版大 的指導
   
   我有個 問題
   當 輸入數據後
   阿美的 總清單 與 阿美 庫存
  在 sheet1 輸入 會存到  阿美 庫存  
  在 輸入數值 輸入 會存到  阿美 總清單

  就是  輸入多筆 資料  假設是 阿美的 就 統計後   分別 存入  阿美 庫存 或  阿美 總清單

1. 輸入   102001順天   保溫杯   台北出貨 1( 300 )      業務員   阿美    台北進貨 1 (300)
     輸入   102001順天   保溫杯   台北出貨 1(150 )      業務員    阿美    台北進貨 1 (150)

合併 後 儲存在  分別 存入  阿美 庫存 或  阿美 總清單
  102001順天   保溫杯   台北出貨 1(450)      業務員    阿美    台北進貨 1 (450)

只印出  單一公司 及  總數量  的統計

謝謝
作者: GBKEE    時間: 2013-10-27 15:20

回復 46# owen9399
附上檔案看看




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