Board logo

標題: [發問] 關於自動填入的問題 [打印本頁]

作者: littlea    時間: 2010-12-29 18:34     標題: 關於自動填入的問題

本帖最後由 littlea 於 2010-12-29 23:46 編輯

各位大大好:

最近在製作工作上所需之報表
手邊雖有範例檔案,但因為是VBA初學者
對於一些問題仍不知該如何解決
附上的檔案中:
example內的日報表裡有自動填入項目的按鍵
填入日期後,巨集會將下面列所打項次對照的施工量,
自動回填入月報表內項次對照後段的填1,填2.....內,
因此小弟依樣畫葫蘆,於test裡面製做了相同的巨集,
相對應的數字也做了修改,但按鍵按下後,
卻無法跳出原本example中"請輸入日期的視窗",
反而是出現了"執行階段錯誤'9'陣列索引超出範圍",
自行比照判斷大概是 DialogSheets("請輸入編號").Show 出了問題,
卻不知道錯誤在哪,麻煩各位大大幫小弟指導一下,感激不盡!

作者: Hsieh    時間: 2010-12-29 20:03

回復 1# littlea
test檔案內少了DialogSheets("請輸入日期")對話方塊
作者: littlea    時間: 2010-12-29 20:51

回復 2# Hsieh

Hsieh大 請問對話方塊能從VBA裡面增加嗎?
像是Msg那樣,還是必須從其他地方寫入呢?

作者: GBKEE    時間: 2010-12-29 21:49

本帖最後由 GBKEE 於 2010-12-29 21:50 編輯

回復 3# littlea
活頁簿   視窗下面的工作表標籤 按下右鍵 ->選取  插入..    按下 Excel 5.0 對話方塊
VBA 可用 INPUTBOX 取代 DialogSheets("請輸入日期").SHOW
作者: Hsieh    時間: 2010-12-29 23:21

回復 3# littlea

example 檔案中,在格式/工作表/取消隱藏工作表
將對話方塊工作表取消隱藏一併複製到test檔案
作者: littlea    時間: 2010-12-29 23:45

本帖最後由 littlea 於 2010-12-30 11:49 編輯

回復 5# Hsieh

感謝兩位大大
對話方塊的問題已經解決
但在test檔案中,出貨通知單工作表按下按鍵後
只跑完了三個彈出訊息表後就沒動作了
並沒有像example中的日報表那樣,填完日期後回填數字跟排序,
搞不太清楚是哪裡還有遺漏,附上更新後的檔案,
麻煩大大再幫我確認一下,多謝。

作者: littlea    時間: 2010-12-30 11:00

麻煩能再幫我看看是哪裡有問題呢
或許可能是太簡單的問題
不過小弟已經弄了很久還是找不出來問題根源
就卡在最後的步驟
按下按鍵 key入數字後 可以自動跑回填跟排序的動作
麻煩大大指導,謝謝。

作者: GBKEE    時間: 2010-12-30 11:12

本帖最後由 GBKEE 於 2010-12-30 11:14 編輯

回復 7# littlea
你少了 顯示 DialogSheets("請輸入編號").Show  按下確定後所要執行的巨集
這是Example.xls 的作法
如圖1 對話框的邊沿 按下右鍵 顯示 功能表->巨集
[attach]4261[/attach]

圖2: 選定巨集 後 按下確定
[attach]4263[/attach]
作者: littlea    時間: 2010-12-30 11:49

本帖最後由 littlea 於 2011-1-4 08:23 編輯

回復 8# GBKEE

感謝GBKEE大
原來是DialogSheets也要設定指定巨集
不過好像是設在確定那個按鈕上才不會數字還未輸入就先跑回填了
只是現在又遇到一個問題
就是我設定好以後都正常的跑完程式
不過去到CL221表中卻沒看見填入的數字
對照Cells所對應的儲存格應該都是正確才對
麻煩請大大再幫我看看,附上更新後檔案,謝謝。

作者: GBKEE    時間: 2010-12-30 12:38

回復 9# littlea
請你將 Sheet6(出貨通知單(範本)) 物件的程序 剪下複製到 Module1 試試看
因為 Sub test()程序是寫在Sheet物件 裡 Sheet6(出貨通知單(範本))
裡面的 Cells 沒有指明工作表 就是在 Sheets("出貨通知單(範本)") 的Cells
Sub test()程序 移到  Module1 (一般模組) 之後 Cells 在Sheets("CL221").Select  之後會是為作用中工作表的 Cells

請記得要將 DialogSheets("請輸入編號").Show 的巨集 指定好
作者: littlea    時間: 2010-12-30 13:56

回復 10# GBKEE

GBKEE大
照您所說的方式將程序貼製Module1,
也確定了各個需要指定巨集的部分,
畫面在跑的時候可以看見兩個Sheets有在對照的感覺,
不過仍然只是空跑,數字沒有回填,
會是這裡的問題嗎? d% = DialogSheets("請輸入編號").EditBoxes(1).Text
EditBoxes(1).Text不太清楚所指的是哪個部分
煩請大大再幫忙看一下,謝謝。

作者: GBKEE    時間: 2010-12-30 17:03

本帖最後由 GBKEE 於 2010-12-30 17:05 編輯

回復 11# littlea
在VBA是窗中
Sub test()
排序
Dim d%
I = 17
Do
    I = I + 1
    Sheets("出貨通知單(範本)").Select
    a$ = Cells(I, 1)
    If a$ = "" Then Exit Do
    Sheets("CL221").Select
     J = 8
     Do
      J = J + 1
      If Cells(J, 1) = "" Then Exit Do    '這行如圖 按F9 設下 中斷點 中斷後   按F8逐行執行      
      Debug.Print Cells(J, 1) & ";" & a$     '這行可用 檢視->  即時運算視窗    來查看變數值
      If Cells(J, 1) = a$ Then
         Sheets("出貨通知單(範本)").Select
        P$ = Cells(I, 6)
         d% = DialogSheets("請輸入編號").EditBoxes(1).Text
         Sheets("CL221").Select
         Cells(J, d% + 14) = P$
        Exit Do
      End If
     Loop
   Loop
End Sub
[attach]4272[/attach]
作者: littlea    時間: 2010-12-30 18:25

謝謝GBKEE大
我大概知道原因了
應該是CL221表中空格造成Exit Do
我先把原本表格調整以後再測試看看
多謝大大願意花費這麼多時間,感激不盡。





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