2012-10-30 100 views
-1

我有一個VBA問題,我們正在尋找一個快速優雅的解決方案。VBA複選框:需要一個優雅的解決方案

問題與複選框有關:它們的選擇和取消選擇。

說我們先從行和數據的四列(單元格A1:A4:

A B Star D 

我們有三個選中箱:GalaxyUniversePlanet

在檢查Galaxy,該行被動態地複製(到下一個空行),因此

A B Star D 
A B Galaxy D 

如果我們檢查所有三個我們:

A B Star D 
A B Galaxy D 
A B UniverseD 
A B Planet D 

現在,如果我們取消選中Universe ..這行自動省略:

A B Star D 
A B Galaxy D 
A B Planet D 

我喜歡實時「爲你看到這樣的感覺「。有沒有一種優雅的方法,我不能編碼這個?

很多預先感謝。

+0

什麼是你的「不那麼優雅」的解決方案呢? – Kai

+0

不要忘記接受你在之前的問題中收到的一些很好的答案。 –

+0

複選框位於哪裏? –

回答

0
Function GetDataBasedOnSelection(ByVal galaxyChecked As Boolean, ByVal universeChecked As Boolean, _ 
ByVal planetChecked As Boolean) As Variant 
Dim currentRow As Integer 
Dim retVal(1 To 3, 1 To 4) 

currentRow = 1 
If galaxyChecked Then 
    GoSub fillInCommonValuesInThisRow 
    retVal(currentRow, 3) = "Galaxy" 
    currentRow = currentRow + 1 
End If 

If universeChecked Then 
    GoSub fillInCommonValuesInThisRow 
    retVal(currentRow, 3) = "Universe" 
    currentRow = currentRow + 1 
End If 

If planetChecked Then 
    GoSub fillInCommonValuesInThisRow 
    retVal(currentRow, 3) = "Planet" 
    currentRow = currentRow + 1 
End If 

GetDataBasedOnSelection = retVal 
Exit Function 

fillInCommonValuesInThisRow: 
    retVal(currentRow, 1) = "A" 
    retVal(currentRow, 2) = "B" 
    retVal(currentRow, 3) = "" 
    retVal(currentRow, 4) = "D" 
Return 
End Function 

如何使用上面的方法:

'Pass the actual selection (true if the checkbox is checked, false otherwise) 
Range("A2:D4").Value = GetDataBasedOnSelection(True, False, True) 
+0

@ user1717622:請在1個框中包含您的所有評論並刪除其餘部分。謝謝!! – shahkalpesh

+0

嗨Shahkalpesh,我正在修改這個現在爲我的工作表,實際版本包含一些差異,但我喜歡你的想法在這裏..我會盡快給你反饋我的企圖!複選框是表格2.0 btw – user1717622

+0

@ user1717622:如果您發現此答案有幫助,請接受它。謝謝。 – shahkalpesh

相關問題