Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Переключение макросов в ComboBox

Здравствуйте, подскажите, пожалуйста, как вставить макросы в ComboBox.
Например, я нажимаю на список и есть выбор "Автоматический пересчет" -
Код
Application.Calculation = xlAutomatic
и "Ручной пересчет" -
Код
Application.Calculation = xlManual
. Получается, что я выбираю из списка "ручной пересчет" и настройки параметров вычислений меняются.
Ответ: Спасибо большое.
Вопрос: Combobox выбор значения по нажатию Enter и переход на другую ячейку

Уважаемые,

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

В моей рабочей книге есть Combobox, но я не могу сообразить как сделать так, чтобы по нажатию клавиши Enter выбиралось текущее значение и я переходил к ячейке ниже. Создал следующий код, но он перебрасывает меня в ячейку ниже, но выбранное значение в Combobox не сохраняется:

Visual Basic
1
2
3
Private Sub TempBox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Then Me.Range("F5").Select
End Sub
В данный момент, выбор значение выполняется только по нажатию мышки


Заранее благодарю
Ответ: deeznuts, у меня сохраняется (комбобокс на листе, Excel 2007). Приложите свой файл, в котором не сохраняется.
Попробуйте использовать событие KeyPress.
Вопрос: Импорт макроса для новой открытой книги

Здравствуйте, друзья. Возможно ли в екселе "встраивать, импортировать" макрос в новую книгу, в которой этого макроса не существовало?

На данный момент, для того чтобы запустить написанный макрос, мне необходимо открыть книгу, в которой данный макрос присутсвует, открыть книгу в которой мне необходимо этот макрос запустить, и через сочетание клавиш Alt+F8 выполнить запуск макроса в новой книге. Возможно ли обойти это, для того, чтобы не открывать каждый раз книгу, в которой данный макрос присутствует?
Ответ: Maxfashko, еще раз: Личная книга макросов. Она открывается по умолчанию при запуске Excel, но невидима. А макросы из нее можно запускать по Alt+F8 или "повесить" на кнопки. Почти то же самое - сохранить книгу с макросом как надстройку и подключить эту надстройку.
Кстати, можно сделать так, чтобы макрос запускался при открытии любой книги, определял по каким-либо критериям (имя книги/листа, папка, содержимое и т.д.), что эта книга подлежит обработке, и запускал обработку. Примеры можете поискать по
Dim WithEvents app As Application
Вопрос: Как макросы вынести в боковую панель excel

Здравствуйте форумчане! Возникла потребность в следующем:
Вынести все имеющиеся макросы в отдельную панель прямо списком. В боковую панель(правую или левую, желательно. но можно и отдельным окошечком, что бы при запуске макроса оно не закрывалось. А то после макроса приходится открывать и снова искать нужный макрос. Очень не удобно. Потребность возникла уже дано, но сейчас это уже прижало, т.к. накопилось огромное кол-во макросов, которые я использую постоянно.
Ответ: AlexM, неее. оно исчезает и каждый раз нужно его открывать. если бы оно не исчезало + было бы возможность его растянуть по вертикали, что бы было видно как можно больше макросов.

Добавлено через 56 минут
AlexM, как сделать что бы окошко с макросами не исчезало после запуска макроса. И как сделать чтобы растянуть это окошечко9сделать больше)
Вопрос: Макрос для изменения рисунков

Доброго времени суток. Мне нужно обработать несколько тысяч фото, вставить их в word как в примере в прикрепленном файле "Пример". Пробовал применять макрос, представленный ниже:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub changeImagesWidth()
 
Dim iShape As InlineShape
For Each iShape In ActiveDocument.InlineShapes
newW = 100
WH = iShape.Width / iShape.Height
iShape.Width = MillimetersToPoints(newW)
iShape.Height = MillimetersToPoints(newW / WH)
 
Next iShape
End Sub
Результат применения данного макроса в файле "Исходный файл для правки".
Однако данный макрос изменяет только ширину, а высота при этом у всех картин разная, и получается иногда из-за формата рисунка 1 рисунок может занять 1 страницу (если сам рисунок формата, например 7:2 и длинный вверх). В идеале нужно чтобы на каждой странице помещалось 6 рисунков, рисунки не должны быть слеплены, между ними (сверху, снизу, слева и справа) должны быть маленькие зазоры, а также не должно быть такого, что заголовок (название) рисунка в конце страницы, а фото с новой начинаются. В таком случае надо чтобы переносился заголовок на новую страницу.

Возможно это можно сделать если добавить в предыдущий макрос функцию ограничения высоты рисунка, не устанавливая фиксированное значение (чтобы не менялись пропорции фото). А также в том макросе приходится 800 раз кликать на кнопку "ок" выполнение макроса, чтобы применить этот макрос на 800 рисунков, это тоже желательно чтобы было автоматизированно.
В общем, нужно сделать чтобы результат был примерно как в файле "Пример".
Буду очень признателен если кто-то сможет упростить эту рутинную работу.
Ответ:
Сообщение от Freeman95
как в примере в прикрепленном файле "Пример"
примера нет
и вам в раздел VBA надо, там про макросы разговоры ведут
Вопрос: Обновление данных листа после изменения ComboBox

На листе имеются ячейки G1 (фамилия), K1 (имя), I1 (отчество), N1 (фамилия, инициалы). При обновлении любой из ячеек лист автоматически переименовывается, листы сортируются и обновляется оглавление листов.

Код 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
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$G$1" Or Target.Address = "$I$1" Or Target.Address = "$K$1" Then
       If Range("N1").Value <> "" Then
             If Len(Range("N1").Value) < 30 Then
               Target.Parent.Name = Range("N1").Value
             End If
       End If
    End If
    
    Dim i As Integer, j As Integer
    For i = 1 To Sheets.Count - 1
        For j = i + 1 To Sheets.Count
            If UCase(Sheets(i).Name) > UCase(Sheets(j).Name) Then
                Sheets(j).Move before:=Sheets(i)
            End If
       Next j
    Next i
End Sub
 
Private Sub ComboBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Select Case KeyCode
    Case 13
        With Sheets("!!!Оглавление").Range("Имена")
            If ComboBox2.ListIndex = -1 Then .Offset(.Rows.Count).Resize(1) = ComboBox2.Text
        End With
End Select
End Sub
Добавил поле со списком ComboBox, связанное с K1 с возможностью подстановки и добавления новых имен. Но при изменении ComboBox2 листы не переименовывается, не сортируются и не обновляется оглавление. Подскажите пожалуйста чего не хватает для обновления.
Ответ: Использовал такой вариант. Все работает как надо
Код 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
Private Sub ComboBox2_Change()
    bla ("$I$1")
End Sub
 
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$G$1" Or Target.Address = "$I$1" Or Target.Address = "$K$1" Then
       bla (Target.Address)
    End If
End Sub
 
Private Sub ComboBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Select Case KeyCode
    Case 13
        With Sheets("!!!Оглавление").Range("Имена")
            If ComboBox2.ListIndex = -1 Then .Offset(.Rows.Count).Resize(1) = ComboBox2.Text
        End With
End Select
End Sub
 
Sub bla(addr As String)
       If Range("N1").Value <> "" Then
             If Len(Range("N1").Value) < 30 Then
               If Range(addr).Parent.Name = Range("N1").Value Then Exit Sub
               [COLOR="Red"]Range(addr).Parent.Name = Range("N1").Value[/COLOR]
             End If
       End If
       
        Dim i As Integer, j As Integer
        For i = 1 To Sheets.Count - 1
            For j = i + 1 To Sheets.Count
                If UCase(Sheets(i).Name) > UCase(Sheets(j).Name) Then
                    Sheets(j).Move before:=Sheets(i)
                End If
           Next j
        Next i
End Sub
Но выдает ошибку на строчку
Код Code
1
Range(addr).Parent.Name = Range("N1").Value
при копировании листа:
Run-time error '1004'.
Нельзя присвоить листу имя, совподающее с именем другого листа, библиотеки объектов или книги, на которую ссылается VisualBasic.
Вопрос: КАК восстановить? Глюкнула личная книга макросов

После редактирования макроса эксель завис - и теперь личная книга макросов не открывается
Потеряно работы за 2 недели .....
Кто то подскажет как восстановить можно?
Зайти в книгу не получается - по крайней мере у меня
В приложении архив - там сама книга макросов PERSONAL.XLSB

ПОМОГИИИИИИИТЕ..... у меня истерика
Ответ: Если книга макросов не открывается или глючит - ее можно восстановить таким образом:
Старую книгу макросов открываете как ЗИП архив.
В нем есть папка xl. В этой папке файл vbaProject.bin содержит все ваши макросы.
Далее
Делаете новую книгу макросов, и открываете также как архив - и копируете туда файл vbaProject.bin из старой книги.
Долее сохранить архив и книга восстановлена!
Вопрос: Личная книга макросов

Здравствуйте!
Необходимо довольно большой макрос разместить в личной книге макросов. Проблема в том, что макрос создан и отлажен, как обычный макрос. Необходимо разместить его в личной книге и сделать доступным в любое время и для всех открытых екселевских файлов на данной конкретной машине. Посоветуйте, пожалуйста, как это реализовать.

Спасибо
Ответ: я пробовал записывать любое действие и по Alt+F8 видел, что макрос появился в списке для выполнения, но ни просмотреть, ни отредактировать его нельзя. Появляется сообщение, дескать, для просмотра макроса нужно закрыть все открытые документы и в меню "Файл" выбрать пункт "Показать". Проблема в том, что в меню "Файл" нет пункта "Показать"

Добавлено через 4 минуты
ВСЁ! Вопрос снимается! Разобрался... Извините, протормозил, однако
Вопрос: Перенос макросов на другие компьютеры

Всем привет! Такая проблема. Надо сделать так, чтобы макросы можно было перенести на любой компьютер и чтобы при открытии любого файла Excel эти макросы были доступны. Например в Word можно создать шаблон с макросами и закинуть его в папку STARTUP и макросы доступны в любом файле. Если кто знает ответьте пожалуйста. Всем заранее спасибо.
Ответ: Спасибо за ответ, все сделал как написано, но все равно макросов не видно. Я сохранил файл как Двоичный файл excel .xlsb, и закинул его в папку XLStart. В этом случае макросы загружаются но при запуске программы MS Excel автоматически открывается этот двоичный файл excel. Может другие варианты есть, подскажите
Вопрос: Макрос не удаляется и не сохраняется

Здравствуйте, уважаемые форумчане! Имеется макрос, который расположен в активном шаблоне и в шаблонах общего назначения. Пытаюсь удалить макрос , как всегда, через кнопку "Удалить". Но при повторном открытии файла макрос появляется вновь и вновь. Пробую записать макрос. Записывается. Но при повторном открытии файла вижу, что макрос не сохранился. Помогите,пожалуйста, разобраться.
Ответ: Dinoxromniy, Ваши вопросы направили меня в правильное русло. Удалив ненужные макросы и записав новые, я сохранила файл в новый шаблон под новым именем. При открытии любого word файла проблем больше не возникает. Спасибо!