2012-11-15 209 views
3

更新代碼&問題: 模塊中的當前代碼此表如下:VBA在一個下拉列表中選擇的每個選項

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Not Intersect(Target, Range("B2:B2")) Is Nothing Then 
      Application.Run "MonthlyRead" 
    End If 
End Sub 

Sub MPrintAll() 
    Dim c As String 
    Dim MonthlyList As Range 
    Set MonthlyList = Worksheets("Monthly").Range("MonthlyList").Cells 
    For Each cell In MonthlyList 
     Range("b2").Value = cell.Value 
     ActiveWorkbook.Worksheets("Monthly").PrintOut 
    Next cell 
End Sub 

我一直在逐步執行代碼,嘗試找出問題發生的地方。當我在「Range(」b2「)。Value = cell.Value」後按F8時,它立即轉到表單的第一行代碼,完全跳過了Print命令。此外,它刪除命名範圍中的第一個值,而不是將其複製粘貼到單元格B2。

以供參考,在這裏是通過上面的第一個程序調用模塊1代碼:

Sub MonthlyRead() 
     Call MEFTPS 
     Call MUCT6 
    End Sub 
    Sub MEFTPS() 
     If Range("a2").Value = "EFTPS Package" Then 
       Call MShow 
       Else: Call MHide 
     End If 
    End Sub 
    Sub MHide() 
     Rows("20:20").Select 
     Selection.EntireRow.Hidden = True 
     Rows("31:31").Select 
     Selection.EntireRow.Hidden = True 
     Rows("42:42").Select 
     Selection.EntireRow.Hidden = True 
     Rows("53:53").Select 
     Selection.EntireRow.Hidden = True 
     Range("B2").Select 
    End Sub 
    Sub MShow() 
     Rows("20:20").Select 
     Selection.EntireRow.Hidden = False 
     Rows("31:31").Select 
     Selection.EntireRow.Hidden = False 
     Rows("42:42").Select 
     Selection.EntireRow.Hidden = False 
     Rows("53:53").Select 
     Selection.EntireRow.Hidden = False 
     Range("B2").Select 
    End Sub 
    Sub MUCT6() 
     If Range("g3").Value = "Y" Then 
      Call UCT6MShow 
      Else: Call UCT6MHide 
     End If 
    End Sub 
    Sub UCT6MHide() 
     Rows("19:19").Select 
     Selection.EntireRow.Hidden = True 
     Rows("30:30").Select 
     Selection.EntireRow.Hidden = True 
     Rows("41:41").Select 
     Selection.EntireRow.Hidden = True 
     Rows("52:52").Select 
     Selection.EntireRow.Hidden = True 
     Range("B2").Select 
    End Sub 
    Sub UCT6MShow() 
     Rows("19:19").Select 
     Selection.EntireRow.Hidden = False 
     Rows("30:30").Select 
     Selection.EntireRow.Hidden = False 
     Rows("41:41").Select 
     Selection.EntireRow.Hidden = False 
     Rows("52:52").Select 
     Selection.EntireRow.Hidden = False 
     Range("B2").Select 
    End Sub 

我與填充個性化的付款時間表動態工作表時,根據從選擇數據驗證下拉列表在頁面的頂部。下拉列表中大約有300個選項。然後打印這些時間表,以驗證從其他兩個程序獲得的信息,所有這些程序都必須在一天內打印,複印,掃描,打包和郵寄。

我正在尋找VBA代碼,可以從列表的開頭到結尾從下拉列表中選擇每個客戶端名稱。該列表從名爲「QtrlyList」的另一張表上的命名範圍填充。

我有一些非常簡單的代碼,這是行不通的。

Sub PrintAll() 
     For Each cell In QtrlyList 
      Worksheets("Normal").PrintOut 
     Next cell 
    End Sub 

每當我嘗試運行代碼時,出現「類型不匹配」錯誤。我相當肯定這是來自「細胞」或「QtrlyList」。我只是不知道如何解決它。

+0

什麼樣的下拉的是它的工作? –

+0

這是一個數據驗證下拉列表,從命名範圍填充。 – ABlevins

+0

是你所有的代碼嗎?如果你正在通過名字範圍內的單元格,我相信你需要'Range(「QtrlyList」)'作爲初學者。 – thornomad

回答

1

像這樣的事情可能會爲你(未經測試)

Sub PrintAll() 

    Dim wb as Workbook, cell as Range 

    Set Wb = ActiveWorkbook 'or ThisWorkBook if the code is in your reporting workbook 

    For Each cell In wb.Sheets("SheetNameHere").Range("QtrlyList").Cells 
     With wb.Worksheets("Normal") 
      'you want to set the value of whichever cell has the drop-down 
      .Range("D2")).value=cell.Value 
      DoEvents 'allow sheet to pick up changed value 
      .PrintOut 
     End with 
    Next cell 

End Sub 
+0

這兩個代碼以及我設法實現的在Google,Stackoverflow的幫助下找出我和我的同事之一有同樣的問題,他們到達用於輸入值到單元格B2(下拉列表位置)的代碼行並立即返回到第一行即使在逐步使用F8的時候,我也到了那一行,並且我回到了代碼的開頭,沒有觸及到打印命令。 – ABlevins

+0

這是我現在擁有的代碼。'Sub MPrintAll() Dim c As String Dim MonthlyList範圍 設置MonthlyList =工作表(「每月」)。範圍(「MonthlyList」)。 「).PrintOut Next cell End Sub' – ABlevins

+0

使用下拉菜單查看錶單的代碼模塊。有這些代碼嗎? –

相關問題