Vba 如果整列(减去标题)中有一个值,则警告用户错误的文件

Vba 如果整列(减去标题)中有一个值,则警告用户错误的文件,vba,excel,Vba,Excel,我有一个宏,拿着两张电子表格,执行查找。在继续之前,我需要能够从combobox ComboBox1.value中获取用户选择的值,并分配一个列引用,然后检查该列是否为空。这是为了防止用户在电子表格中选择月份列,并为已更新的月份提供更新。然后我会提醒他们,他们可以选择如何继续 组合框包含所有12个月的列表。我需要设置一个值作为其选择的列引用,如果该列从A2开始到列中的最后一个条目为空,或者从第2行开始到结束的任何单元格中都有值。。无论哪个最有意义,都要提醒他们 这张纸有超过20K行。我不能只选择

我有一个宏,拿着两张电子表格,执行查找。在继续之前,我需要能够从combobox ComboBox1.value中获取用户选择的值,并分配一个列引用,然后检查该列是否为空。这是为了防止用户在电子表格中选择月份列,并为已更新的月份提供更新。然后我会提醒他们,他们可以选择如何继续

组合框包含所有12个月的列表。我需要设置一个值作为其选择的列引用,如果该列从A2开始到列中的最后一个条目为空,或者从第2行开始到结束的任何单元格中都有值。。无论哪个最有意义,都要提醒他们

这张纸有超过20K行。我不能只选择一个引用,因为它可能有空格,所以我要在整个列中检查一个值

为了皮特的爱,在我所有的新手荣耀中,在搜索到interwebz后,我不能让这一切发生

下面的代码没有给出错误,但也不能正常工作。我有一个四月份的测试表,里面有值,但它没有提醒,它会进入下一个操作

我尝试执行此操作的代码块看起来像

Dim UpdateMonthColumn As String

If ABCMatrixMonthSelect.ComboBox1.value = "January" Then
UpdateMonthColumn = "U"
ElseIf ABCMatrixMonthSelect.ComboBox1.value = "February" Then
UpdateMonthColumn = "W"
ElseIf ABCMatrixMonthSelect.ComboBox1.value = "March" Then
UpdateMonthColumn = "Y"
ElseIf ABCMatrixMonthSelect.ComboBox1.value = "April" Then
UpdateMonthColumn = "C"
ElseIf ABCMatrixMonthSelect.ComboBox1.value = "May" Then
UpdateMonthColumn = "E"
ElseIf ABCMatrixMonthSelect.ComboBox1.value = "June" Then
UpdateMonthColumn = "G"
ElseIf ABCMatrixMonthSelect.ComboBox1.value = "July" Then
UpdateMonthColumn = "I"
ElseIf ABCMatrixMonthSelect.ComboBox1.value = "August" Then
UpdateMonthColumn = "K"
ElseIf ABCMatrixMonthSelect.ComboBox1.value = "September" Then
UpdateMonthColumn = "M"
ElseIf ABCMatrixMonthSelect.ComboBox1.value = "October" Then
UpdateMonthColumn = "O"
ElseIf ABCMatrixMonthSelect.ComboBox1.value = "November" Then
UpdateMonthColumn = "Q"
ElseIf ABCMatrixMonthSelect.ComboBox1.value = "December" Then
UpdateMonthColumn = "S"
End If

If WorksheetFunction.CountA(Columns(UpdateMonthColumn)) = 0 Then

'If WorksheetFunction.CountA(Range("Sheet 1[UpdateMonthColumn]")) <> 0 Then
Msgbox12 = Msgbox("The column you will place the ABC Count within for " &   
ABCMatrixMonthSelect.ComboBox1 & "is not empty." & vbCr & " Do you still 
wish to proceed with an update for " & ABCMatrixMonthSelect.ComboBox1 & "?" 
& vbCr & "Select Yes to proceed and update with new values." & vbCr 
& "Select No to return to drop down list and chose a different month." & 
vbCr & "Select Cancel to return to ABC Matrix Main Menu.", vbQuestion Or 
vbYesNoCancel, "ABC Matrix Macro")
If Msgbox12 = vbYes Then GoTo SelectFile2:
If Msgbox12 = vbNo Then ActiveWorkbook.Close
    GoTo SelectMonth:
If Msgbox12 = vbCancel Then
    Msgbox "ABC Count update cancelled by user!" & vbCr & vbCr & "Returning 
    to ABC Matrix Macro Main Menu.", vbCritical, "ABC Matrix Macro Alert!"
     With ABCMatrixMainMenu
     .StartUpPosition = 0
     .Left = Application.Left + (0.5 * Application.Width) - (0.5 * .Width)
     .Top = Application.Top + (0.5 * Application.Height) - (0.5 * .Height)
     .Show
    Exit Sub
  End With
 End If
Else

您的问题到底是什么?如何以有效的语法分配存储在我的变量中的值,比如检查此列UpdateMonthColumn,如果从第2行到最后一行有任何值,那么我的消息框语句可以被构建来进行操作。使用一条语句,如果第2行中没有任何内容,则返回最后一行;如果第1行的标题之外的列中有任何值,则执行相反的操作。上述方法没有错误,但不起作用。它正好通过。问题。。。在运行时,我打开了两本工作簿。一个包含宏本身的文件,我不能将它放在个人工作簿中,我必须将它发送给一些用户,他们希望它作为一个单独的文件,一个我从宏中调用的打开文件,在打开时,我希望检查它是否为空。我可能错了,但是这个工作簿不总是引用宏工作簿吗?我可能错了,原谅我。。。我仍在学习过程中。如果不是此工作簿,则可能使用ActiveWorkBook谢谢:将给它一个go.FWIW-如果UpdateMonthColumn声明为Long而不是String,选择案例可以替换为一行UpdateMonthColumn=3+2*8+MonthCDate1&ABCMatrixMonthSelect.ComboBox1.value&2000 Mod 12。但是选择案例更容易理解!:D@TimWilliams它在Select案例abcMatrix xMonthSelect.Combobox1.value上给了我一个语法错误=
Dim rng As Range, sht As WorkSheet

Set sht = thisworkbook.sheets("Sheet1")

'select case is cleaner than a long If Then block
Select Case ABCMatrixMonthSelect.ComboBox1.value
    Case "January": UpdateMonthColumn = "U"
    Case "February": UpdateMonthColumn = "W"
    Case "March": UpdateMonthColumn = "Y"
    '...etc
End Select


Set rng = sht.Range(sht.Cells(2,UpdateMonthColumn), _
                    sht.Cells(sht.rows.count, UpdateMonthColumn))
If WorksheetFunction.CountA(rng) = 0 Then
    'OK
End If