我正在爲簡單的excel應用程序爲多個用戶在過程的不同階段輸入數據。不幸的是,我遇到了在表格的一行中存儲來自多個用戶表單的數據的問題。Excel 2013 VBA多用戶表單填寫表
我會盡我所能解釋清楚整個事情是什麼。
例如,我稱之爲「電影時間控制」應用程序。讓我們想象一下,它是用於控制與重點看電影的工具:
- 當電影開始,
- 如果顯示(爲什麼)期間,有一些休息已經重啓電影時
- (休息了多長時間,有多少休息時間以及繼續採取了什麼行動),
- 在電影被中止的情況下,爲什麼?
- 電影結束時。
應用程序段的菜單將看起來在下面的截圖:
對於每個按鈕不同用戶窗體被分配。每個表格中輸入的數據應存儲在一行中的特定表中。
用戶窗體的功能:
- MOVIE開始:創建與電影片名,日期和時間在表中的條目其啓動時。
- MOVIE BREAK:根據之前定義的電影標題,填寫日期和時間,中斷原因(如果不是標準,則從下拉列表或文本框中填寫)。該功能最多可以使用三次(三次中斷)。
- 電影重新啓動:如果發生中斷,請填寫關於日期,電影重新啓動時間以及爲了處理先前定義的中斷原因而採取的操作的信息。對於每個休息(可能三個)功能都可以使用。
- 電影中止當(日期和時間)電影被中止(無意繼續)。
- MOVIE FINISHED當(日期和時間)電影結束。
哪裏出現的問題(問題):
- 當輸入從第一行的數據,與特定標題的條目在表中單獨的表創建。根據此條目,所有其他用戶表單中的標題組合框應列出已啓動但尚未完成或中止的標題 - 只需快速選擇「公開標題」並填寫與標題相關的其他信息即可。 如何創建一個宏來列出組合框中的「打開案例」?
- 我無法找到如何在創建具有特定電影標題的條目後,將其餘數據傳輸到表格的同一行,但是從所有表格中的不同列。重要的是數據只能添加到相應標題的行(從第一個問題的組合框中選擇)。 你能幫助我的宏嗎?
宏我創建到現在(我非常有VBA的初學者,感謝理解):
MOVIE START:爲了創建與電影標題的條目。
Private Sub movie_start_save_Click()
If MsgBox("ARE YOU SURE?", vbYesNo, "Please confirm") = vbYes Then
Dim emptyRow As Long
'Make Sheet2 active
Sheet2.Activate
'Determine emptyRow
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1
'Transfer information
Cells(emptyRow, 1).Value = Movie_Title_Box.Value
Cells(emptyRow, 2).Value = Start_Date_Box.Value
Cells(emptyRow, 3).Value = Start_Time_Box.Value
'Closing the form
Unload Me
'Back to MENU
Sheet1.Select
End If
End Sub
Private Sub movie_start_cancel_Click()
Unload Me
End Sub
MOVIE BREAK:對於限定的時間和原因(不能傳輸數據):
Private Sub UserForm_Initialize()
'Fill ReasonComboBox
With ReasonComboBox
.AddItem "Tea"
.AddItem "Coffee"
.AddItem "Popcorn"
.AddItem "Dinner"
.AddItem "Not standard"
End With
'Default text in the reason box
ReasonTextBox.ForeColor = &HC0C0C0 '<~~ Grey Color
ReasonTextBox.Text = "In case of 'not standard' reason leave your comment here"
movie_break_cancel.SetFocus '<~~ This is required so that the focus moves from TB
End Sub
'Default text in the reason box - disapearing when you want to edit
Private Sub ReasonTextBox_Enter()
With ReasonTextBox
If .Text = "In case of 'not standard' reason leave your comment here" Then
.ForeColor = &H80000008 '<~ Black Color
.Text = ""
End If
End With
End Sub
'Default text in the reason box - somehow disappearing for good, but ok
Private Sub ReasonTextBox_AfterUpdate()
With ReasonTextBox
If .Text = "" Then
.ForeColor = &H80000008
.Text = ""
End If
End With
End Sub
'Cancel Button
Private Sub movie_break_cancel_Click()
Unload Me
End Sub
的其餘部分是用幾個不同實際上類似。
鏈接下載Excel文件:
https://drive.google.com/file/d/0BxFSL2h-9qflQjRzNTQ2ZlhJNjA/view?usp=sharing
希望我自己的表達不夠清楚明白這一點。 問候!
作品很漂亮,但我仍然有一些麻煩:1.當影片被中止,我想補充文本與結束日期/時間單元「胎死腹中」,使位置消失從ComboBox列表中。 2.如果在電影中第二次中斷,我不知道如何自動進入下一列(我在桌子上有三個空格)。你能幫我解決這個問題嗎? – Conceptic
我決定添加依賴Combobox與電影中斷的原因。不幸的是,我失去了從第一個Combobox獲得價值 - 「myval = Me.Combobox.Column(1)」不起作用。你知道爲什麼嗎? – Conceptic
'Movie_Title_ComboBox.List(Movie_Title_ComboBox.ListIndex,1)'會爲您提供所選項目第一列的值。 'Movie_Title_ComboBox.List(Movie_Title_ComboBox.ListIndex,3)'會給你所選項目第三列的值。 – 2017-10-23 03:43:06