English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

小弟在知識+中尋找無數次後

終於還是忍不住發問

小弟從事小小加工業,想用excel製作出貨單及客戶月結單(我想目前還用不到access,而且我也不熟)

出貨單格式及資料轉存製作月結單等,都已從知識家找到範例並修改成自己所想要的格式(十幾年前學的basic及Qbasic,vba居然還能小懂...呵呵)。

現在問題就出在日期及出貨單流水號的問題上!

假設:

1. 儲存格F4為日期
2. 儲存格A1為出貨單流水號

個人製作二個按鈕來執行巨集列印、轉存的動作及清除輸入資料的範圍。按列印時,列印及轉寫的動作及按清除資料時都已完成

問:

1.日期是否可直接用Today()函數?而轉寫資料的日期不會隨時間變動?(轉寫用offset指令是僅轉寫"值"或是連格式一併轉寫?)

2.我想在按清除輸入範圍時,出貨單流水號如何自動+1?

流水號最好是日期+4碼

如9602110001(96年02月11日第1筆出貨單)


請教各位高手先進,小弟這個問題vba程式碼該如何寫??
煩請高手們在解說時註解所寫程式的意義,這樣我才能慢慢看的懂,因為除了解答以外我也想趁機會學習!感謝!

2007-02-11 18:04:17 · 4 個解答 · 發問者 Anonymous in 電腦與網際網路 軟體

to 玲:
1.我居然沒想到這種土法練鋼的方法....這也算是一種解決之道
2.轉存月結的巨集程式,需依照不同的表格來設計,我只懂Qbasic,巨集的vba程式我也只能依據別人寫的程式來慢慢修改成我想要的!如果可以,我們可以慢慢研究!

2007-02-12 16:57:24 · update #1

To Fayi:

我要 1不是要看出貨幾筆,而是出貨單上需要列印以便客戶的查尋!

你寫的我完全看的懂,但似乎還可以更簡化一點!


To 一個人的咖啡:

我試著用你寫的程式,但是出現

執行階段錯誤"13"
型態不符合

我需要改哪些地方嗎,這個按鈕純粹只有消除可輸入的儲存格及流水號 1 而已!

2007-02-12 17:11:42 · update #2

To 一個人的咖啡:

搞定...只能說您厲害!
等明天我再來看看驗證結果!

2007-02-12 19:18:14 · update #3

TO 一個人的咖啡:

馬上我就有問題了,在出貨單上完全可行

但是我在轉存資料時,第二格的資料就是流水號

我用 .Offset(0, 1).Value = Range("A1").Value '轉寫單號

這樣只會把數值轉存過來而已,所以轉存後的流水號只是1.2.3
我該怎麽寫才不會破壞其他欄位的轉存?

2007-02-12 19:41:31 · update #4

4 個解答

1.日期是否可直接用Today()函數?而轉寫資料的日期不會隨時間變動?(轉寫用offset指令是僅轉寫"值"或是連格式一併轉寫?)

F4的儲存格 輸入 =today()

Sub 轉寫日期()
Dim mystr As String

mystr = Range("F4").Value
Range("F5").Value = mystr

End Sub

由於Mystr是字串
填入時 是取得F4 目前的值
再將此值填入F5格中

並非 直接複制F4儲存貼到F5上
所以根本不會隨著時間變動

只要點一下儲存格 就知道我的意思了

F4是寫 =today() F5 卻是寫2007/2/12


============================================

2.我想在按清除輸入範圍時,出貨單流水號如何自動+1?

事實上有個方式
你不需要特別去加1

就是設定一格儲存格 = counta(A : A)
它不就等於 告訴你目前有多少筆紀錄了嗎?


比方 F5 公式為 = counta(A:A)

Sub 填入自動編號()

Dim mystr As String
mystr = Range("F4").Value
' F4 公式為 = today()

Dim yy, m, d, ID As String
Dim count As Integer
'宣告

count = Range("F5").Value
'指定count的值 (是數字)
yy = Mid(mystr, 3, 2) + 89
'只是將西元轉成民國年份

If Mid(mystr, 6, 2) > 10 Then
m = "0" & Mid(mystr, 6, 1)

If Mid(mystr, 8, 2) > 10 Then
d = Mid(mystr, 8, 2)
Else
d = "0" & Mid(mystr, 8, 1)
End If

Else
m = Mid(mystr, 6, 2)

If Mid(mystr, 8, 2) > 10 Then
d = Mid(mystr, 8, 2)
Else
d = "0" & Mid(mystr, 8, 1)
End If

End If
'利用mid 去取得字串 ,並且判斷該補上幾個0

If Range("F5").Value < 10000 Then
ID = Range("F5").Value
End If

If Range("F5").Value < 1000 Then
ID = "0" & Range("F5").Value
End If

If Range("F5").Value < 100 Then
ID = "00" & Range("F5").Value
End If

If Range("F5").Value < 10 Then
ID = "000" & Range("F5").Value
End If
'同上 補上流水編號的0值

Cells(count + 1, 1).Value = yy & m & d & ID
'填入A欄 資料

End Sub

2007-02-12 06:59:21 補充:
的確是有單獨只取得年月日的方式
只是

它們是date 值 , 而你的編號卻是數字(或文字)

你聽過A 1月 - 3 = ? 的問題嗎?

沒有

因為它們不一樣

你得透過其他方式去取得值並且"加料"才行


我猜 你疑惑的地方 應該就是這了
為什麼數字對 但是就是不給虧

2007-02-13 02:59:48 補充:
看來 我太小看您的程度了

想說 十幾年前學
大概忘光了

所以就以無腦判斷落落長寫了一大串

不過找到答案就好 :D

2007-02-12 01:39:48 · answer #1 · answered by ? 2 · 0 0

●九州 娛樂 網站 http://ts777.cc
●●●運彩遊戲、真人遊戲、電子遊戲、對戰遊戲、對戰遊戲●●●

●新舊會員儲值就送500點

● 真人百家樂彩金等你拿

●線上影片直播、正妹圖、討論區免費註冊

歡迎免費體驗交流試玩!

●九州 娛樂 網站 http://ts777.cc

2015-04-27 00:04:14 · answer #2 · answered by 惠君 1 · 0 0

問題解決了嗎?

2007-02-21 22:15:46 補充:
難道沒人跟你說過,得到答案要對人表示感謝嗎?
只知獲得連最基本的禮貌都不願意給與.....
回答你的問題我是欠你的嗎?...
拿了答案就跑...

2007-02-16 16:10:23 · answer #3 · answered by 一個人的咖啡 4 · 0 0

我是這樣用 錄巨集 假設b1是流水號儲存格 新增清除前先複製b1到d1 d2輸入1 固定不動 d3 公式設為d1+d2 後清除b2 再複制d3到b2 以上動作錄製一巨集 指定一按鈕 每次按新曾及會自動加一號 日期 我用today() 我不會vba 所以用笨方法 您參考
令外方便請教您嗎 您轉存月結是如處裡 這是我目前的困擾
方便教一下嗎

2007-02-21 22:14:45 補充:
t = Cells(4, 10).Value
Cells(4, 10).Value = t 1

2007-02-21 22:18:01 補充:
試一試我完成了

2007-02-11 20:13:06 · answer #4 · answered by 2 · 0 0

fedest.com, questions and answers