在Excel中,我有一个使用function outTree(array $tree, $parentId = null) {
echo '<ul>';
foreach ($tree as $row) {
if ($row['fk_i_parent_id'] == $parent_id) {
echo '<li>' . $row['pk_i_id'];
echo outTree($tree, $row['pk_i_id']);
echo '</li>';
}
}
echo '</ul>';
}
函数的数据验证范围,我希望动态添加信息,然后我可以在下拉列表中选择。我有一个VBA宏,我在这个列表中添加信息,而不是将列表从$ L $ 10扩展:$ L $ 230到$ L $ 10:$ L $ 231,它将我的列表下调到$ L $ 11: $ L $ 230我在命名范围或数据验证中做错了什么不能使其工作?或者它是否有使用VBA添加到导致它无法正常工作的范围?
&#34;房间&#34;在我的名称管理器中引用:
OFFSET()
我的数据验证下载源:
=OFFSET(Sheet1!$L$10,0,0,COUNTA(Sheet1!$L:$L),1)
我的&#34;插入&#34;要添加到列表中的宏:
=Rooms
我也有一个&#34;排序&#34;每次从&#34; INSERT NEW ROOM&#34;添加新实例时,我的Sheet1中都会包含VBA。标签
Sub insert()
'
' insert Macro
'
'
Range("A2:E2").Select
Selection.Copy
Sheets("Sheet1").Select
Range("L10:P10").Select
Selection.insert Shift:=xlDown
Sheets("INSERT NEW ROOM").Select
ActiveWindow.SmallScroll Down:=-18
Range("A2").Select
End Sub
答案 0 :(得分:2)
这是因为您的insert
宏更改了命名范围公式所引用的范围,就像任何普通公式一样。
该公式引用了单元格$L$10
。执行时
Range("L10:P10").Insert Shift:=xlDown
任何公式,包括命名范围公式,引用行10
上或下方的单元格将被更新以引用一行向下的单元格(在这种情况下为$L$11
)
您可以通过将命名范围公式更改为此
来解决此问题=OFFSET(Sheet1!$L$1,9,0,COUNTA(Sheet1!$L:$L),1)
请注意,它现在引用单元格$L$1
,因此不受插入的影响。
注意:
你insert
宏可以做一些工作
试试这个
Sub InsertRooms() ' renamed to avoid using a built in function name
Range("A2:E2").Copy
Worksheets("Sheet1").Range("L10:P10").insert Shift:=xlDown
Application.CutCopyMode = False
End Sub