Юрий М написал: Неужели я задаю такие трудные вопросы, что на них нельзя ответить сразу?
Ну получается, что нельзя, дядя Попроще надо отвечать и общаться, а то можно и в жбан получить....Это вам так на будущее. За помощь с макросом благодарю!
Объединение в моем понимании означает объединить 4е макроса в один Одним словом нажимаешь одну кнопку, и выполняются последовательно четыре макроса. То есть предлагаю следующий заголовок: "Объединить несколько макросов, чтобы их запуск выполнялся последовательно". Пойдет так?
Помогите пож-та объединить четыре макроса в один. В VBA не особо силен
Код
Sub DeleteSheet()
Dim Sh As Object
For Each Sh In ActiveWorkbook.Sheets
Application.DisplayAlerts = False
If Sh.Visible <> xlSheetVisible Then Sh.Delete
Application.DisplayAlerts = True
Next
End Sub
Public Sub DelHiddenRows()
Dim lR As Long, i As Long, Sh As Worksheet
On Error Resume Next
Application.ScreenUpdating = False
For Each Sh In ThisWorkbook.Worksheets
Sh.Activate
lR = Sh.UsedRange.Rows.Count + Sh.UsedRange.Row - 1
For i = lR To 1 Step -1
If Sh.Rows(i).Hidden Then Rows(i).Delete
Next
Next
Application.ScreenUpdating = True
End Sub
Sub delete_hidden_columns()
Dim ws As Worksheet
Dim i As Integer
For Each ws In ThisWorkbook.Worksheets
For i = 256 To 1 Step -1
If ws.Columns(i).EntireColumn.Hidden Then
ws.Columns(i).EntireColumn.Delete
End If
Next
Next ws
Set ws = Nothing
End Sub
Sub DeleteAllComments()
For Each xWs In Application.ActiveWorkbook.Sheets
For Each xComment In xWs.Comments
xComment.Delete
Next
Next
End Sub
Помогите пож-та решить насущную задачу. Есть исходная таблица, в которой необходимо отсортировать нужное значение по трем условиям из выпадающих списков. Файл пример приложил + мои комментарии внутри.
Если данная задача была решена ранее, то буду благодарен за ссылку. Пытался найти сам, но безрезультатно...
Vik_tor и БМВ, таким образом я сам решил Объясняю: все дело в том что кол-во строк может быть>10000, и кол-во столбцов 100. При исп. обычной формулы начинаются тормоза. Массив быстрее считает
Помогите пож-та решить задачку посредством формулы массива: необходимо подставить значение из строки 4, только в те ячейки (> Начало = строка 2) * (< Конец = (строка 2+строка3)).
Сравнение идет по оси времени - колонка D. Пример с комментариями приложил. Для ориентира решил вручную (см. желтые ячейки как должно быть)
Игорь. прошу прощения я не учел что у меня есть пробелы между строками. Не могли бы вы переделать код для 20 строк. Спасибо! Правильный пример приложил к письму.
Добрый день, Форумчане Есть лист с определенной разметкой. На нем существуют блоки, которые могут копироваться один за другим (Ctrl C-->Ctrl V). Каждому блоку присваивается уникальный номер: ячейки С30, C68, C106 (то есть с шагом 38 строк). Помогите написать функцию, которая бы при копирование блока автоматически считывала имя блока и заносила их в соответствующие 10 ячеек (Колонка I). Файл прилагается! Спасибо!
Sanja, мой первоначальный макрос у меня работает. Сделал повторную проверку: Сделал сперва круглое окончание и увеличил масштаб. Запустил макрос и стиль окончания поменялся на плоское для первой линии.
Попробовал ваш код: цикл работает и виден перебор каждой серии, но стиль окончания линий не меняется. Вместо это макрос проставляет букву F в колонке А.
Нашел макрос, который автоматически меняет толщину всех линий. Может будет полезно для решения задачи...
Код
Sub SetWeights()
Dim srs As Series
For Each srs In ActiveSheet.ChartObjects("Chart 1").Chart.SeriesCollection
srs.Format.Line.Weight = 0.75
Next
End Sub
Ігор Гончаренко написал: нужно с Ctrl отметить 2 шт и исправить тип окончания линии для двух если исправятся 2 сразу - исправятся все сразу))
Да я сам не ожидал такой подставы от Microsoft. Окошки в своем стиле короче Самое интересное я практически завершил проект с моими большими вычислениями и в конце столкнулся с такой сложностью в построении нужной диаграммы. Хотя вроде бы мелочь, как поменять цвет линии.
Игорь, проблема в том, что я не программист и с циклами не особо дружу. Поэтому и попытался найти ответ на этом форуме. По поводу "Отметить все" надо подумать...может есть такой макрос. Спасибо за идею
Добрый вечер! Помогите решить следующую задачу: Есть диаграмма, на которой создается много горизонтальных линий. По умолчанию Excel делает окончании линий круглым. Это не подходит мне, и нужен обязательно тип - плоский
Sub SetLineCap()
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.SeriesCollection(1).Select
With Application
.SendKeys "{F10}JA" 'hotkey select PIVOTCHART TOOLS > FORMAT tab
.SendKeys "SOWLA{RETURN}" 'navigate to Format data series > Cap type
.SendKeys "{F}{RETURN}" 'select 'flat' from the list
End With
End Sub
Минус его решения - меняется стиль только для первой линии. А их может быть >100
Еще нашел на форуме такой код в помощь, который в цикле переделывает формат всех маркеров и их цвет
Код
Sub Markers()
ActiveSheet.ChartObjects("Chart 1").Activate
For i = 1 To ActiveChart.SeriesCollection(1).Points.Count
With ActiveChart.SeriesCollection(1).Points(i).Format.Line
.Style = msoLineSingle
.Visible = msoTrue
.ForeColor.ObjectThemeColor = msoThemeColorText1
.ForeColor.RGB = #00ff00
.Transparency = 0
End With
Next
End Sub
Так как в VBA я не особо силен, то нужна помощь гуру и поэтому прошу вас помочь мне объединить/модифицировать эти два макроса, чтобы в конечном итоге автоматически (по нажатию на кнопку) менялся тип окончания у всех линий на плоский? Файл пример прилагается.
The_prist, спасибо! Сейчас попробую ваш вариант (если не получиться, то выложу файл). Я ничего не надумывал, просто вышло общее недопонимание Все время я вел здесь речь только про цвет и тип линии сетки
Я вам изначально вставил кусок кода. У меня там было objChart.Axes(xlValue).MajorGridlines.Select. Вы сами сбили меня с толку
Цитата
И так же неплохо бы понимать - Вы тип линий для чего изменить хотите: точно для оси? Не для линий данных?
и я подумал, что случайно выделил основную линию!!! Повторюсь еще раз, необходимо поменять формат линии сетки. Мой код не работает.
Код
objChart.Axes(xlValue).MajorGridlines.Select
With Selection.Format.Line
.Visible = msoTrue
.ForeColor.ObjectThemeColor = msoThemeColorBackground1
.ForeColor.TintAndShade = 0
.ForeColor.Brightness = -0.150000006
.Transparency = 0
End With
With Selection.Format.Line
.Visible = msoTrue
.Weight = 0.25
End With
With Selection.Format.Line
.Visible = msoTrue
.DashStyle = msoLineDash
End With
Хочу изменить тип линии сетки, её цвет и толщину. Извиняюсь, может быть по не опытности выделил основную линию и проводил операции на ней. Пожалуйста, код прилагается.
Код
Option ExplicitPrivate Sub Worksheet_Activate()
Dim Sh As Worksheet, XRng As Range, YRng As Range, objChart As Chart, objSeries As Series
Dim Xmin As Double, Xmax As Double, Y, Ymin As Double, Ymax As Double, YA As Double, DY As Double, k As Long
Xmin = Sheets("Sheet1").Range("DW1")
Xmax = Sheets("Sheet1").Range("DW2")
Set Sh = Sheets("Sheet1")
Set XRng = Sh.Range("DV6:DV10086") ' Time '
k = WorksheetFunction.Match(1E+300, XRng, 1)
Set XRng = XRng.Resize(k)
Set YRng = Sh.Range("DW6:DW10086").Resize(k) ' '
Application.StatusBar = "Please wait..."
Application.Cursor = xlWait
For k = 1 To 1
DoEvents
Set objChart = Me.ChartObjects(k).Chart
Set objSeries = objChart.SeriesCollection(1)
objSeries.XValues = XRng
objSeries.Values = YRng.Columns(k)
objChart.Axes(xlCategory).MinimumScale = Xmin
objChart.Axes(xlCategory).MaximumScale = Xmax
Ymin = 1E+300
Ymax = -1E+300
For Each Y In YRng.Columns(k).Value
If VarType(Y) >= 2 And VarType(Y) <= 7 Then
If Y < Ymin Then Ymin = Y
If Y > Ymax Then Ymax = Y
End If
Next
Rem Method of flow scale:
YA = (Ymin + Ymax) / 2 * 1.05
DY = (Ymax - Ymin) / 2 * 1.05
Ymin = YA - DY
Ymax = YA + DY
Rem until
objChart.Axes(xlValue).MinimumScale = Ymin
objChart.Axes(xlValue).MaximumScale = Ymax
objChart.Axes(xlCategory).MajorUnit = Sheets("Sheet2").Range("AE29")
objChart.Axes(xlValue).MajorGridlines.Select
With Selection.Format.Line
.Visible = msoTrue
.ForeColor.ObjectThemeColor = msoThemeColorBackground1
.ForeColor.TintAndShade = 0
.ForeColor.Brightness = -0.150000006
.Transparency = 0
End With
With Selection.Format.Line
.Visible = msoTrue
.Weight = 0.25
End With
With Selection.Format.Line
.Visible = msoTrue
.DashStyle = msoLineDash
End With
Next
Application.StatusBar = False
Application.Cursor = xlDefault
End Sub