2017-06-10 29 views
1

我有一个带有2个文本框的窗体。我正在使用随机化方法根据D列选取某个国家/地区。我希望能够在选定国家/地区后移除所选国家/地区。在我的屏幕截图中,我们会注意到尼日利亚已被分配给Jessie。如何从列表中删除数据已被选中

这里ClickMe

Private Sub CommandButton1_Click() 

Dim randomCtry As Long 

Randomize 

Application.Wait Now + TimeValue("00:00:01") 
DoEvents 

Dim LastRow As Long 
LastRow = Sheets("Sheet1").Range("D" & Rows.Count).End(xlUp).Row 

'With txtDestination 
' .Text = Sheets("Sheet1").Range("D" & Int((LastRow - 1) * Rnd + 2)) 
' 
'End With 


Set randomCtry = Sheets("Sheet1").Range("D" & Int((LastRow - 1) * Rnd + 2)) 
txtDestination.Text = randomCtry.Text 
randomCtry.Delete Shift:=xlUp ' <-- remove the selected country from the list 


Application.Wait Now + TimeValue("00:00:01") 
DoEvents 


With Sheet1 

     With .Range("A" & .Rows.Count).End(xlUp) 

     .Offset(1).Resize(1, 2).Value = Array(txtMilitary.Text, txtDestination.Text) 

     End With 


     On Error Resume Next 

End With 

End Sub 
+0

是否要永久删除列D中所选国家/地区的列表? –

+0

不是真的删除。我真正想要的是,一旦这支军队回归,那么这个国家将重新回到名单中。就是这样。 –

回答

0

表如果您想从列d除去已分配的国家,永久,你可以做这样的:

dim randomCtry as Range 
    set randomCtry = Sheets("Sheet1").Range("D" & Int((LastRow - 1) * Rnd + 2)) 
    txtDestination.Text = randomCtry.Text 
    randomCtry.Delete Shift:=xlUp ' <-- remove the selected country from the list 

上面的代码替换您的代码块With txtDestination ...End With

+0

谢谢..我不知道把代码行放在哪里。 –

+0

@KurtMatthew正如我在最后一句中所说的,它代替了“With - End with”区块,注意它从列D中永久删除选定的国家,但在任何时候在您的应用程序中,很容易从国家B列到D列。 –

+0

我编辑了上面的代码,但是我给出了找不到的错误消息对象。请再次查看代码。 –

相关问题