請教一下VBA兩欄互動的邏輯語法該怎麼寫才妥?謝謝

恩,我想做一個年、月相轉換的工作表
但剛發現我邏輯打結了..
利用事件程序來做..
但卻不知語法要怎麼打
圖示如下:
請教一下VBA兩欄互動的邏輯語法該怎麼寫才妥?謝謝
我的判斷條件是先判斷年,再轉成月,
然後若月期有更動,理應年要跟著變
但因為if 先判斷了年,所以月變動時,他會適為年欄的格內有值,所以年欄值不會動..
哈..高手幫個忙唄,感謝啊..想到頭都痛了

對了,因為我是先設當年數欄<>"" 時才進入判斷條件
所以這邏輯有錯..因為不論是先輸入年期,或先輸入月期
都會使得年期的格內有值了..
如此一來在同一列的年或月期一經更改,因為年期欄位內已有值...所以就不會動作了
語法大致如下:
If Cells(myRow, 期數年欄) <> "" Then
Cells(myRow, 期數月欄) = Cells(myRow, 期數年欄) * 12
ElseIf Cells(myRow, 期數月欄) <> "" Then
Cells(myRow, 期數年欄) = Cells(myRow, 期數月欄) / 12
End If

註:不知有沒有方法可以較口語化..如
如果年欄或月欄有變動,另一欄就得強迫被更動..
恩.就這一句...我思考到快天亮了= ="""

==============
另外想多請達人能解另一疑惑..
那就是個人發現我在事件程序撰寫程序時,若邏輯有誤,常會出現中斷,再手動按停止鍵後,但事件程序卻不再動作了.(無法如同一般模組下的程序,在按下停止鍵後,重新執行該巨集即可重新動作)

此時我只好必須將""所有已開啟的活頁簿""全部關上,再重啟那個有事件程序的活頁簿後,才能使那內部的事件程序處於常駐..
我想請教的是有沒有方法可以不用關閉所有已開啟的活頁簿,就能讓中斷的事件程序重啟?謝謝高手們.
因為這樣真的很麻煩,必須關掉excel所有的活頁簿...= ="""
這問題困擾我甚久
Orz
文章關鍵字
是指影片中的效果嗎?如果是的話,可以參考我下圖的程式碼
另外,後續我會出一篇講解程式碼的影片,想學的人,可以關注一下,




joblyc017 wrote:
是指影片中的效果嗎?


這種寫法很適合教學用,每行都是基礎語法
就算是初學者也很容易看懂,做的很好


提供另一種不適合教學的,只是為了偷懶少打幾個字的寫法
這種要解說起來就有點麻煩(使用您的範例改寫)
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Row = 1 Or Target.Column > 2 Then Exit Sub
Dim r As Range
Application.EnableEvents = False
For Each r In Target
r.Offset(0, IIf(r.Column = 1, 1, -1)) = IIf(r = "", "", Evaluate(r & IIf(r.Column = 1, "*12", "/12")))
Next
Application.EnableEvents = True

End Sub

joblyc017 wrote:
是指影片中的效果嗎?(恕刪)
先感謝以上二位的熱心幫忙,因家中有些事所以我這些日可能無法好好鑽研這個,不過其實我在前些日發完帖後不久,有找到用NOT的方法去try,結果可行,只是因為我尚未完全搞清它的語法解釋,所以就一直沒丟上來自問自答了.
哎..我想我要學這些東西可能時間上也不縱容我了..不過我很謝謝諸位百忙的熱心..
在此深深感謝,願您們都能事事如意..^^..
我只覺得我可能GG了...哎..
snare wrote:
這種寫法很適合教學用(恕刪)


To snare:

感謝提供解法😄,多學了個技巧,Evaluate能將字串轉換成運算結果👍


To MaverickRay:

恭喜研究出解法👏,我用Excel整理資料,也是先求有完成就好了喔,有額外的時間,才會做更進一步的學習。最後,感謝你的祝褔!😊
MaverickRay
您客氣了,近期家中有事,故較少上來,是我要感謝您們百忙抽空幫忙解答才是。還是一樣,深深感謝^^
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!