复制的ActiveX组合框对齐问题的柱箱型柱和ListRangeFill链接栏

我创建使用ActiveX组合框数据输入表。

我已经在使用ActiveX开发标签工具每列的第一个单元创建的下拉列表,然后使用宏以组合框复制到每个单元下方的列给出该框同一ListFillRange值,但不同的相应Linkedcell值以放置选定数据。

理想地,选择的数据将出现在同一行中的下拉框位于下一列。

我现在解决的问题是连续下拉框宏创建不与他们漂浮过来,我下去列所选的数据存入相应的链接的单元格下方的单元格对齐被越来越多地与未对齐的框生成器的输入。

我需要一个方法来编码的下拉框在细胞内正好适合这样一旦宏生成下面的副本 - 它会排队与行参数和各单元内准确地适合。

我需要生成至少100个数据输入的行和具有三十列具有不同的所需的列宽。

一旦盒被创建我可以使用宏自动生成的副本,以在该列中的单元的其余部分。 什么我需要做的,原来的单元格的格式,因为使用绘图工具的箱子不够准确。

这可能吗? 什么是解决这一难题的最佳方法?

--------------解决方案-------------

如果我正确解释的问题,下面的代码中的细胞产生组合框和对齐的大小和位置的细胞。

请注意,如果你跑的比这一次更针对不同的列则需要上一组的创建,因为你以后会碰到的问题组合框后,我初始化到下一个号码,如果你重复的组合框的名称。 (该代码没有错误;它创建了重名)。 你可以点击最后一个组合框右键上次使用的数量,同时在设计模式,并在公式栏的左侧或在组合性阅读。

子CreateComboBoxes()
昏暗oleObj作为OLEOBJECT
昏暗的CEL由于范围
昏暗dblLeft为双
昏暗dblTop为双
昏暗dblWdth为双
昏暗dblHt为双
昏暗我只要

I = 1'初始化第一组合框名

随着工作表(“工作表Sheet1”)“编辑”工作表Sheet1“你的工作表名称
对于每个CEL在.Range(.Cells(2,“A”),.Cells(100,“A”))所要求“编辑范围范围
dblLeft = cel.Left
dblTop = cel.Top
dblWdth = cel.Width
dblHt = cel.Height
设置oleObj = .OLEOb​​jects.Add(类类别:=“Forms.ComboBox.1”,_
链接:= FALSE,_
DisplayAsIcon:=假,_
左:= dblLeft,_
顶部:= dblTop,_
宽度:= dblWdth,_
身高:= dblHt)

随着oleObj
按要求。名称=“组合框”与我“编辑名称
.LinkedCell = cel.Offset(0,1)。地址(外部:= TRUE)

按要求'编辑。 单引号必须围绕包含空格的工作表名称中使用。

.ListFillRange =“'表2'!A1:A10”

I = I + 1

结束与

接下来CEL
结束与
结束小组

我应该补充一点的更多信息。 如果你想设置更多的属性,那么你在用oleObj部分这样做。 然而,当你键入前导点,如果你不能看到在智能感知下拉要求物业然后键入.Object。 你可能会发现它。

例如,要添加字体大小插入在随着oleObj部分以下行。 (注意前导点)

.Object.Font.Size = 9

非常感谢!

您提供的代码,像变魔术一样。 它创建的完美组箱子“内部”和完美对齐到细胞中。 每个下拉列表现在赞同完美的细胞左右。

但是,我需要掌握的信息出现在新创建的选项框,相同的选择列表中的第一个模型或A1单元格,不在新的选择框。 他们是空白。

我错过了什么...?

随着oleObj
按要求。名称=“组合框”与我“编辑名称
.LinkedCell = cel.Offset(0,1)。地址(外部:= TRUE)
.ListFillRange =“Sheet2的A1:A10”'根据需要编辑
I = I + 1

我已经编辑了上面的代码,以反映我的床单,但结果并不完美。

整个选择列表已经从原来的A1选择框消失,除了选择中的最后一项。 当我在属性复选框记载:

LinkedCell:“数据录入”$ C $ 3

ListFillRange:

被消隐留下我相信有一个语法错误。

新创建的选项框也为空,但因为它应该在LinkedCell并指向下一个相邻单元格。 我要出现在框中选择的单元格区域是在同一张纸上。 片材被称为“数据输入”。 所需的单元格范围是A101:A371

因此,我的条目是:

.ListFillRange =“!数据录入A101:A371”

该行此项给我我所描述的结果。 空的选择框。

几次试图调整位置语法导致编译错误。

我错过了什么?

我做了一些阅读和记忆=和“”的关系。

语法是=“=您的数据”

所以我改成:

.ListFillRange =“= A101:A371”

和它的工作。

感谢您的帮助。

解决

工作代码:

--------------------------------------------------------------------------------------------------------------

子CreateComboBoxes_SIZED()

昏暗oleObj作为OLEOBJECT
昏暗的CEL由于范围
昏暗dblLeft为双
昏暗dblTop为双
昏暗dblWdth为双
昏暗dblHt为双
昏暗我只要

I = 1'初始化第一组合框名

随着工作表(“数据输入”)“编辑”数据录入“你的工作表名称
对于每个CEL在.Range(.Cells(3,“B”),.Cells(5,“B”))“修改范围要求的范围内
dblLeft = cel.Left
dblTop = cel.Top
dblWdth = cel.Width
dblHt = cel.Height
设置oleObj = .OLEOb​​jects.Add(类类别:=“Forms.ComboBox.1”,_
链接:= FALSE,_
DisplayAsIcon:=假,_
左:= dblLeft,_
顶部:= dblTop,_
宽度:= dblWdth,_
身高:= dblHt)

随着oleObj
按要求。名称=“组合框”与我“编辑名称
.LinkedCell = cel.Offset(0,1)。地址(外部:= TRUE)
要求“编辑”
.ListFillRange =“= A101:A371”
I = I + 1

结束与

接下来CEL
结束与
结束小组

-----------------------------------------------------------------------------------------------------------------------

再次感谢!

您好大卫

真正的问题是,我省略解释,如果你的工作表名称中有一个空格,那么你需要在单引号像下面附上工作表名称。 我的道歉遗漏。

.ListFillRange =“”数据录入“A101:A371”

如果工作表名称没有一个空间不要紧,如果包括单引号。 我将在我原来的职位编辑的代码,以反映单引号。

另外,作为一点点额外的,如果你需要开发和测试过程中删除的组合框,然后下面的子会为你做它。

子DeleteOleObjects()
“注意:删除所有OLEOBJECT组合框

昏暗oleObj作为OLEOBJECT

“编辑”工作表Sheet1“在forllowing线到工作表的名称
对于每个oleObj在工作表(“工作表Sheet1”)。OLEOb​​jects
如果oleObj.progID =“Forms.ComboBox.1”然后
oleObj.Delete
万一
接下来oleObj

结束小组

都很好。 刚刚花了几个额外的查询,以获得它的工作。

这将大大帮助我完成我的项目。 您的迅速和彻底的帮助是无价的。 再一次感谢你。

我有一个新的问题。

这是令人沮丧的我完成我的项目。

我实现你的非常优雅的代码和它的每个工作就像一个魅力100细胞的12列

然后错误开始出现。

运行时错误'2147319765(8002802b)':
自动化错误
找不到元素

当我尝试调试它识别细胞作为这一问题的目标范围:

对于每个CEL在.Range(.Cells(3,“AP”),.Cells(100,“AP”))“编辑范围要求的范围内

如果我删除列,将允许我补充一点,在那里删除细胞的确切数额奇怪的是。

这是因为如果我击中了软件或硬件中的一些限制。

我最初以为是从运行多次,所以我创建了新列,但“限制”的新模块相同的宏仍然存在。 有任何想法吗?

我Google了错误,并没有拿出一个明确的答案,但是从错误发生时我得出的结论是,它可能是在工作表太多的ActiveX控件的说明。

因此,也许如果你与我分享你正在使用如此多的组合框的原因,因为有可能会像不会有这么多的组合框或者甚至用户窗体以便用户进行选择在组合框中,然后数量有限,一个更好的办法一个继续/下一首或东西清除他们准备下一节。

什么是组合框的总数预计会使用?

你有没有与组合框关联的任何VBA代码?

你特别需要的ActiveX组合框或将窗体控件组合框就够了? 不知道这将解决您的问题,但窗体控件是更简单,它可能是值得的测试,如果他们将有大量他们的工作。

谢谢你的回答,

我来到了同样的结论。 太多的箱子太多的细胞。

我的数据输入的行数从100减少到50的十二列我在下拉框,这给了我所需要的空间。

要回答你的问题。 ......该项目是建立一个单一的数据录入表同时创建各种网站上传文件并利用了下拉电阻减少重复数据输入。 我有五个表数据拉断片,各家有各家的标题来创建格式化为不同的网站ASCII上传文件。

最后一个问题我有与数据的一个很长的字符串指向导航网站上的各种子目录。 只有最后10个或20个字符出100的是相关的。

我创建了一个名为数据范围只有相关的文字和包括它出现在相应的行。目前,我手动引用相应的工作表和复制,并与相应的一长串我需要粘贴的行。 不是打字更好,但不完全是优雅。

使用下面的方法有人建议,但我一直没能弄明白:

尝试创建一个命名的范围与你的编号选项列表,然后用数据验证与列表选项,引用该命名范围:

= NameOfRange

这将会把一个下拉菜单上的每一个细胞相同的列表,而无需使用任何进一步的控制。

我可以创建列表,但我需要将数据的长字符串掀起了相应的表,并不能找出如何做到这一点。

我需要一个像一个函数

= INDEX(D1000:D1012,E2,0)的形式列出。

但是,在选择框可复制下来列

有任何想法吗?

您好再次大卫

可以创建包含2列的表; 包含长串和含有完整的字符串的第二列的最后20个左右显著字符的第一列。

分配的第一列(用20左右字符)到组合ListFillRange。

分配组合框的LinkedCell下的小区。 (你不会看到这个值,因为它是由组合框隐藏。)

在单元格中组合插入以下VLOOKUP公式返回完整的字符串(您以前使用作为链接的单元格的单元格)的权利。

= VLOOKUP(A2,“数据输入”$ A $ 1:$ B $ 26,2,FALSE)

上述式的说明:

A2是组合下链接的单元格

“数据输入”$ A $ 1:$ B $ 26是含20个左右的字符列A和含有完整的字符串B列的表。 ( 注意,表必须是绝对格式与$符号

图2是表阵列的第二列返回(全字符串)

如果找到匹配假的说,只有返回。 (如果没有匹配,则返回错误#N / A。)

VLOOKUP总是看起来在表阵列被搜索的值的第一列,这就是为什么在过去20个左右的字符必须是在表中的第一列。

如果你不想看到#N /对组合框尚未选定了,那么你可以用下面的公式,将插入一个零长度字符串,如果没有找到一个值返回一个错误。

= IF(ISERROR(VLOO​​KUP(A2,“数据输入”$ A $ 1:$ B $ 26,2,FALSE)),“”,VLOOKUP(A2,“数据输入”$ A $ 1:$ B $ 26,2,假))

注意:当换行符得到安置在长公式像这样在这个论坛上,我有时发现(但不总是),模仿他们,并粘贴到时候公式栏在Excel中,他们的错误。 这是由于添加看不见字符。 如果发生这种情况,然后将其粘贴到记事本并保存记事本文件(你会得到一个消息,再不能保存的内容,但只是接受)。 关闭文件并重新打开,并检查是否有任何虚假的字符,例如问号和删除,然后复制并粘贴到Excel中。 或者只是仔细键入您的Excel公式中

分类:办公室 时间:2015-03-15 人气:1
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 2.945 (s). 10 q(s)