返回列表 上一主題 發帖

[發問] 怎麼抓取A資料表假日上班的日期與時間到B資料表的儲存格中

回復 30# prince0413
你的Excel不也是2003,沒有這問題的,上傳檔案看看.
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

Ex1.zip.zip (50.06 KB) 回復 31# GBKEE

大大您好:
公司的電腦是2013的OFFICE
家裡的電腦是2003的OFFICE

但我幾乎都是再公司做的,存成2003的檔案是因為想說在家可能會開起來看看

所以大大的意思是不需要更改浮點數嗎?
不會EXCALL的笨蛋

TOP

回復 32# prince0413
這是2003的說明 , 請看看2013的說明有何不同再說
  1. Round 函數
  2. 傳回一個數值,該數值是按照指定的小數位元數進行四捨五入運算的結果。
  3. 單元 描述
  4. expression 必要引數。要進行四捨五入運算的數值運算式。
  5. numdecimalplaces 選擇性引數。數字值,表示進行四捨五入運算時,小數點右邊應保留的位元數。如果忽略,則 Round 函數傳回整數。
複製代碼
2003 中 Print_x As Integer 的範圍足夠了
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 33# GBKEE

大大您好:

這是ROUND再2013的說明

我沒有您這麼專業,看不出哪裡不同之處呢

請大大指教
不會EXCALL的笨蛋

TOP

回復 34# prince0413
試試改成    If Print_x > 0 And Print_x <= 3 Then 出勤單.Parent.PrintOut 1, Round(Print_x / 2, 0)
你這圖示是: 工作表函數的說明,Application.WorksheetFunction.Round ,直接書寫 Round 是為VBA函數.

感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

錯誤.jpg 回復 35# GBKEE

大大您好
我昨日有自己嘗試再後面的值改成 0 或 -1,結果都是一樣會有錯誤呢(如上圖)

Then 出勤單.Parent.PrintOut 1, Round(Print_x / 2 , 0)
Then 出勤單.Parent.PrintOut 1, Round(Print_x / 2 , -1)

不懂為甚麼會這樣呢,因為我看說明應該是會把算出來的0.5這值四捨五入變成1就可以符合列印標準才對
怎麼會有錯誤呢
請大大指教 ~"~
不會EXCALL的笨蛋

TOP

回復 36# prince0413


Long 資料型態Long (長整數)變數係以範圍從 -2,147,483,648 到 2,147,483,647 之 32 位元 (4 個位元組) 有號數字形式儲存。Long 的型態宣告字元為 &。

你圖示錯誤指出數須是長整數的範圍
那改如下試試
  1. Dim Print_x As Long
  2. '
  3. '
  4. Parent.PrintOut 1, Round(Print_x / 2, 0)
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

  1.                         If 出勤 <> "" Then                                  '預防沒有 [全日,早,晚]的班別

  2.                             Print_x = IIf(Print_x = 4, 1, Print_x + 1)

  3.                             With 出勤單.Offset((Print_x - 1) * 14)          '第 Print_x 的位置

  4.                                 .Range("A1") = Rng(2).Offset(, 1)           '社員中文

  5.                                 .Range("C1") = Rng(2).Offset(, 2)           '社員編號

  6.                                 .Cells(3, 0) = DateSerial(2013, 11, 日期)   '日期

  7.                                 .Range("A3") = 出勤                         '時間

  8.                                 .Range("C3") = IIf(日期.Offset(1) = "六", "(星期六)", "(星期日)") & "沙龍營業"

  9.                             End With

  10.                            

  11.                         End If

  12.                     End If

  13.                     i = i + 1

  14.                 Loop

  15.             End If

  16.             Rng(1).Offset(, 1) = IIf(Rng(3) Is Nothing, "請檢查 : 假日出勤單 , 對照表 找不到 ", "")

  17.         End With

  18.         Set Rng(1) = Rng(1).Offset(1)    '下一位姓名

  19.     Loop

  20.    

  21. End Sub
複製代碼
回復 36# prince0413

大大您好:
謝謝您不厭其煩的幫我抓錯誤
我決定把後半段程式碼直接印出的方式改成用手動列印(如上方程式碼,只有把printout的指令拿掉)
執行巨集後在左方出勤單顯示出值,然後自行手動印出
請大大幫我看看是否有哪裡還沒有改到的
目前我執行值都有對應到

因為ROUND函數我怎麼努力看就是看不懂他錯誤是什麼意思~"~


請大大指教
不會EXCALL的笨蛋

TOP

回復 37# GBKEE

大大您好:
照您的設定也是跟剛剛一樣的錯誤呢 ...

想不透明明已經將Print_x宣告改成Long , 下方Print_x / 2 , 0 也取整數了,怎麼還會出現錯誤呢~"~
不會EXCALL的笨蛋

TOP

回復 38# prince0413
  要改用 工作表函數 :抱歉浪費你的時間(我檔案的Print_x=2,所以一直沒找出錯誤..)
  1.   
  2.    MsgBox Round(0.5, 0)                    ' VBA 函數: 0
  3.    MsgBox Round(0.501, 0)                    ' VBA 函數: 1
  4.    MsgBox Application.WorksheetFunction.Round(1 / 2, 0)   '工作表函數 這才正確
  5.   '************************* 工作表函數 這才正確 *********************
  6.     If Print_x > 0 And Print_x <= 3 Then 出勤單.Parent.PrintOut 1, Application.Round(Print_x / 2, 0)
  7. '**********************************************************************************
  8. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 【蒙蔽的自由】人常在什麼都可以自由自在的時候,卻被這種隨心所欲的自由蒙蔽,虛擲時光而毫無覺知。
返回列表 上一主題