2014-01-20 148 views
0

我試圖自己處理它並重新編輯該問題。所以我Excel中VBA實現用戶窗體(我上傳的是什麼樣子enter image description hereExcel VBA用戶窗體

的圖片,我用下面的代碼從文本信息傳輸到Excel行

'Determine Empty Row 
emptyRow= WorksheetFunction.Counta(Range("A:A"))+1 
'Transfer into to cells 
Cells(emptyRow, 1).Value= NOD_Text.Value 
Cells(emptyRow,2).Value=TOD_Text.Value 
Cells(emptyRow,3).Value=Program_Text.value 
Cells(emptyRow,4).Value=email_Text.value 
Cells(emptyRow,5).Value=OPN_Text.value 
Cells(emptyRow,6).Value=CPN_Text.Value 

我有多個工作表與利益相關者(工作表A,工作表B,工作表C,工作表D)相同,我想根據選中的複選框傳輸上述信息。例如,如果點擊複選框A,B,C,然後點擊信息被轉移到工作表A,B,C

我不確定如何激活工作表取決於利益相關者的複選框...

If A_Checkbox.Value=True then Worksheets(A).Activate then Cells(emptyRow, 1).Value= NOD_Text.Value 
Cells(emptyRow,2).Value=TOD_Text.Value 
Cells(emptyRow,3).Value=Program_Text.value 
Cells(emptyRow,4).Value=email_Text.value 
Cells(emptyRow,5).Value=OPN_Text.value 
Cells(emptyRow,6).Value=CPN_Text.Value 

不知道上面的代碼是否正確,但問題是..如果人複選框3利益相關者(A,B,C)...?我不知道如何編碼...

此外,我想把所有的信息都放在主標籤中,不管哪個盒子被剔除,但我不知道如何始終保持主標籤激活.. 。

我希望這是比以前

+2

*非常感謝,如果你能幫助我或建議參考/鏈接/指南讓我學習。*這不是這個網站的工作原理。我會建議使用'UserForm'(谷歌它),否則一系列'輸入框'會做的伎倆。但是,您似乎也在提出廣泛的問題來編寫您的整個應用程序,這在SO的範圍之外。祝你好運。 –

+0

我重新編輯了問題 - 請讓我知道如果這更清楚 – Doolie1106

回答

0

要做到這一點,我會用控件的標記屬性更清晰。

在每個文本框的TAG屬性中,我會寫入粘貼值的單元格引用 - 例如$ B $ 2。

在每個複選框的TAG屬性中,我會寫入鏈接到該控件的工作表名稱,例如Sheet1。

然後命令按鈕後面我會寫代碼是這樣的:

Private Sub CommandButton1_Click() 
    Dim ctrl As Control 
    Dim ctrl1 As Control 

    'Cycle through each control looking for checkboxes. 
    For Each ctrl In Me.Controls 

     If TypeName(ctrl) = "CheckBox" Then 

      'If the checkbox is ticked 
      If ctrl.Value = True Then 

       With ThisWorkbook.Worksheets(ctrl.Tag) 'Grab the sheet name from the check box. 

        'Cycle through each control looking for textboxes. 
        For Each ctrl1 In Me.Controls 
         If TypeName(ctrl1) = "TextBox" Then 
          .Range(ctrl1.Tag) = ctrl1.Value 'Grab the cell address from the text box. 
         End If 
        Next ctrl1 
       End With 
      End If 
     End If 
    Next ctrl 
End Sub 
0

你需要的,如果激活該板在和知道firt空單元格後:

If A_Checkbox.Value=True then 
    Worksheets("A").Activate 
ElseIf B_Checkbox.Value=True then 
    Worksheets("B").Activate 
End If 

emptyRow=Activesheet.range("A1000000").end(XlUp).Row+1 
Cells(emptyRow,2).Value=TOD_Text.Value 
0

這應該訣竅:

Private Sub AddButton_Click() 

Dim CB As Control 

For Each CB In UserForm1.Controls 

    If TypeName(CB) = "CheckBox" Then 

     If CB.Value = True Then 

      ShtNm = CB.Caption 

      With ActiveWorkbook.Sheets(ShtNm) 

       'Determine Empty Row 
       emptyRow = .Range("A1").SpecialCells(xlCellTypeLastCell).Row + 1 
       'Transfer into to cells 
       .Cells(emptyRow, 1).Value = NOD_Text.Value 
       .Cells(emptyRow, 2).Value = TOD_Text.Value 
       .Cells(emptyRow, 3).Value = Program_Text.Value 
       .Cells(emptyRow, 4).Value = email_Text.Value 
       .Cells(emptyRow, 5).Value = OPN_Text.Value 
       .Cells(emptyRow, 6).Value = CPN_Text.Value 

      End With 

     End If 

    End If 

Next CB 

With ActiveWorkbook.Sheets("Master") 

    'Determine Empty Row 
    emptyRow = .Range("A1").SpecialCells(xlCellTypeLastCell).Row + 1 
    'Transfer into to cells 
    .Cells(emptyRow, 1).Value = NOD_Text.Value 
    .Cells(emptyRow, 2).Value = TOD_Text.Value 
    .Cells(emptyRow, 3).Value = Program_Text.Value 
    .Cells(emptyRow, 4).Value = email_Text.Value 
    .Cells(emptyRow, 5).Value = OPN_Text.Value 
    .Cells(emptyRow, 6).Value = CPN_Text.Value 

End With 

End Sub 
相關問題