【问题标题】:Validation Drop-down list in Excel Table via VBA通过 VBA 在 Excel 表中的验证下拉列表
【发布时间】:2021-01-23 19:13:58
【问题描述】:

我正在尝试将在一个工作表上输入的一些数据保存到我在另一个工作表上的销售表中。

除了与数据验证下拉菜单相关的一个小问题之外,以下代码运行良好。

当我在主工作表上输入数据并从同一个主工作表或工作簿中的任何其他工作表运行此代码时,数据将保存到我的销售表中,但下拉列表未插入到列中“ P”。

如果我从包含 Sales 表的工作表中运行此代码,一切都会按预期运行。

这是我的代码:

    Public Function updateSalesInfo(wbk As Workbook, strFileName As String)

    Dim lngRow          As Long
    Dim wks             As Worksheet
    Dim tableListObject As ListObject
    Dim tableObjectRow  As ListRow
    
    Set wks = wbk.Sheets("Sales")
    Set tableListObject = wks.ListObjects("Sales")
    Set tableObjectRow = tableListObject.ListRows.Add
          
    With wks
    
        lngRow = .Range("B65536").End(xlUp).Row
        
        With .Range("B" & lngRow)
            .Value = Range("_newInvoice").Value
            .Offset(, 1).Value = Format(Now(), "mmmm d, yyyy")
            .Offset(, 2).Value = Range("rngCustID").Value
            .Offset(, 3).Value = Range("rngCustName").Value
            .Offset(, 9).Value = Range("_invoiceDueDate").Value
            .Offset(, 11).Value = "=IF(ISBLANK(B" & lngRow & "),"""",L" & lngRow & "-J" & lngRow & ")"
            .Offset(, 12).Value = "=IF(AND(K" & lngRow & "<=TODAY(),M" & lngRow & "<0),""Yes by ""&(TODAY()-K" & lngRow & ")&"" Days"","""")"
            .Offset(, 13).Value = Range("rngLoginUserName").Value
            .Offset(, 14).Value = "Draft"
        End With
        .Hyperlinks.Add Anchor:=.Range("B" & lngRow), Address:=strFileName, ScreenTip:="Click to open a file"
     
        With wks.Range("P" & lngRow).Validation
             .Delete
             .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                xlBetween, Formula1:="=Settings!" & Range("rngInvoiceStatus").Address
             .IgnoreBlank = True
             .InCellDropdown = True
             .InputTitle = ""
             .ErrorTitle = ""
             .InputMessage = ""
             .ErrorMessage = ""
             .ShowInput = True
             .ShowError = True
    
   
        End With
    End With
   
    Set wks = Nothing
    
End Function

关于如何以正确的方式做的任何建议?

提前谢谢你

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    我找到了导致我在使用此代码时遇到问题的问题。

    在验证中,Formula1 应该只包括范围,而不是范围所指的地址。

    所以不要这样:Formula1:="=Settings!" &amp; Range("rngInvoiceStatus").Address

    我现在有了这个:Formula1:="=rngInvoiceStatus",一切都按预期工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-23
      • 1970-01-01
      • 1970-01-01
      • 2016-10-09
      • 1970-01-01
      • 1970-01-01
      • 2021-06-01
      • 1970-01-01
      相关资源
      最近更新 更多