/ / Виберіть деякі стовпці та видаліть інші VBA - excel, vba, excel-vba

Виберіть Деякі стовпці та Видаліть інші VBA - excel, vba, excel-vba

Я намагаюся вибрати стовпці з лише певними заголовками, видаляючи всі інші, але я продовжую отримувати помилку. Це Method "Range" of object "_Global" failed, і він виділяє сьомий рядок коду (Range(Cells(1, Col)).Select). Будь-яка допомога чи пропозиції були б дуже вдячні-- дякую!

       Dim Col As Integer
Col = 1
Range("A1").Select
While Selection.Value <> ""
If Selection.Value = "A" Then
Col = Col + 1
Range(Cells(1, Col)).Select
ElseIf Selection.Value = "B" Then
Col = Col + 1
Range(Cells(1, Col)).Select
ElseIf Selection.Value = "D" Then
Col = Col + 1
Range(Cells(1, Col)).Select
ElseIf Selection.Value = "E" Then
Col = Col + 1
Range(Cells(1, Col)).Select
ElseIf Selection.Value = "F" Then
Col = Col + 1
Range(Cells(1, Col)).Select
ElseIf Selection.Value = "H" Then
Col = Col + 1
Range(Cells(1, Col)).Select
ElseIf Selection.Value = "J" Then
Col = Col + 1
Range(Cells(1, Col)).Select
ElseIf Selection.Value = "M" Then
Col = Col + 1
Range(Cells(1, Col)).Select
ElseIf Selection.Value = "N" Then
Col = Col + 1
Range(Cells(1, Col)).Select
ElseIf Selection.Value = "P" Then
Col = Col + 1
Range(Cells(1, Col)).Select
ElseIf Selection.Value = "R" Then
Col = Col + 1
Range(Cells(1, Col)).Select
ElseIf Selection.Value = "S" Then
Col = Col + 1
Range(Cells(1, Col)).Select
ElseIf Selection.Value = "T" Then
Col = Col + 1
Range(Cells(1, Col)).Select
ElseIf Selection.Value = "V" Then
Col = Col + 1
Range(Cells(1, Col)).Select
ElseIf Selection.Value = "X" Then
Col = Col + 1
Range(Cells(1, Col)).Select
Else: ActiveCell.EntireColumn.Delete
End If
Wend

Відповіді:

2 для відповіді № 1

По-перше, помилка викликана викликом Range лише одним аргументом Cell. Якщо у вас є лише одна комірка, ви повинні додати клітинку з її властивістю Address, тому рядок повинен бути Range(Cells(1,col).Address).Select

По-друге, з того, що ви описали, ви б хотілияк ваш код, я не думаю, що цей код насправді буде виконувати те, як ви хотіли. Відверто кажучи, я не можу реально сказати, що це ви навіть намагаєтеся зробити з самого коду, тому попередити, що моя відповідь виправить виклик помилки, але, мабуть, це не виграє так, як ви очікуєте одного разу не працює.


2 для відповіді № 2

Також ви можете легко скоротити оператор if, включивши його or у вашій частині питання.

With Selection
If .Value = "A" or "B" or...  ...Then...

Else...

End If
End With

Сподіваюся, це допомагає - https://msdn.microsoft.com/en-us/library/752y8abs.aspx