我使用用户窗体选择一个包含以各种方式操纵的数据的区域。
我要做这样的事情来获得区域:
If Selection.Cells.Count = 1 Then
Set rng = ActiveCell.CurrentRegion
Else
Set rng = Selection.Range
End If
MyDialog.SourceRange.Value = rng.Address
MyDialog.TableHasHeaders.Value = True
用户窗体中有一个名为“我的表有标题”的复选框,默认情况下设置为True
。我想使用与Excel用于控制复选框的默认值相同的逻辑来控制此复选框的默认值,该逻辑与单击Insert -> Table
菜单按钮时显示的名称相同。
我不介意显示内置对话框并访问其字段的值,还是调用控制内置复选框的函数。这两种情况都有可能吗?如果可以,怎么办?
答案 0 :(得分:1)
Application.Dialogs(796).Show
给出对话框,我不知道是否有可能使用“正常” vba代码检索某些参数。
但是,作为解决方法,您可以使用xlGuess选项作为Listobject.add方法中的参数,将其取消列出并检索应用程序将给出的xlNo或xlYes。
Public Function WhatIsTheGuess(myRange) As XlYesNoGuess
Dim bl As boolean
With myRange.Parent
.ListObjects.Add(xlSrcRange, myRange, , xlGuess).Name = "testing"
bl = .ListObjects("testing").ListRows.Count = myRange.Rows.Count
.ListObjects("testing").Unlist
If bl Then myRange.Offset(-1).Rows(1).Delete
End With
WhatIsTheGuess = Abs(bl) + 1
End Function
Sub tst()
Dim mYTablehasHeaders As XlYesNoGuess, rng as range
Set Rng = Sheet1.Range("A1:A5")
mYTablehasHeaders = WhatIsTheGuess(Rng)
End Sub
答案 1 :(得分:0)
这是宏记录器所提供的:
Sub Macro1()
ActiveSheet.ListObjects.Add(xlSrcRange, Range("$H$5"), , xlYes).Name = "Table1"
ActiveSheet.ListObjects.Add(xlSrcRange, Range("$C$5"), , xlNo).Name = "Table2"
End Sub
如您所见,无论是否按下该正方形,在参数中都记录为xlYes
或xlNo
。
访问比较行的前两个值,然后决定是否建议报价的函数?似乎您是在要求Excel显示一些源代码。我想这是行不通的。