2016-03-29 9 views
0

以下のコードは、それが完璧に動作しますが、私はマクロを削除することができますので、何かを追加したいは、どのように私は、文字列の最初のインスタンスを選択し、行全体を削除

Sub Rand() 
    ActiveWorkbook.Sheets("Kudo Prize").Range("B1").Formula = Evaluate("=INDEX(Lista!$A:$A,RANDBETWEEN(1,COUNTA(Lista!$A:$A)))") 
End Sub 

リストからランダムにアイテムをピックアップしますリストからアイテムを削除するアイテムが何度も繰り返されるので、たとえばB1の結果が "Coffe"であるとします。 "Lista"シートの "Coffe"の最初のインスタンスを見つけて削除します行全体

+0

は、なぜあなたは、このためにVBAコードを必要としない...あなたが実際にこの機能を使用しようとしているか想像できないのですか? 'オートフィルタ| Contains'を実行し、最初のインスタンスの行を削除しますか?それでもVBAが必要な場合は、[Here](http://www.siddharthrout.com/2011/07/14/find-and-findnext-in-excel-vba/)のように '.Find'を使用できます。 –

+2

Look 'Range.Find()'メソッドを使用しています。 –

+0

画像をクリックして実行する必要があるため、VBAコードが必要です –

答えて

1

Macro Manは、マッチングにrange.find()を使用できることを示唆しているため、cells.EntireRow.Deleteを使用して行を削除できます。 私は

Sub Rand() 
Dim value_to_find As String 
Dim row_number As Integer 
ActiveWorkbook.Sheets("Kudo Prize").Range("B1").Formula = Evaluate("=INDEX(Lista!$A:$A,RANDBETWEEN(1,COUNTA(Lista!$A:$A)))") 
value_to_find = ActiveWorkbook.Sheets("Kudo Prize").Range("B1").Text 
row_number = ActiveWorkbook.Sheets("Lista").Range("A:A").Find(value_to_find).Row 
ActiveWorkbook.Sheets("Lista").Cells(row_number, 1).EntireRow.Delete 
End Sub 
+0

これは意味があります。それが動作する場合は、答えとしてマークすることができます:) – Donogst