2016-11-08 28 views
0

希望有人能帮助我?我有2个列表框RndAdd1 & RndEdit1。我希望能够在RndAdd1中选择多个项目,然后单击Button1,它会循环选定项目,并一次将其添加到新范围(第一个空白单元格),直到添加了所有项目。然后删除刚从原始范围添加的所有值。 (基本上从星期一的A列到B列,星期二的C列到D,等等)Listbox Multiselect添加到下一个可用的空白单元格并从原始范围中删除

我还有另一个变量集(星期几)我有下面的代码该按钮会嵌套一系列if/Elseif语句。

我现在遇到的麻烦是它在第一个空白单元格中发布第一个值,然后第二个值会覆盖第一个值,直到现在只有最终值在新范围内可见。这可能是一个简单的解决方法,我只是没有以正确的方式思考它!

Dim lItem As Long 
For lItem = 0 To RndAdd1.ListCount - 1 
    If RndAdd1.Selected(lItem) = True Then 
     If ComboBox1.Value = "Monday" Then 
      Sheets("Setup").Range("B65536").End(xlUp)(0, 1) = RndAdd1.List(lItem) 
      RndAdd1.Selected(lItem) = False 
     End If 
    End If 
Next 

RndAdd1.Clear 
RndEdit1.Clear 
ComboBox1.Clear 
ComboBox1.List = Array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday") 

ComboBox1.Value = "Monday" 

'Tuesday Repeat Code but with different range to take round numbers from 
+0

是你的代码实际编译?似乎缺少一个'结束如果'或类似的 – user3598756

+0

@ user3598756我在其他elseif中随时添加,因为这是它的工作方式,我错过了最后的结束,但我确实知道其余的代码我刚才所描述的并不完全符合它的意图。 –

+0

我想你可能只需要'Sheets(“Setup”)。Range(“B65536”)。End(xlUp)(2)' – SJR

回答

1

我我的手机上,从而不能发布代码买这也许可以帮助你:

Dim TargetRange as range 

Set TargetRange = thisworkbook.sheets(1).range("A1") 'or whereever you want it 

Do until IsEmpty(TargetRange.value) 
Set targetrange = targetrange.offset(1,0) 
Loop 

TargetRange.value = "your value here" 

这个循环,直到它找到一个空单元格

希望它可以帮助

+0

一些微小的调整,但是这个工作完全谢谢:-) @Benoit Ranque –

+0

@Alan Treanor if性能是您可能想要使用其他答案中提供的代码的问题。我在这里离开了我的部门,但我相信它使用内置的Excel函数更快。我的代码为循环的每次迭代设置一个范围对象,所以我非常肯定它效率低下。再次,我是一个初学者如此不确定。 –

+0

谢谢,这个特定的代码只是设计为每周运行一次,作为下一周的安装平台,并且只会查看大约200个数字的列表!使用此代码时,感谢 –

0

替代品

Sheets("Setup").Range("B65536").End(xlUp)(0, 1) = RndAdd1.List(lItem) 

With Sheets("Setup") 
    .Range(.Rows.Count, "B").End(xlUp).Offset(1) = RndAdd1.List(lItem) 
End With 
+0

应用程序定义或对象定义的错误。 –

+0

哪一行是抛出该错误? – user3598756

+0

虽然上面的另一个代码有所帮助,但我现在已经排序了。感谢您的帮助:-) .Range(.Rows.Count,“B”)。End(xlUp).Offset(1)= RndAdd1.List(lItem) –

相关问题