Я намагаюся вибрати стовпці з лише певними заголовками, видаляючи всі інші, але я продовжую отримувати помилку. Це 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