大致就是從網上抓下原始資料 在A1格內,其文字部份為 109年12月03日 交易明細 我利用left 與mid等,將字串裡的日期部份取出 程序如下: [B1] = Left([a1], 3) & "/" & Mid([a1], 5, 2) & "/" & Mid([a1], 8, 2) 然後B1的值=>109/12/03 問題在後半段,我用 Q、 MsgBox [B1] & Chr(10) & Date '比較兩者 會顯示為 109/12/03 2020/12/03 再利用 [B1].NumberFormatLocal = "yyyy/mm/dd" '改成西元曆 又或是利用錄製轉西元曆,但結果B1卻依究顯示109/12/03 而我點擊excel裡的B1格時,其格式卻是轉成自訂或日曆格式,就是無法直接轉成西元曆 另外,我有試著用 msgbox IsDate([B1]) 他會顯示true...也就表示B1格內已為日期無誤..所以....我該如何解? 因為我想利用條件式判別 if [B1] <> Date then exit if 、、、、、 可是它不管怎麼跑,因為格式的問題,所以就是無法進入條件式裡.. 請大大幫幫忙...感謝
MaverickRay wrote:大致就是從網上抓下原(恕刪) 呃,樓主,您一定要轉成西元?109不行?~~因為看您最後的敘述,只是在「進入條件式」。而條件式是if.........而您又說:msgbox IsDate([B1])他會顯示true那不就簡單了?用: if IsDate([B1]) then ..........這樣不就可以進條件式了?搞定。另外,有個問題:MaverickRay wrote:因為我想利用條件式判別if [B1] <> Date then exit if、、、、 這個語法怪怪的吧? exit 後面可以接if 嗎?呵
snare wrote:109+1911=20201091204...(恕刪) 謝謝您的回覆,這幾日一直抽空再查這個問題,您講的+1911我有查到.但昨晚我發現問題的根源出在下載回來的來源檔,雖欄位為中華民國曆如:109/12/09但細看了下其實是屬於文字格式的而先前我利用VBA試圖將欄位強制轉成日期格式,諸如語法Range("R1").numberformatLocal= "yyyy/mm/dd"或直接轉成中華民國國曆轉後看格式處是變為自訂,但原先的資料依究是109/12/09 (屬於文字)這時若用手動在格內自行輸入如12/9則其會變為2020/12/09 (日期格式)這可難到我了.因為資料很多筆,不可能一一輸入當然我又試著用先切割的合式,切割是正常的..例如left、mid等查了下好像切出來的資料跟看到的資料是一樣的,表示原始格內的資料是文字否則以left等方式去抓日期時,其輸出的部份應會變為數值所以我切是切成了,另要合併回去卻不知要怎麼寫回例如我將R1格內的109/12/09 分別切到S1、T1、U1格內使S1=109T1=12U1=09那我要如何再重新組合回原先的109/12/09,且要成為日期格式..最好是能變回西元曆的因為我後來發現我想做的是利用條件判斷,當格內日期小於今天時,能將格內的日期欄內之日期劃上刪除線..以上感謝各位協助。謝謝
https://riverfootmark.blogspot.com/2020/12/vba_8.htmlhttps://riverfootmark.blogspot.com/2020/12/vbasplit.html參考split與range.NumberFormatLocal 的設定,是否有幫助到。
MaverickRay wrote:所以我切是切成了,另要合併回去卻不知要怎麼寫回 您不是會嗎??MaverickRay wrote:最好是能變回西元曆的 我3樓不就回答加1911就好了,很正常啊[b1]=Left([a1], 3) +1911 & "/" & Mid([a1], 5, 2) & "/" & Mid([a1], 8, 2)格式會自動從通用變成日期