Shift xltoleft vba excel

Skip to content

Effortlessly Manage Your Projects and Resources
120+ Professional Project Management Templates!

A Powerful & Multi-purpose Templates for project management. Now seamlessly manage your projects, tasks, meetings, presentations, teams, customers, stakeholders and time. This page describes all the amazing new features and options that come with our premium templates.

Save Up to 85% LIMITED TIME OFFER
Excel VBA Project Management Templates
All-in-One Pack
120+ Project Management Templates
Essential Pack
50+ Project Management Templates

Excel Pack
50+ Excel PM Templates

PowerPoint Pack
50+ Excel PM Templates

MS Word Pack
25+ Word PM Templates

Ultimate Project Management Template

Ultimate Resource Management Template

Project Portfolio Management Templates
  • VBA to Delete Range in Excel – Syntax
  • VBA to Delete Range in Excel – Example:Shift:=xlToLeft
  • VBA to Delete Range in Excel – Example:Shift:=xlToUp
  • VBA to Delete Range in Excel – Example: EntireRow
  • VBA to Delete Range in Excel – Example: EntireColumn
    • VBA to Delete Range in Excel – Execution Instructions

Page load link

Go to Top

  1. 03-13-2006, 11:10 AM


    #1

    Selection.Delete Shift:=xlToLeft (what’s the meaning of this?)

    Hello,

    Could someone explain to me what is the meaning of the VBA expression:
    Selection.Delete Shift:=xlToLeft

    Intuitively, I would suppose that it should delete the selection, but why
    there is this «Shift» part coming after?

    The whole part of the code I try to analyze goes like this (and it looks
    like a big garbage for me):

    (…)
    Range(«A3»).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets(«Confirmations»).Select
    Range(«BA22»).Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=
    _
    False, Transpose:=False
    Columns(«BA:BD»).Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlToLeft
    Columns(«BC:BD»).Select
    Selection.Delete Shift:=xlToLeft
    Columns(«BD:BF»).Select
    Selection.Delete Shift:=xlToLeft
    Columns(«BE:BZ»).Select
    Selection.Delete Shift:=xlToLeft
    Range(«BA22:BD55»).Select
    Selection.Copy
    Range(«A22»).Select
    ActiveSheet.Paste
    (…)

    In particular, I can’t see what is the goal of selecting first BA:BD, then
    BC:BD, then BD:BF and finally BE:BZ…
    Is it me that don’t understand something or the code should be written
    differently? (hint: it’s still functionning correctly and it is not deleting
    the data pasted in BA22 (lines 4-8 of the code)).

    Many thanks for any explanations!
    Mark


  2. 03-13-2006, 11:25 AM


    #2

    Re: Selection.Delete Shift:=xlToLeft (what’s the meaning of this?)

    The line that selects the columns does just that. The line that deletes the
    selection deletes the selected columns. The shift to the left part simply
    shifts the remaining columns to the left. That code is not necessary since
    the shift to the left is the default. Note that if you delete a column, the
    column to the right will move left and occupy the space where the deleted
    column was. The new column will also take the column letter of the deleted
    column. Perhaps that is where you are confused. In other words, if the
    sheet is blank and you delete a column or group of columns, you will not see
    any change at all.
    Exactly what is that you want this code to do? HTH Otto
    «markx» <markx@discussions.microsoft.com> wrote in message
    news:elRvA$qRGHA.5036@TK2MSFTNGP12.phx.gbl…
    > Hello,
    >
    > Could someone explain to me what is the meaning of the VBA expression:
    > Selection.Delete Shift:=xlToLeft
    >
    > Intuitively, I would suppose that it should delete the selection, but why
    > there is this «Shift» part coming after?
    >
    > The whole part of the code I try to analyze goes like this (and it looks
    > like a big garbage for me):
    >
    > (…)
    > Range(«A3»).Select
    > Range(Selection, Selection.End(xlToRight)).Select
    > Range(Selection, Selection.End(xlDown)).Select
    > Selection.Copy
    > Sheets(«Confirmations»).Select
    > Range(«BA22»).Select
    > Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=
    > _
    > False, Transpose:=False
    > Columns(«BA:BD»).Select
    > Application.CutCopyMode = False
    > Selection.Delete Shift:=xlToLeft
    > Columns(«BC:BD»).Select
    > Selection.Delete Shift:=xlToLeft
    > Columns(«BD:BF»).Select
    > Selection.Delete Shift:=xlToLeft
    > Columns(«BE:BZ»).Select
    > Selection.Delete Shift:=xlToLeft
    > Range(«BA22:BD55»).Select
    > Selection.Copy
    > Range(«A22»).Select
    > ActiveSheet.Paste
    > (…)
    >
    > In particular, I can’t see what is the goal of selecting first BA:BD, then
    > BC:BD, then BD:BF and finally BE:BZ…
    > Is it me that don’t understand something or the code should be written
    > differently? (hint: it’s still functionning correctly and it is not
    > deleting the data pasted in BA22 (lines 4-8 of the code)).
    >
    > Many thanks for any explanations!
    > Mark
    >
    >
    >
    >


  3. 03-13-2006, 11:30 AM


    #3

    RE: Selection.Delete Shift:=xlToLeft (what’s the meaning of this?)

    If you delete a selection of cells normally, if offers you the chance to
    shift the cells up or to the left or the entire row or column.

    The Shift:=xlLeft means it uses the Shift Cells Left option.

    HTH.

    «markx» wrote:


    > Hello,
    >
    > Could someone explain to me what is the meaning of the VBA expression:
    > Selection.Delete Shift:=xlToLeft
    >
    > Intuitively, I would suppose that it should delete the selection, but why
    > there is this «Shift» part coming after?
    >
    > The whole part of the code I try to analyze goes like this (and it looks
    > like a big garbage for me):
    >
    > (…)
    > Range(«A3»).Select
    > Range(Selection, Selection.End(xlToRight)).Select
    > Range(Selection, Selection.End(xlDown)).Select
    > Selection.Copy
    > Sheets(«Confirmations»).Select
    > Range(«BA22»).Select
    > Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=
    > _
    > False, Transpose:=False
    > Columns(«BA:BD»).Select
    > Application.CutCopyMode = False
    > Selection.Delete Shift:=xlToLeft
    > Columns(«BC:BD»).Select
    > Selection.Delete Shift:=xlToLeft
    > Columns(«BD:BF»).Select
    > Selection.Delete Shift:=xlToLeft
    > Columns(«BE:BZ»).Select
    > Selection.Delete Shift:=xlToLeft
    > Range(«BA22:BD55»).Select
    > Selection.Copy
    > Range(«A22»).Select
    > ActiveSheet.Paste
    > (…)
    >
    > In particular, I can’t see what is the goal of selecting first BA:BD, then
    > BC:BD, then BD:BF and finally BE:BZ…
    > Is it me that don’t understand something or the code should be written
    > differently? (hint: it’s still functionning correctly and it is not deleting
    > the data pasted in BA22 (lines 4-8 of the code)).
    >
    > Many thanks for any explanations!
    > Mark
    >
    >
    >
    >
    >


  4. 03-13-2006, 12:45 PM


    #4

    Re: Selection.Delete Shift:=xlToLeft (what’s the meaning of this?)

    Thanks to you both!
    Now I understand much better this part of code…
    Have a nice day!

    «DaveO» <DaveO@discussions.microsoft.com> wrote in message
    news:2056E8D2-E01A-442A-A09D-0CC15E5ED0ED@microsoft.com…


    > If you delete a selection of cells normally, if offers you the chance to
    > shift the cells up or to the left or the entire row or column.
    >
    > The Shift:=xlLeft means it uses the Shift Cells Left option.
    >
    > HTH.
    >
    > «markx» wrote:
    >
    >> Hello,
    >>
    >> Could someone explain to me what is the meaning of the VBA expression:
    >> Selection.Delete Shift:=xlToLeft
    >>
    >> Intuitively, I would suppose that it should delete the selection, but why
    >> there is this «Shift» part coming after?
    >>
    >> The whole part of the code I try to analyze goes like this (and it looks
    >> like a big garbage for me):
    >>
    >> (…)
    >> Range(«A3»).Select
    >> Range(Selection, Selection.End(xlToRight)).Select
    >> Range(Selection, Selection.End(xlDown)).Select
    >> Selection.Copy
    >> Sheets(«Confirmations»).Select
    >> Range(«BA22»).Select
    >> Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
    >> SkipBlanks:=
    >> _
    >> False, Transpose:=False
    >> Columns(«BA:BD»).Select
    >> Application.CutCopyMode = False
    >> Selection.Delete Shift:=xlToLeft
    >> Columns(«BC:BD»).Select
    >> Selection.Delete Shift:=xlToLeft
    >> Columns(«BD:BF»).Select
    >> Selection.Delete Shift:=xlToLeft
    >> Columns(«BE:BZ»).Select
    >> Selection.Delete Shift:=xlToLeft
    >> Range(«BA22:BD55»).Select
    >> Selection.Copy
    >> Range(«A22»).Select
    >> ActiveSheet.Paste
    >> (…)
    >>
    >> In particular, I can’t see what is the goal of selecting first BA:BD,
    >> then
    >> BC:BD, then BD:BF and finally BE:BZ…
    >> Is it me that don’t understand something or the code should be written
    >> differently? (hint: it’s still functionning correctly and it is not
    >> deleting
    >> the data pasted in BA22 (lines 4-8 of the code)).
    >>
    >> Many thanks for any explanations!
    >> Mark
    >>
    >>
    >>
    >>
    >>


  5. 03-13-2006, 12:50 PM


    #5

    Re: Selection.Delete Shift:=xlToLeft (what’s the meaning of this?)

    Thanks to you both!
    Now I understand much better this part of code…
    Have a nice day!

    «DaveO» <DaveO@discussions.microsoft.com> wrote in message
    news:2056E8D2-E01A-442A-A09D-0CC15E5ED0ED@microsoft.com…


    > If you delete a selection of cells normally, if offers you the chance to
    > shift the cells up or to the left or the entire row or column.
    >
    > The Shift:=xlLeft means it uses the Shift Cells Left option.
    >
    > HTH.
    >
    > «markx» wrote:
    >
    >> Hello,
    >>
    >> Could someone explain to me what is the meaning of the VBA expression:
    >> Selection.Delete Shift:=xlToLeft
    >>
    >> Intuitively, I would suppose that it should delete the selection, but why
    >> there is this «Shift» part coming after?
    >>
    >> The whole part of the code I try to analyze goes like this (and it looks
    >> like a big garbage for me):
    >>
    >> (…)
    >> Range(«A3»).Select
    >> Range(Selection, Selection.End(xlToRight)).Select
    >> Range(Selection, Selection.End(xlDown)).Select
    >> Selection.Copy
    >> Sheets(«Confirmations»).Select
    >> Range(«BA22»).Select
    >> Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
    >> SkipBlanks:=
    >> _
    >> False, Transpose:=False
    >> Columns(«BA:BD»).Select
    >> Application.CutCopyMode = False
    >> Selection.Delete Shift:=xlToLeft
    >> Columns(«BC:BD»).Select
    >> Selection.Delete Shift:=xlToLeft
    >> Columns(«BD:BF»).Select
    >> Selection.Delete Shift:=xlToLeft
    >> Columns(«BE:BZ»).Select
    >> Selection.Delete Shift:=xlToLeft
    >> Range(«BA22:BD55»).Select
    >> Selection.Copy
    >> Range(«A22»).Select
    >> ActiveSheet.Paste
    >> (…)
    >>
    >> In particular, I can’t see what is the goal of selecting first BA:BD,
    >> then
    >> BC:BD, then BD:BF and finally BE:BZ…
    >> Is it me that don’t understand something or the code should be written
    >> differently? (hint: it’s still functionning correctly and it is not
    >> deleting
    >> the data pasted in BA22 (lines 4-8 of the code)).
    >>
    >> Many thanks for any explanations!
    >> Mark
    >>
    >>
    >>
    >>
    >>


  6. 03-13-2006, 12:55 PM


    #6

    Re: Selection.Delete Shift:=xlToLeft (what’s the meaning of this?)

    Thanks to you both!
    Now I understand much better this part of code…
    Have a nice day!

    «DaveO» <DaveO@discussions.microsoft.com> wrote in message
    news:2056E8D2-E01A-442A-A09D-0CC15E5ED0ED@microsoft.com…


    > If you delete a selection of cells normally, if offers you the chance to
    > shift the cells up or to the left or the entire row or column.
    >
    > The Shift:=xlLeft means it uses the Shift Cells Left option.
    >
    > HTH.
    >
    > «markx» wrote:
    >
    >> Hello,
    >>
    >> Could someone explain to me what is the meaning of the VBA expression:
    >> Selection.Delete Shift:=xlToLeft
    >>
    >> Intuitively, I would suppose that it should delete the selection, but why
    >> there is this «Shift» part coming after?
    >>
    >> The whole part of the code I try to analyze goes like this (and it looks
    >> like a big garbage for me):
    >>
    >> (…)
    >> Range(«A3»).Select
    >> Range(Selection, Selection.End(xlToRight)).Select
    >> Range(Selection, Selection.End(xlDown)).Select
    >> Selection.Copy
    >> Sheets(«Confirmations»).Select
    >> Range(«BA22»).Select
    >> Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
    >> SkipBlanks:=
    >> _
    >> False, Transpose:=False
    >> Columns(«BA:BD»).Select
    >> Application.CutCopyMode = False
    >> Selection.Delete Shift:=xlToLeft
    >> Columns(«BC:BD»).Select
    >> Selection.Delete Shift:=xlToLeft
    >> Columns(«BD:BF»).Select
    >> Selection.Delete Shift:=xlToLeft
    >> Columns(«BE:BZ»).Select
    >> Selection.Delete Shift:=xlToLeft
    >> Range(«BA22:BD55»).Select
    >> Selection.Copy
    >> Range(«A22»).Select
    >> ActiveSheet.Paste
    >> (…)
    >>
    >> In particular, I can’t see what is the goal of selecting first BA:BD,
    >> then
    >> BC:BD, then BD:BF and finally BE:BZ…
    >> Is it me that don’t understand something or the code should be written
    >> differently? (hint: it’s still functionning correctly and it is not
    >> deleting
    >> the data pasted in BA22 (lines 4-8 of the code)).
    >>
    >> Many thanks for any explanations!
    >> Mark
    >>
    >>
    >>
    >>
    >>


Simply put, columns B,C,D,E,F,.....,Z,AA,AB,AC,.....,IS,IT,IU,IV
all of those will be deleted and they will be replaced with empty columns pulled from the left side of the sheet, meaning that if you have some data on column A that column will not be affected.

Improve this answer

answered Jun 22, 2011 at 20:33

Ahmad's user avatar

AhmadAhmad

12.2k6 gold badges50 silver badges87 bronze badges

616 / 0 / 1

Регистрация: 24.07.2013

Сообщений: 93

1

Удаление столбцов и изменение их ширины

15.01.2014, 10:18. Показов 8640. Ответов 16


Студворк — интернет-сервис помощи студентам

Здравствуйте, имеется таблица, помогите с написанием макроса по редактированию этой таблицы для Excel 2010.
Значит таблица выводится в excel с программы. Я в ручную ее буду сохранять на ПК и запускать заново. Далее необходимом написать макрос и добавить в личную книгу макросов, чтоб он всегда был прописан в excel, и назначить ему комбинацию клавиш (к примеру ctrl + z).
Во вложении приведена сама таблица, и то что должно получиться после редактирования.
Длина таблицы не фиксированная, может меняться.

Макрос должен:

Удалить:
Столбец A,D,I,J
Строка 1

Изменить ширину столбцов:
A — 28 (201 пиксель)
B,C — 4,57 (37 пикселей)
D — без изменений
E,F — 18 (131 пиксель)

Удалить данные столбца D с ячейки D3 и до конца

Изменить в строке 1 высоту шрифта до 11 и выравнивание текста по середине
Изменить высоту строки 1 — 48 (64 пикселя)

Нарисовать все границы таблица с A до J со строки 1 и до конца данных

Вот такая вот задумка, но что то у меня ничего не выходит, может кто поможет, заранее спасибо!

образец до.xlsx образец после.xlsx



0



RAVproFFI

33 / 33 / 1

Регистрация: 15.10.2013

Сообщений: 130

15.01.2014, 10:48

2

запусти запись макроса. Больше половины из того что тебе надо запишется. Единственное нужно будет поправить «с ячейки D3 и до конца»

Visual Basic
1
2
R=ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1
range(cells(3,4),cells(R,4))

и «со строки 1 и до конца»

Visual Basic
1
range(cells(1,1),cells(R,10))



1



strike383

616 / 0 / 1

Регистрация: 24.07.2013

Сообщений: 93

15.01.2014, 11:06

 [ТС]

3

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
Sub Макрос1()
'
' Макрос1 Макрос
'
' Сочетание клавиш: Ctrl+z
'
    Range("A:A,D:D,I:I,J:J").Select
    Range("J1").Activate
    Selection.Delete Shift:=xlToLeft
    ActiveWindow.ScrollColumn = 6
    ActiveWindow.ScrollColumn = 5
    ActiveWindow.ScrollColumn = 4
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 1
    Rows("1:1").Select
    Selection.Delete Shift:=xlUp
    Columns("A:A").Select
    Range("A2").Activate
    Selection.ColumnWidth = 28
    Columns("B:B").Select
    Range("B2").Activate
    Selection.ColumnWidth = 4.57
    Columns("C:C").Select
    Range("C2").Activate
    Selection.ColumnWidth = 4.57
    Columns("E:E").Select
    Range("E2").Activate
    Selection.ColumnWidth = 18
    Columns("F:F").Select
    Range("F2").Activate
    Selection.ColumnWidth = 18
    Range("D3:D344").Select
    Selection.ClearContents
    Range("A1:F1").Select
    With Selection.Font
        .Name = "Calibri"
        .Size = 11
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
        .ThemeFont = xlThemeFontMinor
    End With
    Rows("1:1").Select
    Selection.RowHeight = 48
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
    End With
    Range("A1:F344").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    Range("A1:F1").Select
End Sub

пишет ошибку тут Selection.Delete Shift:=xlToLeft



0



Ушел с CyberForum совсем!

873 / 182 / 25

Регистрация: 04.05.2011

Сообщений: 1,020

Записей в блоге: 110

15.01.2014, 11:17

4

строки сверху вниз удаляешь ? учти что после удаления строки 1, строка 4 станет строкой 3 и т.д…



0



RAVproFFI

33 / 33 / 1

Регистрация: 15.10.2013

Сообщений: 130

15.01.2014, 11:24

5

strike383, удали от .Select до ближайшего Selection
н-р: замени

PureBasic
1
2
3
Range("A:A,D:D,I:I,J:J").Select
    Range("J1").Activate
    Selection.Delete Shift:=xlToLeft

на

PureBasic
1
Range("A:A,D:D,I:I,J:J").Delete Shift:=xlToLeft

и т.д.
а также удали все ActiveWindow.ScrollColumn…. и ненужное форматирование текста и границ



0



Surrogate

Ушел с CyberForum совсем!

873 / 182 / 25

Регистрация: 04.05.2011

Сообщений: 1,020

Записей в блоге: 110

15.01.2014, 11:28

6

Цитата
Сообщение от strike383
Посмотреть сообщение

Range(«A:A,D,I:I,J:J»).Select
* * Range(«J1»).Activate
* * Selection.Delete Shift:=xlToLeft

зачем здесь Range(«J1»).Activate ?
у меня работает и так

Visual Basic
1
2
Range("A:A,D:D,I:I,J:J").Select
Selection.Delete Shift:=xlToLeft

и так

Visual Basic
1
Range("A:A,D:D,I:I,J:J").Delete Shift:=xlToLeft



1



strike383

616 / 0 / 1

Регистрация: 24.07.2013

Сообщений: 93

15.01.2014, 12:06

 [ТС]

7

исправил:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
Sub Макрос1()
'
' Макрос1 Макрос
'
' Сочетание клавиш: Ctrl+z
'
    Range("A:A,D:D,I:I,J:J").Delete Shift:=xlToLeft
    ActiveWindow.ScrollColumn = 6
    ActiveWindow.ScrollColumn = 5
    ActiveWindow.ScrollColumn = 4
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 1
    Rows("1:1").Delete Shift:=xlUp
    Columns("A:A").Select
    Range("A2").Activate
    Selection.ColumnWidth = 28
    Columns("B:B").Select
    Range("B2").Activate
    Selection.ColumnWidth = 4.57
    Columns("C:C").Select
    Range("C2").Activate
    Selection.ColumnWidth = 4.57
    Columns("E:E").Select
    Range("E2").Activate
    Selection.ColumnWidth = 18
    Columns("F:F").Select
    Range("F2").Activate
    Selection.ColumnWidth = 18
    Range("D3:D344").Select
    Selection.ClearContents
    Range("A1:F1").Select
    With Selection.Font
        .Name = "Calibri"
        .Size = 11
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
        .ThemeFont = xlThemeFontMinor
    End With
    Rows("1:1").Select
    Selection.RowHeight = 48
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
    End With
    Range("A1:F344").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    Range("A1:F1").Select
End Sub

Работает, вот только ширина столбцов везде 18 почему то

Цитата
Сообщение от RAVproFFI
Посмотреть сообщение

запусти запись макроса. Больше половины из того что тебе надо запишется. Единственное нужно будет поправить «с ячейки D3 и до конца»

Visual Basic
1
2
R=ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1
range(cells(3,4),cells(R,4))

и «со строки 1 и до конца»

Visual Basic
1
range(cells(1,1),cells(R,10))

можно с примером в моем коде, где что изменить

Добавлено через 1 минуту
и что то мне подсказывает что в коде много лишнего, что убрать?



0



Surrogate

Ушел с CyberForum совсем!

873 / 182 / 25

Регистрация: 04.05.2011

Сообщений: 1,020

Записей в блоге: 110

15.01.2014, 12:33

8

1.

Цитата
Сообщение от RAVproFFI
Посмотреть сообщение

а также удали все ActiveWindow.ScrollColumn….

2. все изменения ширины столбцов

Visual Basic
1
2
3
 Columns("A:A").Select
    Range("A2").Activate
    Selection.ColumnWidth = 28

можно записать сокращенно

Visual Basic
1
 Columns("A:A").ColumnWidth = 28

далее по аналогии

Добавлено через 5 минут
3.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Range("A1:F1").Select
    With Selection.Font
        .Name = "Calibri"
        .Size = 22
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
        .ThemeFont = xlThemeFontMinor
    End With

можно ограничиться лишь изменением размера шрифта

Visual Basic
1
2
Range("A1:F1").Select
Selection.Font.Size = 11

Добавлено через 8 минут

Цитата
Сообщение от RAVproFFI
Посмотреть сообщение

а также удали все ActiveWindow.ScrollColumn…. и ненужное форматирование текста и границ

если форматирование границ все же нужно, то для сокращения объема кода можно использовать фичу из этого поста



1



strike383

616 / 0 / 1

Регистрация: 24.07.2013

Сообщений: 93

15.01.2014, 14:24

 [ТС]

9

Помогите отредактировать еще эту часть кода, нужно удалить данные со столбца D, начиная с ячейки D3 и до конца таблицы, длина таблицы может быть любой, но согласно этому коду данные будут удаляться до ячейки D344. Конечно можно написать чтоб данные удалялись, скажем до D10000, но это же не правильно, как прописать чтоб до конца таблицы удалялось?

Visual Basic
1
2
Range("D3:D344").Select
Selection.ClearContents

Помогите еще с границами таблицы. Ее длина может меняться. А согласно коду ниже, ее границы прописаны конкретно от A1 до F344. Нужно чтоб границы были от A1 до F , но не 344, а до конца строк с данными

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Range("A1:F344").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With

Добавлено через 1 минуту
Тоесть нужно чтоб прорисовались границы всей таблицы



0



RAVproFFI

33 / 33 / 1

Регистрация: 15.10.2013

Сообщений: 130

15.01.2014, 14:55

10

strike383, Range(«D3: D344») замени как я писал

PureBasic
1
2
R=ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1
range(cells(3,4),cells(R,4)).ClearContents

cells(3,4) это D4, а cells(R,4) это D(последняя ячейка)
а кстати зачем .ClearContents? это удаляет все данные в ячейках. Сам смотри
а с границами также замени на

PureBasic
1
2
3
4
5
6
7
8
9
10
 with range(cells(1,1),cells(R,6))
  .Borders(xlDiagonalDown).LineStyle = xlNone
  .Borders(xlDiagonalUp).LineStyle = xlNone
  .Borders(xlEdgeLeft).LineStyle = xlContinuous
  .Borders(xlEdgeTop).LineStyle = xlContinuous
  .Borders(xlEdgeBottom).LineStyle = xlContinuous
  .Borders(xlEdgeRight).LineStyle = xlContinuous
  .Borders(xlInsideVertical).LineStyle = xlContinuous
  .Borders(xlInsideHorizontal).LineStyle = xlContinuous
end with

Добавлено через 15 минут
кстати все границы можно сделать одной строкой

PureBasic
1
range(cells(1,1),cells(R,6)).Borders.LineStyle = xlContinuous

чет сразу не подумал



2



616 / 0 / 1

Регистрация: 24.07.2013

Сообщений: 93

15.01.2014, 14:58

 [ТС]

11

RAVproFFI, спасибо, попробую, но завтра, сегодня не получится, отпишусь о результатах

Еще такой вопрос, как в макросе прописать, чтоб то что получилось в конце, отправилось на печать, далее сама таблиса сохранилась, ну скажем на диске C:/Test, а место имени дата,месяц,год сохранения, и без макрос. После чего файл закрывается. Это вообще можно сделать?



0



33 / 33 / 1

Регистрация: 15.10.2013

Сообщений: 130

15.01.2014, 15:06

12

могу написать, но будет полезней если сам попробуешь>
запусти запись макроса, нажми печать, сохрани где нужно
затем в коде замени имя сохраняемой книги на Date & «.xlsx»
полученной код скопируй в конец предыдущего



0



616 / 0 / 1

Регистрация: 24.07.2013

Сообщений: 93

15.01.2014, 15:08

 [ТС]

13

Ок, попробую, завтра отпишусь ))



0



33 / 33 / 1

Регистрация: 15.10.2013

Сообщений: 130

15.01.2014, 15:13

14

да и еще будет полезно: чтоб экран не моргал когда код делает свою работу — в самом начале кода вставь Application.ScreenUpdating = False, а в конце Application.ScreenUpdating = True
все будет быстрее и незаметно



0



strike383

616 / 0 / 1

Регистрация: 24.07.2013

Сообщений: 93

16.01.2014, 18:23

 [ТС]

15

Ок, так и сделаю, спасибо

Добавлено через 11 часов 48 минут
По второму вопросу вот что получилось:

Visual Basic
1
2
3
4
5
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
    ChDir "C:Temp"
    ActiveWorkbook.SaveAs Filename:="C:TempDate&.xlsx", FileFormat:= _
        xlOpenXMLWorkbook, CreateBackup:=False

Вообщем на печать без проблем отправляет, с сохранением небольшие загвоздки.
Во первых пишет место имени не дату сохранения, а Date& .
Во вторых каждый раз появляется сохранение что мол я хочу сохранить без поддержки макрос, нажимать приходится «да», хотелось бы что он сам сохранял без поддержки макрос.
Ну и в дополнении ко всем, можно ли еще изменить код, чтоб в конце висело окно с предложением сохранить в папку определенную и датой сохранения в имени без макрос, но без нажатия кнопки «Сохранить». Ну тоесть чтоб я мог в случае необходимости изменить имя, например дату вчерашнюю поставить, или вообще отказаться от сохранения, или просто нажать «сохранить».

Добавлено через 2 минуты
По первой части, все работет без проблем, вот что получилось:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Sub Макрос1()
'
' Макрос1 Макрос
'
' Сочетание клавиш: Ctrl+z
'
   Application.ScreenUpdating = False
    Range("A:A,D:D,I:I,J:J").Delete Shift:=xlToLeft
    Rows("1:1").Delete Shift:=xlUp
    Columns("A:A").ColumnWidth = 28
    Columns("B:B").ColumnWidth = 4.57
    Columns("C:C").ColumnWidth = 4.57
    Columns("E:E").ColumnWidth = 18
    Columns("F:F").ColumnWidth = 18
    R = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1
    Range(Cells(3, 4), Cells(R, 4)).ClearContents
    Range("A1:F1").Select
    Selection.Font.Size = 11
    Rows("1:1").Select
    Selection.RowHeight = 48
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
    End With
    Range(Cells(1, 1), Cells(R, 6)).Borders.LineStyle = xlContinuous
    Range("A1:F1").Select
   Application.ScreenUpdating = True
End Sub

Добавлено через 15 часов 12 минут

Цитата
Сообщение от strike383
Посмотреть сообщение

По второму вопросу вот что получилось:

Visual Basic
1
2
3
4
5
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
    ChDir "C:Temp"
    ActiveWorkbook.SaveAs Filename:="C:TempDate&.xlsx", FileFormat:= _
        xlOpenXMLWorkbook, CreateBackup:=False

Вообщем на печать без проблем отправляет, с сохранением небольшие загвоздки.
Во первых пишет место имени не дату сохранения, а Date& .
Во вторых каждый раз появляется сохранение что мол я хочу сохранить без поддержки макрос, нажимать приходится «да», хотелось бы что он сам сохранял без поддержки макрос.
Ну и в дополнении ко всем, можно ли еще изменить код, чтоб в конце висело окно с предложением сохранить в папку определенную и датой сохранения в имени без макрос, но без нажатия кнопки «Сохранить». Ну тоесть чтоб я мог в случае необходимости изменить имя, например дату вчерашнюю поставить, или вообще отказаться от сохранения, или просто нажать «сохранить».

Может кто помочь с этим кодом?



0



strike383

616 / 0 / 1

Регистрация: 24.07.2013

Сообщений: 93

17.01.2014, 19:05

 [ТС]

16

Все, сам сделал сохранение, кому интересно:

Visual Basic
1
2
3
strNewName = (Date & ".xlsx")
    If Not Application.Dialogs(xlDialogSaveAs).Show("C:Temp" & strNewName) Then _
        MsgBox "Книга не сохранена!", vbExclamation



0



RAVproFFI

33 / 33 / 1

Регистрация: 15.10.2013

Сообщений: 130

17.01.2014, 22:29

17

strike383, малорик
замени

Цитата
Сообщение от strike383
Посмотреть сообщение

Range(«A1:F1»).Select
Selection.Font.Size = 11
Rows(«1:1»).Select
Selection.RowHeight = 48
With Selection

на:

PureBasic
1
2
3
4
Range("A1:F1").Font.Size = 11
    Rows("1:1").RowHeight = 48
    With Rows("1:1")
       ...

и Range(«A1:F1»).Select в конце убери



0



Содержание

  1. Метод Delete (Excel Graph)
  2. Все объекты, кроме объекта Range
  3. Синтаксис
  4. Объект Range
  5. Синтаксис
  6. Параметры
  7. Замечания
  8. Пример
  9. Поддержка и обратная связь
  10. Range.Delete method (Word)
  11. Syntax
  12. Parameters
  13. Return value
  14. Remarks
  15. Example
  16. See also
  17. Support and feedback
  18. Объект Range (Excel)
  19. Примечания
  20. Пример
  21. Методы
  22. Свойства
  23. См. также
  24. Поддержка и обратная связь
  25. VBA Delete Range Shift in Excel Explained with Examples
  26. VBA Reference
  27. 120+ Project Management Templates
  28. VBA to Delete Range in Excel – Syntax
  29. VBA to Delete Range in Excel – Example:Shift:=xlToLeft
  30. VBA to Delete Range in Excel – Example:Shift:=xlToUp
  31. VBA to Delete Range in Excel – Example: EntireRow
  32. VBA to Delete Range in Excel – Example: EntireColumn
  33. VBA to Delete Range in Excel – Execution Instructions

Метод Delete (Excel Graph)

Метод Delete , как он применяется ко всем объектам в списке Применяется к , кроме объекта Range , а затем к объекту Range .

Все объекты, кроме объекта Range

Применяется ко всем объектам в списке Применяется к , кроме объекта Range .

Удаляет указанный объект.

Синтаксис

expression. Удалить

выражение (обязательно). Выражение, возвращающее один из указанных выше объектов.

Объект Range

Применяется к объекту Range .

Удаляет указанный объект.

Синтаксис

expression. Delete (SHIFT)

выражение (обязательно). Выражение, возвращающее объект Range .

Параметры

Имя Обязательный или необязательный Тип данных Описание
Shift _Дополнительные XlDeleteShiftDirection Используется только с объектами Range . Указывает способ сдвига ячеек для замены удаленных ячеек.

Может быть одной из следующих констант XlDeleteShiftDirection : xlShiftToLeft или xlShiftUp.

Если этот аргумент опущен, Граф решает, как сдвигать ячейки на основе формы указанного диапазона.

Замечания

При удалении объекта Point или LegendKey удаляется весь ряд.

Пример

В этом примере удаляются ячейки A1:D10 в таблице и сдвигаются остальные ячейки влево.

В этом примере заголовок диаграммы удаляется.

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

Range.Delete method (Word)

Deletes the specified number of characters or words.

Syntax

expression.Delete([Unit], [Count])

expression Required. A variable that represents a Range object.

Parameters

Name Required/Optional Data type Description
Unit Optional Variant The unit by which the collapsed range is to be deleted. Can be one of the WdUnits constants.
Count Optional Variant The number of units to be deleted. To delete units after the range, collapse the range and use a positive number. To delete units before the range, collapse the range and use a negative number.

Return value

This method returns a Long value that indicates the number of items deleted, or it returns 0 (zero) if the deletion was unsuccessful.

Example

This example selects and deletes the contents of the active document.

See also

Support and feedback

Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

Источник

Объект Range (Excel)

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

Хотите создавать решения, которые расширяют возможности Office на разнообразных платформах? Ознакомьтесь с новой моделью надстроек Office. Надстройки Office занимают меньше места по сравнению с надстройками и решениями VSTO, и вы можете создавать их, используя практически любую технологию веб-программирования, например HTML5, JavaScript, CSS3 и XML.

Примечания

Элемент по умолчанию объекта Range направляет вызовы без параметров в свойство Value, а вызовы с параметрами — в элемент Item. Таким образом, someRange = someOtherRange соответствует someRange.Value = someOtherRange.Value , someRange(1) соответствует someRange.Item(1) и someRange(1,1) соответствует someRange.Item(1,1) .

В разделе Пример описаны следующие свойства и методы для возврата объекта Range:

  • Свойства Range и Cells объекта Worksheet
  • Свойства Range и Cells объекта Range
  • Свойства Rows и Columns объекта Worksheet
  • Свойства Rows и Columns объекта Range
  • Свойство Offset объекта Range
  • Метод Union объекта Application

Пример

Чтобы вернуть объект Range, представляющий одну ячейку или диапазон ячеек, используйте синтаксис Range ( arg ), где arg обозначает диапазон. В следующем примере значение ячейки A1 помещается в ячейку A5.

В следующем примере диапазон A1:H8 заполняется случайными числами путем задания формулы для каждой ячейки в диапазоне. При использовании без квалификатора объекта (объекта слева от точки) свойство Range возвращает диапазон на активном листе. Если активное окно не является листом, метод завершается с ошибкой.

Используйте метод Activate объекта Worksheet, чтобы активировать лист перед использованием свойства Range без явного квалификатора объекта.

В следующем примере очищается содержимое диапазона Criteria.

Если используется текстовый аргумент для адреса диапазона, необходимо указать адрес в нотации стиля A1 (нельзя использовать нотацию в стиле R1C1).

Чтобы получить диапазон, содержащий все отдельные ячейки листа, используйте свойство Cells на листе. Вы можете обращаться к отдельным ячейкам, используя синтаксис Item(строка, столбец), где строка — индекс строки, а столбец — индекс столбца. Свойство Item можно пропустить, так как вызов направляется к нему с помощью элемента по умолчанию объекта Range. В следующем примере на первом листе активной книги ячейке A1 присваивается значение 24, а в ячейке B1 — значение 42.

В следующем примере задается формула для ячейки A2.

Хотя также можно использовать Range(«A1») , чтобы вернуть значение ячейки A1, иногда свойство Cells может быть удобнее, так как позволяет использовать переменную для строки или столбца. В следующем примере создаются заголовки столбцов и строк на листе Sheet1. Обратите внимание, что после активации листа можно использовать свойство Cells без явного объявления листа (оно возвращает ячейку на активном листе).

Хотя для изменения ссылок в стиле A1 можно использовать строковые функции Visual Basic, проще (и лучше при программировании) использовать нотацию Cells(1, 1) .

Используйте синтаксис_выражение_.Cells, где выражение возвращает объект Range, чтобы получить диапазон с тем же адресом, состоящий из отдельных ячеек. В таком диапазоне отдельные ячейки доступны с помощью синтаксиса Item(строка, столбец) относительно левого верхнего угла первой области диапазона. Свойство Item можно пропустить, так как вызов направляется к нему с помощью элемента по умолчанию объекта Range. В следующем примере на первом листе активной книги в ячейках C5 и D5 указывается формула.

Чтобы вернуть объект Range, используйте синтаксис Range ( ячейка1, ячейка2 ), где ячейка1 и ячейка2 — это объекты Range, указывающие начальную и конечную ячейки. В следующем примере устанавливается тип линии границы для ячеек A1:J10.

Имейте в виду, что точка перед каждым появлением свойства Cells является обязательной, если результат предыдущего оператора With нужно применять к свойству Cells. В данном случае указано, что ячейки расположены на листе один (без точки свойство Cells будет возвращать ячейки активного листа).

Чтобы получить диапазон, содержащий все строки листа, используйте свойство Rows на листе. Вы можете обращаться к отдельным строкам с помощью синтаксиса Item(строка), где строка — это индекс строки. Свойство Item можно пропустить, так как вызов направляется к нему с помощью элемента по умолчанию объекта Range.

Недопустимо указывать второй параметр свойства Item для диапазонов, состоящих из строк. Сначала нужно преобразовать их в отдельные ячейки, используя свойство Cells.

В следующем примере удаляются строки 5 и 10 первого листа активной книги.

Чтобы получить диапазон, содержащий все столбцы листа, используйте свойство Columns на листе. Вы можете обращаться к отдельным столбцам с помощью синтаксиса Item(строка) [sic], где строка — это индекс столбца в виде числа или адреса столбца в формате А1. Свойство Item можно пропустить, так как вызов направляется к нему с помощью элемента по умолчанию объекта Range.

Недопустимо указывать второй параметр свойства Item для диапазонов, состоящих из столбцов. Сначала нужно преобразовать их в отдельные ячейки, используя свойство Cells.

В следующем примере удаляются столбцы B, C, E и J первого листа активной книги.

Используйте синтаксис_выражение_.Rows, где выражение возвращает объект Range, чтобы получить диапазон, состоящий из строк первой области диапазона. Вы можете обращаться к отдельным строкам с помощью синтаксиса Item(строка), где строка — это относительный индекс строки от верхнего края первой области диапазона. Свойство Item можно пропустить, так как вызов направляется к нему с помощью элемента по умолчанию объекта Range.

Недопустимо указывать второй параметр свойства Item для диапазонов, состоящих из строк. Сначала нужно преобразовать их в отдельные ячейки, используя свойство Cells.

В следующем примере удаляются диапазоны C8:D8 и C6:D6 первого листа активной книги.

Используйте синтаксис_выражение_.Columns, где выражение возвращает объект Range, чтобы получить диапазон, состоящий из столбцов первой области диапазона. Вы можете обращаться к отдельным столбцам с помощью синтаксиса Item(строка) [sic], где строка — это относительный индекс столбца от левого края первой области диапазона, указанный в виде числа или адреса столбца в формате A1. Свойство Item можно пропустить, так как вызов направляется к нему с помощью элемента по умолчанию объекта Range.

Недопустимо указывать второй параметр свойства Item для диапазонов, состоящих из столбцов. Сначала нужно преобразовать их в отдельные ячейки, используя свойство Cells.

В следующем примере удаляются диапазоны L2:L10, G2:G10, F2:F10 и D2:D10 первого листа активной книги.

Чтобы вернуть диапазон с указанным смещением относительно другого диапазона, используйте синтаксис Offset ( строка, столбец ), где строка и столбец — это смещения строк и столбцов. В следующем примере выделяются ячейки, расположенные на три строки вниз и на один столбец вправо от ячейки в левом верхнем углу текущего выделенного фрагмента. Нельзя выбрать ячейку, которая находится не на активном листе, поэтому сначала необходимо активировать лист.

Используйте синтаксис Union ( диапазон1, диапазон2, . ) для возврата диапазонов из нескольких областей, то есть диапазонов, состоящих из двух или более смежных блоков ячеек. В следующем примере создается объект, определенный как объединение диапазонов A1:B2 и C3:D4, а затем выбирается определенный диапазон.

При работе с выделенными фрагментами, содержащими несколько областей, удобно применять свойство Areas. Оно разделяет выделенный фрагмент с несколькими областями на отдельные объекты Range, а затем возвращает объекты в виде коллекции. Используйте свойство Count в возвращенной коллекции, чтобы убедиться, что выделение содержит более одной области, как показано в следующем примере.

В этом примере используется метод AdvancedFilter объекта Range для создания списка уникальных значений, а также количества появлений этих уникальных значений в диапазоне столбца A.

Методы

Свойства

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

VBA Delete Range Shift in Excel Explained with Examples

VBA Reference

Effortlessly
Manage Your Projects

120+ Project Management Templates

Seamlessly manage your projects with our powerful & multi-purpose templates for project management.

120+ PM Templates Includes:

50+ Excel Templates

50+ PowerPoint Templates

25+ Word Templates

A Powerful & Multi-purpose Templates for project management. Now seamlessly manage your projects, tasks, meetings, presentations, teams, customers, stakeholders and time. This page describes all the amazing new features and options that come with our premium templates.

Save Up to 85% LIMITED TIME OFFER
All-in-One Pack
120+ Project Management Templates
Essential Pack
50+ Project Management Templates

Excel Pack
50+ Excel PM Templates

PowerPoint Pack
50+ Excel PM Templates
MS Word Pack
25+ Word PM Templates
Ultimate Project Management Template
Ultimate Resource Management Template
Project Portfolio Management Templates

We can use VBA Delete Range to Shift Up and Shift Left the cells. Range.Delete method will Delete the selected cells or range as per the shift options. You can also delete entire rows or columns using EntireRow.Delete and EntireColumn.Delete methods of range object.

VBA to Delete Range in Excel – Syntax

Here is the syntax to Delete a range using VBA. Here, Shift will be xlToLeft or xlUp. Shift:=xlLeft will shifts the cells towards Left side after deletion of the range. And Shift:=xlUp will shifts the cells towards Upper side after deletion of the range.

The below syntax will delete the entire row of the selected range:

And the below syntax will delete the entire column of the selected range:

VBA to Delete Range in Excel – Example:Shift:=xlToLeft

Here is the simple example to Delete a range in excel using VBA. In this example , we are deleting the range and shifting the cells left side. Here we are deleting range “B2:D10”.

VBA to Delete Range in Excel – Example:Shift:=xlToUp

Here is the Excel VBA macro to Delete a range. In this example , we are deleting the range and shifting the cells towards up. Here we are deleting range “B2:D10”.

VBA to Delete Range in Excel – Example: EntireRow

Here is the simple example to Delete a range in excel using VBA. In this example , we are deleting the entire row(s). Here we are deleting the rows of the range “B2:D10”, ie. we are deleting rows 2 to 10.

VBA to Delete Range in Excel – Example: EntireColumn

Here is the simple example to Delete a range in excel using VBA. In this example , we are deleting the entire column(s). Here we are deleting the columns of the range “B2:D10”, ie. we are deleting columns ‘B’ to ‘D’.

VBA to Delete Range in Excel – Execution Instructions

You can follow the below steps to execute the macro to Delete and paste a range using VBA.

Источник

Просмотров: 58

Работа с ячейками и диапазонами в VBA

VBA в Excel используется, как и следует из названия, для автоматизации обработки информации в файлах программы. Но без умения взаимодействия с объектами с помощью VBA автоматическая обработка данных невозможна. Работа с объектами рабочего листа в Excel VBA заключается в обращении к таким объектам и изменении их свойств. Поэтому важное значение обретает умение правильно обращаться с помощью VBA к объектам Excel, так как вся информация находится именно в них. В противном случае все встроенные операторы и функции, все процедуры, используемые VBA, станут не более чем красивой абстракцией.

На нашем занятии мы познакомимся с основными объектами рабочего листа, используемыми в VBA. К таким объектам относятся ячейки и диапазоны ячеек.

Самым маленьким в иерархии объектов является ячейка. Работа с ячейкой начинается с обращения к ней в коде макроса. Обратиться к ячейке можно двумя способами. Если речь идет о ячейке, выбранной в данный момент, то ее указывают как ActiveCell. Активной ячейка становится после щелчка по ней мышью или перемещения, а нее курсором в программе Excel. В VBA для выбора и активации ячейки используют метод Select. Если речь идет о конкретной ячейке, то ее указывают комбинацией Cells(R,C). Здесь R и C представляют соответственно номер строки и номер столбца листа, на пересечении которых располагается указанная ячейка. Данный вариант является практически полным аналогом абсолютной адресации стиля R1C1. Чтобы получить значение ячейки, или ввести значение в ячейку используется метод value. Для примера рассмотрим следующий код

Sub Test_Cell()

Cells(2,4).Select

Cells(1,2).Value=5

ActiveCell.Value=10

End Sub

Что произойдет после запуска данного макроса? Прежде всего стоить заметить, что, так как лист не указан, все операции будут выполнены на открытом листе. Прежде всего программа выберет ячейку D2, так как колонка D является 4 по счету. Затем в ячейку B2 запишется значение 5, а в текущую ячейку D2 – значение 10. Несмотря на свою простоту, код наглядно демонстрирует, что для внесения данных в VBA выделять ячейки не обязательно, достаточно их указать в коде. Это очень важно, так как в итоге можно, находясь на одном листе книги, выбирать данные на остальных листах, не перемещаясь между ними. Такой подход позволяет сократить код программы макроса и ускорить работу. Кроме этого, можно указать ячейки по их расположению относительно указанной ячейки. Для этого используют метод Offset. Перемещение вниз по строкам и вправо по столбцам указывают положительными числами. Перемещение по строкам вверх и по столбцам влево будет отрицательным.

Пример кода

Sub Test_Cell2

Cells(4,3).Select

ActiveCell.Value=1

ActiveCEll.Offset(1,1)=2

ActiveCEll.Offset(2,2)=3

End Sub

Результатом работы макроса будет выбор ячейки С3. Значение данной ячейки станет равным единице. Затем последовательно программа переместится относительно активной ячейки на одну строку вниз и одну колонку влево, а потом на две строки вниз и две колонки влево. Фактически будут выбраны (но не активированы!) ячейки D5 и Е6, куда и запишутся соответственно значения 2 и 3.

Кроме рассмотренных выше методов, объект Cells поддерживает множество других методов и свойств. Перечислим несколько из них. Для упрощения будем считать, что все эти методы применены к активной ячейке

1. WrapText. Включает или выключает перенос текста в ячейке.

ActiveCell.WrapText=true

2. EntireRow, EntireColumn – соответственно показывают номер строки и номер колонки выбранной ячейки. Эти свойства изменить нельзя, но допустимо использовать для работы. Рассмотрим вариант, в котором необходимо скрыть ячейку. Саму ячейку отдельно скрыть нельзя, поэтому мы скроем целиком строку с выбранной ячейкой

ActiveCell.EntireRow.Hidden=true

3. AutoFit – автоматически настраивает ширину и высоту ячейки по ее содержимому.

ActiveCell.AutoFit

4. Font –указываются настройка шрифта. Задается стиль (bold, Italic, UnderLIne), размер (Size) и другие параметры. К примеру, сделаем шрифт активной ячейки полужирным и зададим размер (кегль) равным 12

ActiveCell.Font.Bold=true

ActiveCell.Font.Size=12

5. Formula – задает в ячейке формулу для вычислений. Более подробно о вычислениях в VBA вы можете узнать на наших занятиях.

a = ActiveCell.Offset(-2, 0).Value

b = ActiveCell.Offset(-1, 0).Value

ActiveCell.Formula = “=” & a & “+” & b

Макрос суммирует значение двух ячеек, находящихся непосредственно над активной. Обратите внимание, что формула записывается как текстовая строка, начинающаяся со знака «=», а части этой строки разделены знаком амперсанда «&» с обязательным пробелом как перед ним, так и после него.

6. Interior – указывает оформление. Часто применяют, чтобы указать цвет заливки. Для указания цвета используют свойство ColorIndex либо Color. В первом случае указывают номер цвета их имеющихся 56 вариантов, во втором задают цвет с помощью комбинирования соотношения красного, зеленого и синего цветов палитрой RGB. Первая цифра в скобках отвечает за уровень красного цвета, вторая соответствует уровню зеленого, третья – синему. Максимальное значение уровня цвета равно 255.

ActiveCell.Interior.ColorIndex = 6

ActiveCell.Offset(1, 0).Interior.Color = RGB(255, 255, 0)

Оба указанных выше варианта зададут желтый цвет заливки.

7. Сору – Копирует содержимое ячейки. Можно сразу указать место назначения скопированных данных. Если это не сделать, выполнится копирование в буфер обмена.

8. Cut – вырезает содержимое ячейки.

Конечно, есть и другие свойства, и методы ячеек, здесь перечислены только наиболее часто применяемые из них.

Перейдем к использованию диапазонов в VBA. Работу с ними ведут с помощью объекта Rangе, указав в скобках нужный адрес. Например, команда

Range(“A2:D6”).value=10

Запишет значение 10 в каждую ячейку диапазона A2:D6. Обратите внимание, что адрес выбранного диапазона находится в кавычках. В качестве диапазона можно указать и одну ячейку, поэтому операторы ниже равносильны и активируют одну и ту же ячейку.

Cells(1,2).Select

Range(“B1”).Select

Кроме этого, диапазон задают, указав адрес его крайних угловых ячеек по диагонали и отделив их запятой. Обычно задают крайние верхнюю левую и нижнюю правую ячейку нужного диапазона. Таким образом, диапазон “A2:D6” можно указать так:

Range(Cells(2,1),Cells(6,4))

Несмежные диапазоны указывают двумя способами. Во-первых, отделяют адреса в объекте Range запятой

Range(“A1,B10”).Value = 180

Кроме этого, для указания несмежного диапазона используют метод Union

Union(Range(“A1”), Range(“B10”)).Value = 180

Оба варианта запишут значение 180 в диапазоны A1 и B10 одновременно, пропустив все ячейки между ними. Метод Union удобнее, если нужно применить цикл. О работе с циклами мы поговорим на следующих занятиях.

Объект Range поддерживает все методы и свойства, доступные для объектов Cells. Кроме этого, у данного объекта есть и другие свойства, и методы, которые либо нельзя использовать для объектов Cells, либо такое использование является бессмысленным.

1. Row – номер строки первой ячейки выбранного диапазона.

2. Column – номер столбца первой ячейки выбранного диапазона

3. Rows.Count и Columns.Count – количество строк и столбцов соответственно указанном диапазоне.

4. Sort – сортировка диапазона

5. AutoFilter – – аналог команды Excel «Данные» → «Фильтр» → «Автофильтр». Настройка фильтрации задается указанными для данного метода параметрами.

6. Clear, ClearComments, ClearContents, ClearFormats – выполняют очистку всего диапазона, комментариев, содержимого и формата диапазона соответственно.

7. Delete – удаляет диапазон. Необходимо указать смещение ячеек после удаления диапазона с помощью свойства Shift. Смещение влево задается как Shift=XlToLeft, для смещения вверх применяют вариант Shift:=XlUp

Стоит отметить тонкость обращения к активному диапазону в среде VBA. При работе с диапазонами для указания активного диапазона команды ActiveRange не существует. Аналогом объекта ActiveCell, указывающего на активную ячейку, для диапазонов является объект Selection. Он содержит все выделенные ячейки на листе. Доступ к данному объекту и работа с ним выполняется теми же методами и свойствами, что и при работе с объектом Range. Объект Selection позволяет более гибко обработать нужный диапазон, так как отсутствует привязка к конкретному адресу. Это очень удобно, так как расположение фактических данных обычно не совпадает с адресом указанного в макросе диапазона.

Кроме объекта Selection, содержащего выделенный диапазон, существую еще два варианта для выбора диапазона на рабочем листе. Это объекты CurrentRegion и UsedRange.

Объект CurrentRegion представляет собой диапазон, содержащий активную ячейку и ограниченный пустыми строками и столбцами, любо границами листа. Строки и столбцы, ограничивающие объект CurrentRegion не должны содержать не только данных и формул, но и форматирования.

Объект UsedRange содержит диапазон, в котором происходит работа пользователя. Этот диапазон содержит все ячейки листа, в которых обрабатывалось содержимое, в том числе форматы. При удалении ячеек с данными на листе они продолжают использоваться в Used Range. Чтобы их убрать, необходимо перейти в заполненную ячейку и сохранить файл. Кроме этого можно применить такой код

With ActiveSheet.UsedRange: End With

Обратите внимание, что для использования объекта CurrentRegion надо указать ячейку, относительно которой вычисляется адрес данного объекта. При использовании UsedRange требуется указать лист, на котором идет работа. Аналогично обращению к текущей ячейке текущий лист задают как ActiveSheet. Более подробно работу с листами рассмотрим в следующих занятиях.

Текущий же наш урок подошел к концу. Желаем всем хорошего дня и удачи в работе.

Manipulating ranges and cells is one of the most common actions in VBA.   You can use the following to either learn from or just to copy and paste into your own code.

Referencing ranges & cells from the worksheet

'Reference range by address
Workbooks("WorkbookName.xlsx").Worksheets("SheetName").Range("A1:D4").[Other properties and actions]

'Reference cells by row and column - Cells(Row,Column)
Workbooks("WorkbookName.xlsx").Worksheets("SheetName").Cells(1, 1).[Other properties and actions]

'Reference ranges by a defined name
Workbooks("WorkbookName.xlsx").Worksheets("SheetName").Range("RangeName").[Other properties and actions]

Assigning a range to a variable

'Assigning a range to a variable
Dim Rng As Range
Set Rng = Workbooks("WorkbookName.xlsx").Worksheets("SheetName").Range("A1:D4")

'Assigning a cell to a variable
Dim Rng As Range
Set Rng = Workbooks("WorkbookName.xlsx").Worksheets("SheetName").Cells(1, 1)

Selecting ranges and cells

'Select range by address
Range("A1:D4").Select

'Select cells by row and column - Cells(Row,Column)
Cells(1, 1).Select

'Select ranges by a defined name
Range("RangeName").Select

Changing the value of a range or cell

'Change value of a range by address
Range("A1:D4").Value = "Text here"

'Change value cells by row and column - Cells(Row,Column)
Cells(1, 1).Value = 30

Setting the value of a variable based on the value of a cell

'Setting a variable based on a cell value
Dim CellValue As Integer
CellValue = Cells(1, 1).Value

Counting cells, rows and columns

'Count cells in a range
Dim CellsInRange As Long
CellsInRange = Range("A1:D4").Cells.Count

'Count rows in a range
Dim RowsInRange As Long
RowsInRange = Range("A1:D4").Rows.Count
 
'Count columns in a range
Dim ColumnsInRange As Long
ColumnsInRange = Range("A1:D4").Columns.Count

Looping through cells, rows and columns in a range

'Loop through action for each cell in a range
Dim Rng As Range
Dim CellsInRng As Range

Set Rng = Range("A1:D4")

For Each CellsInRange In Rng
    'Carry out an action
Next CellsInRange

'Loop through action for each row in a range
Dim Rng As Range
Dim CellsInRng As Range

Set Rng = Range("A1:D4")

For Each CellsInRange In Rng.Rows
    'Carry out an action
Next CellsInRange

'Loop through action for each column in a range
Dim Rng As Range
Dim CellsInRng As Range

Set Rng = Range("A1:D4")

For Each CellsInRange In Rng.Columns
    'Carry out an action
Next CellsInRange

Inserting rows, columns, ranges and cells

'Inserting Columns
Columns("B:B").Insert

'Inserting Rows
Rows("2:3").Insert

'Inserting a range of cells (shift cells to the right)
Range("A1:D4").Insert Shift:=xlToRight

'Inserting a range of cells (shift cells to down)
Range("A1:D4").Insert Shift:=xlDown

Deleting rows, columns, ranges and cells

'Deleting columns
Columns("B:B").Delete

'Deleting rows
Rows("3:4").Delete

 'Delete a range of cells (shift cells to the right)
Range("A1:D4").Delete Shift:=xlToLeft

'Delete a range of cells (shift cells to the down)
Range("A1:D4").Delete Shift:=xlU

Copy and pasting

'Copy and paste everyting
Range("A1:D4").Copy
Range("H7").Paste

'Copy and paste values only
Range("A1:D4").Copy
Range("H7").PasteSpecial Paste:=xlPasteValues

'Copy and paste formats only
Range("A1:D4").Copy
Range("H7").PasteSpecial Paste:=xlPasteFormats

Copying and paste without using the clipboard

'Copy everyting
Range("A1:D4").Copy Destination:=Range("H7")

'Copy values only
Range("H7:K10").Value = Range("A1:D4").Value

Finding the last cell in a row or column

'Last used cell in one row
Dim LastRow As Long
LastRow = Workbooks("WorkbookName.xlsx").Worksheets("SheetName").Cells(Rows.Count, "A").End(xlUp).Row

'Last used cell in one column
Dim LastCol As Integer
LastCol = Workbooks("WorkbookName.xlsx").Worksheets("SheetName").Cells(1, Columns.Count).End(xlToLeft).Column

Finding the first cell in a range

'Find the row of first cell of a range
Dim FirstRow As Long
Dim Rng As Range
Set Rng = Range("A1:D4")
FirstRow = Rng.Row

'Find the column of first cell of a range
Dim FirstColumn As Long
Dim Rng As Range
Set Rng = Range("A1:D4")
FirstColumn = Rng.Column

Finding the row and column of the active cell

'Find the row of the active cell
 ActiveCell.Row

'Find the columns of the active cell
 ActiveCell.Column

'Find the address of the active cells
ActiveCell.Address

Headshot Round

About the author

Hey, I’m Mark, and I run Excel Off The Grid.

My parents tell me that at the age of 7 I declared I was going to become a qualified accountant. I was either psychic or had no imagination, as that is exactly what happened. However, it wasn’t until I was 35 that my journey really began.

In 2015, I started a new job, for which I was regularly working after 10pm. As a result, I rarely saw my children during the week. So, I started searching for the secrets to automating Excel. I discovered that by building a small number of simple tools, I could combine them together in different ways to automate nearly all my regular tasks. This meant I could work less hours (and I got pay raises!). Today, I teach these techniques to other professionals in our training program so they too can spend less time at work (and more time with their children and doing the things they love).


Do you need help adapting this post to your needs?

I’m guessing the examples in this post don’t exactly match your situation. We all use Excel differently, so it’s impossible to write a post that will meet everybody’s needs. By taking the time to understand the techniques and principles in this post (and elsewhere on this site), you should be able to adapt it to your needs.

But, if you’re still struggling you should:

  1. Read other blogs, or watch YouTube videos on the same topic. You will benefit much more by discovering your own solutions.
  2. Ask the ‘Excel Ninja’ in your office. It’s amazing what things other people know.
  3. Ask a question in a forum like Mr Excel, or the Microsoft Answers Community. Remember, the people on these forums are generally giving their time for free. So take care to craft your question, make sure it’s clear and concise.  List all the things you’ve tried, and provide screenshots, code segments and example workbooks.
  4. Use Excel Rescue, who are my consultancy partner. They help by providing solutions to smaller Excel problems.

What next?
Don’t go yet, there is plenty more to learn on Excel Off The Grid.  Check out the latest posts:

Выделение/удаление столбца

Roman777

Дата: Четверг, 12.03.2015, 12:17 |
Сообщение № 1

Группа: Проверенные

Ранг: Ветеран

Сообщений: 980


Репутация:

127

±

Замечаний:
0% ±


Excel 2007, Excel 2013

Добрый день!
Хочу удалить определённый столбец (определяемый по условию). На каждом листе книги.
Пишу:
[vba]

Код

      sht.Cells(2, j1).Column.Select
      Selection.Delete Shift:=xlToLeft

[/vba]

Как это можно осуществить правильно?


Много чего не знаю!!!!

 

Ответить

_Boroda_

Дата: Четверг, 12.03.2015, 12:22 |
Сообщение № 2

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Так?
[vba]

Код

    For Each sh_ In ThisWorkbook.Worksheets
         sh_.Columns(j1).Delete
     Next sh_

[/vba]


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Roman777

Дата: Четверг, 12.03.2015, 12:28 |
Сообщение № 3

Группа: Проверенные

Ранг: Ветеран

Сообщений: 980


Репутация:

127

±

Замечаний:
0% ±


Excel 2007, Excel 2013

_Boroda_, Спасибо! Идеально! А что тогда задаёт Shift:=xlToLeft? я пробовал xltoRight и разницы не ощутил…


Много чего не знаю!!!!

 

Ответить

Roman777

Дата: Четверг, 12.03.2015, 12:32 |
Сообщение № 4

Группа: Проверенные

Ранг: Ветеран

Сообщений: 980


Репутация:

127

±

Замечаний:
0% ±


Excel 2007, Excel 2013

И выделить таким методом не получается
Пишу:
[vba]

Код

sh_.Columns(j1).select

[/vba]
Говорит о том, что неверно завершён метод.


Много чего не знаю!!!!

 

Ответить

_Boroda_

Дата: Четверг, 12.03.2015, 12:32 |
Сообщение № 5

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

А как Вы себе представляете удаление столбца со смещением вправо?
я думал, что J1 — это переменная. Если это ссылка на ячейку, тогда так
[vba]

Код

    For Each sh_ In ThisWorkbook.Worksheets
         sh_.Columns(«J»).Delete Shift:=xlToRight
     Next sh_

[/vba]


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Roman777

Дата: Четверг, 12.03.2015, 12:35 |
Сообщение № 6

Группа: Проверенные

Ранг: Ветеран

Сообщений: 980


Репутация:

127

±

Замечаний:
0% ±


Excel 2007, Excel 2013

J1 — это переменная…). Я думал, что смещаться будет выделение. А не сам столбец). Но я понимаю что выделения тут вообще не происходит. Просто когда xlToLeft, хочется проверить что такое будет xlToRight, а он даже ошибки не выдал.


Много чего не знаю!!!!

Сообщение отредактировал Roman777Четверг, 12.03.2015, 12:36

 

Ответить

RAN

Дата: Четверг, 12.03.2015, 13:26 |
Сообщение № 7

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

Варианты
[vba]

Код

Cells(1, 1).Offset(, 3).EntireColumn.Delete

Cells(1, 1).EntireColumn.Delete

Columns(i).Delete

[/vba]


Быть или не быть, вот в чем загвоздка!

 

Ответить

Roman777

Дата: Четверг, 12.03.2015, 13:40 |
Сообщение № 8

Группа: Проверенные

Ранг: Ветеран

Сообщений: 980


Репутация:

127

±

Замечаний:
0% ±


Excel 2007, Excel 2013

RAN, Спасибо за столько вариант! А можно варианты с выделением столбцов? (иногда удобно видеть как код выделяет их, чтобы пошагово проверить корректность работы)


Много чего не знаю!!!!

 

Ответить

RAN

Дата: Четверг, 12.03.2015, 14:18 |
Сообщение № 9

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

Delete удаляет, Select выделяет, Clear очищает.
Остальное все то же.


Быть или не быть, вот в чем загвоздка!

 

Ответить

Roman777

Дата: Четверг, 12.03.2015, 14:48 |
Сообщение № 10

Группа: Проверенные

Ранг: Ветеран

Сообщений: 980


Репутация:

127

±

Замечаний:
0% ±


Excel 2007, Excel 2013

RAN, Спасибо ещё раз! У меня просто не во всех случаях, где ставилось delete можно было ставить и Select и clear… (ваши варианты тоже проверил с первым и вторым — всё вроде работает, а вот с «Columns(i).Delete» .select не работает).


Много чего не знаю!!!!

 

Ответить

Manyasha

Дата: Четверг, 12.03.2015, 14:55 |
Сообщение № 11

Группа: Модераторы

Ранг: Старожил

Сообщений: 2198


Репутация:

898

±

Замечаний:
0% ±


Excel 2010, 2016

Roman777, Здравствуйте. Если i — это целочисленная переменная (например, i = 3), тогда
[vba]

Код

i = 3
Columns(i).Delete’.Select

[/vba]
А если i — это название столбца, тогда[vba]

Код

Columns(«i»).Delete’.Select

[/vba]


ЯД: 410013299366744 WM: R193491431804

 

Ответить

Roman777

Дата: Четверг, 12.03.2015, 15:19 |
Сообщение № 12

Группа: Проверенные

Ранг: Ветеран

Сообщений: 980


Репутация:

127

±

Замечаний:
0% ±


Excel 2007, Excel 2013

Manyasha, Добрый день!
Я подставил тупо числом:
[vba][/vba]
Выдало ошибку.


Много чего не знаю!!!!

 

Ответить

Roman777

Дата: Четверг, 12.03.2015, 15:22 |
Сообщение № 13

Группа: Проверенные

Ранг: Ветеран

Сообщений: 980


Репутация:

127

±

Замечаний:
0% ±


Excel 2007, Excel 2013

И мб немного не в тему будет вопрос. Возможно ли выделение диапазона таким образом:

[vba]

Код

         Set range1 = sht.Cells(3, j).Resize(i_n — 2)
          range1.Select

[/vba]
?


Много чего не знаю!!!!

 

Ответить

RAN

Дата: Четверг, 12.03.2015, 15:29 |
Сообщение № 14

Группа: Друзья

Ранг: Экселист

Сообщений: 5645


Быть или не быть, вот в чем загвоздка!

 

Ответить

Roman777

Дата: Четверг, 12.03.2015, 15:37 |
Сообщение № 15

Группа: Проверенные

Ранг: Ветеран

Сообщений: 980


Репутация:

127

±

Замечаний:
0% ±


Excel 2007, Excel 2013

RAN, Manyasha, Прошу прощения, в этот раз попробовал
[vba]

Код

Sub проверка()
Columns(5).Select
End Sub

[/vba]
Всё работает. Наверное что-то невнимательно проглядел в предыдущий раз. Хотя код безумно мелкий, что тут можно проглядеть то…)

А вот с проверить.
Попробовал
[vba]

Код

Sub ïðîâåðêà2()
Dim range1 As Range
Dim sht As Worksheet

Set ActWB = ActiveWorkbook
For Each sht In ActWB.Worksheets

Set range1 = sht.Cells(3, 2).Resize(10)
          range1.Select
Next sht
End Sub

[/vba]
Пишет на строчке Set range1 = sht.Cells(3, 2).Resize(10) «что неверное завершён метод Select из Range класса»
Я потому и спрашиваю, как можно подобное выделение реализовать? именно при использовании .Resize?


Много чего не знаю!!!!

Сообщение отредактировал Roman777Четверг, 12.03.2015, 15:40

 

Ответить

Manyasha

Дата: Четверг, 12.03.2015, 15:58 |
Сообщение № 16

Группа: Модераторы

Ранг: Старожил

Сообщений: 2198


Репутация:

898

±

Замечаний:
0% ±


Excel 2010, 2016

[vba]

Код

Set range1 = Cells(3, 2).Resize(10)
range1.Select

[/vba]
UPD.
А в цикле вот так можно:
[vba]

Код

For Each sht In ActWB.Worksheets
      sht.Activate
      Set range1 = Cells(3, 2).Resize(10)
      range1.Select
Next sht

[/vba]


ЯД: 410013299366744 WM: R193491431804

Сообщение отредактировал ManyashaЧетверг, 12.03.2015, 16:24

 

Ответить

RAN

Дата: Четверг, 12.03.2015, 16:26 |
Сообщение № 17

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

Select можно использовать только на активном листе.
Если sht активный, будет работать, если нет, будет ошибка.


Быть или не быть, вот в чем загвоздка!

 

Ответить

Roman777

Дата: Пятница, 13.03.2015, 10:18 |
Сообщение № 18

Группа: Проверенные

Ранг: Ветеран

Сообщений: 980


Репутация:

127

±

Замечаний:
0% ±


Excel 2007, Excel 2013

Manyasha, RAN, Спасибо большое! Весьма исчерпывающе.


Много чего не знаю!!!!

 

Ответить

  • Home
  • FREE DOWNLOADS
  • VBA Tutorials
  • VBA CodeSamples
  • VBA for Beginners
  • Save Time News
  • Outlook Tutorials
  • Save Time Blog
  • Excel VBA Code
  • About This Website
  • Tell Your Story

To delete column in Excel VBA you
can first run this Sub to enter data into a spreadsheet if you are
starting with a blank workbook.

Sub Mulptiplication_Table()
Range("A1").Select
ActiveCell.FormulaR1C1 = "1"
Range("B1").Select
ActiveCell.FormulaR1C1 = "2"
Range("A1:B1").Select
Selection.AutoFill Destination:=Range("A1:J1"), Type:=xlFillDefault
Range("A1:J1").Select
Range("A2").Select
ActiveCell.FormulaR1C1 = "2"
Range("A1:A2").Select
Selection.AutoFill Destination:=Range("A1:A10"), Type:=xlFillDefault
Range("A1:A10").Select
Range("B2").Select
ActiveCell.FormulaR1C1 = "=R[-1]C*RC[-1]"
Range("B2").Select
Selection.AutoFill Destination:=Range("B2:C2"), Type:=xlFillDefault
Range("B2:C2").Select
Range("B2").Select
ActiveCell.FormulaR1C1 = "=R1C*RC1"
Range("B2").Select
Selection.AutoFill Destination:=Range("B2:J2"), Type:=xlFillDefault
Range("B2:J2").Select
Selection.AutoFill Destination:=Range("B2:J10"), Type:=xlFillDefault
Range("B2:J10").Select
End Sub

In
the following Sub, you can use either Columns(«F:F») or Columns(3)
depending on the column you want to delete. The Columns property takes
a Range or a numerical value.

Sub Delete_Column_Excel_VBA()
Columns("F:F").Select
Selection.Delete Shift:=xlToLeft
End Sub

The
Rows property also takes a Range or a numerical value.

Sub Delete_Row_Excel_VBA()
Rows("7:7").Select
Selection.Delete Shift:=xlUp
End Sub

In
both the above examples of Selection.Delete, you do not need the
«Shift:=» xlToLeft or xlUp since you are deleting a whole Row or
Column. If you were deleting a Range of cells that are not a whole Row
or Column you would want to specify from which direction you want the
cells to move from with xlToLeft, xlToRight, xlUp, and xlDown.

Return
from Delete
Column
Excel VBA

to VBA Code Samples

Return
to our Homepage

footer for Save Time page

Like this post? Please share to your friends:
  • Shift of word stress
  • Shift from tab to tab in excel
  • Shift f12 in excel
  • Shift enter код word
  • Shift enter в word что это