簡體   English   中英

Excel VBA用戶窗體全局計數器

[英]Excel VBA Userform Global Counter

我創建了一個VBA用戶窗體,其目的是允許用戶更新該工作簿中保存的記錄。 在初始化時,UserForm在各個文本框中填充某些單元格值,然后要求用戶在其他文本框中添加某些信息,然后單擊“ Next”按鈕,將新信息添加到數據表中,然后單擊下一步。條目填充用戶窗體。

我目前通過保持對當前行(currentRow)的計數來實現這一點,一旦單擊“下一步”按鈕,currentRow = currentRow +1。這很好。

我現在的問題是,如果特定單元格的值不同,則需要顯示不同的UserForm,例如:

If Range(Cells(currentRow, 3).Address).Value = "Planning" Then
    PlanningUserForm.Show
Else
... rest of code ...

這行得通,但是一旦這個新的PlanningUserForm初始化,我就難以維護計數器。 我需要它知道currentRow的當前值,以便它可以在其文本框中顯示正確的單元格值。

我已經將變量currentRow聲明為Public,但是它似乎沒有將值傳遞到新的用戶窗體中。 這可能嗎? 還是我對Excel的要求過多?

非常感謝

馬特

您可以隨時使用注冊表。 將來它也可以用於許多其他事情。

SaveSetting "Your macro", "Values", "CurrentRow", currentRow

現在,currentRow保存在您的注冊表中。

現在在您的PlanningUserForm

currentRow = GetSetting("Your macro", "Values", "CurrentRow")

您從注冊表中獲得了保存的價值。

我對全局變量有不好的經驗,這就是為什么我建議注冊。

如果已將currentRow聲明為public,則可以在PlanningUserForm中訪問currentRow值作為UserForm1.currentRow ,其中UserForm1是已將currentRow聲明為Public的UserForm1.currentRow UserForm1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM