Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 След.
(word) Макрос с созданием аббревиатур, Run-time Error 4608 Значение лежит вне допустимого диапазона
 
Up
(word) Макрос с созданием аббревиатур, Run-time Error 4608 Значение лежит вне допустимого диапазона
 
Добрый день!

Пытался адаптировать известный макрос по извлечению аббревиатур из документа word.
При запуске в строке 106:
Цитата
If oRange.Information(wdInContentControl) = True Then
выпрыгивает ошибка "Run-time Error 4608 Значение лежит вне допустимого диапазона", а вот что делать с этим диапазоном я не могу разобраться, интернет мне тоже не помог, надежда как всегда на вас.
Как мне подсказать макросу что я от него хочу и чего ему от меня нужно?  :)
Код
Sub ИзвлечьАббревиатуры()

    Dim oDoc_Source As Document
    Dim oDoc_Target As Document
    Dim strListSep As String
    Dim strAcronym As String
    Dim oTable As Table
    Dim oRange As Range
    Dim n As Long
    Dim strAllFound As String
    Dim Title As String
    Dim Msg As String
    Dim oCC As ContentControl

    Title = "Извлечение аббревиатур из документа"
    
    'Show msg - stop if user does not click Yes
    Msg = "Этот макрос находит все слова, состоящие из 2 или более " & _
        "заглавных букв и извлекает эти слова в таблицу " & _
        "в новом документе, где Вы можете добавить определения." & vbCr & vbCr & _
        "Вы хотите продолжить?"

    If MsgBox(Msg, vbYesNo + vbQuestion, Title) <> vbYes Then
        Exit Sub
    End If
    
    Application.ScreenUpdating = False
    
    'Find the list separator from international settings
    'May be a comma or semicolon depending on the country
    strListSep = Application.International(wdListSeparator)
    
    'Start a string to be used for storing names of acronyms found
    strAllFound = "#"
    
    Set oDoc_Source = ActiveDocument
    
    'Create new document for acronyms
    Set oDoc_Target = Documents.Add
    
    With oDoc_Target
        'Make sure document is empty
        .Range = ""
    
        'Insert info in header - change date format as you wish
        .PageSetup.TopMargin = CentimetersToPoints(3)
        .Sections(1).Headers(wdHeaderFooterPrimary).Range.Text = _
            "Список сокращений составлен из файла: " & oDoc_Source.FullName & vbCr & _
            "Составил: " & Application.UserName & vbCr & _
            "Дата составления: " & Format(Date, "MMMM d, yyyy")
                
        'Adjust the Normal style and Header style
        With .Styles(wdStyleNormal)
            .Font.Name = "Arial"
            .Font.Size = 12
            .ParagraphFormat.LeftIndent = 0
            .ParagraphFormat.SpaceAfter = 6
        End With
    
        With .Styles(wdStyleHeader)
            .Font.Size = 8
            .ParagraphFormat.SpaceAfter = 0
        End With
        
        'Insert a table with room for acronym and definition
        Set oTable = .Tables.Add(Range:=.Range, numrows:=2, NumColumns:=3)
        With oTable
            'Format the table a bit
            'Insert headings
            .Range.Style = wdStyleNormal
            .AllowAutoFit = False
            
            .Cell(1, 1).Range.Text = "Аббревиатура"
            .Cell(1, 2).Range.Text = "Обозначение"
            .Cell(1, 3).Range.Text = "Страница"
            'Set row as heading row
            .Rows(1).HeadingFormat = True
            .Rows(1).Range.Font.Bold = True
            .PreferredWidthType = wdPreferredWidthPercent
            .Columns(1).PreferredWidth = 20
            .Columns(2).PreferredWidth = 65
            .Columns(3).PreferredWidth = 15
        End With
    End With
    
    With oDoc_Source
        Set oRange = .Range
        
        n = 1 'used to count below
        
        With oRange.Find
            'Use wildcard search to find strings consisting of 3 or more uppercase letters
            'Set the search conditions
            'NOTE: If you want to find acronyms with e.g. 2 or more letters,
            'change 3 to 2 in the line below
            .Text = "<[А-ЯЁ;A-Z]{2" & strListSep & "}>"
            .Forward = True
            .Wrap = wdFindStop
            .Format = False
            .MatchCase = True
            .MatchWildcards = True
            
            'Perform the search
            Do While .Execute
                'Skip content controls with placeholder text
                If oRange.Information(wdInContentControl) = True Then
                    Set oCC = oRange.ParentContentControl
                    If oCC.ShowingPlaceholderText = True Then
                        oRange.End = oCC.Range.End + 1
                        oRange.Collapse wdCollapseEnd
                        GoTo SkipCC
                    End If
                End If
                
                'Continue while found
                strAcronym = oRange.Text
                'Insert in target doc
                
                'If strAcronym is already in strAllFound, do not add again
                If InStr(1, strAllFound, "#" & strAcronym & "#") = 0 Then
                    'Add new row in table from second acronym
                    If n > 1 Then oTable.Rows.Add
                    'Was not found before
                    strAllFound = strAllFound & strAcronym & "#"
                    
                    'Insert in column 1 in oTable
                    'Compensate for heading row
                    With oTable
                        .Cell(n + 1, 1).Range.Text = strAcronym
                        'Insert page number in column 3
                        .Cell(n + 1, 3).Range.Text = oRange.Information(wdActiveEndPageNumber)
                    End With
                    
                    n = n + 1
                End If
SkipCC:
            Loop
        End With
    End With
    
    'Sort the acronyms alphabetically - skip if only 1 found
    If n > 2 Then
        With Selection
            .Sort ExcludeHeader:=True, FieldNumber:="Column 1", SortFieldType _
                :=wdSortFieldAlphanumeric, SortOrder:=wdSortOrderAscending
            
            'Go to start of document
            .HomeKey (wdStory)
        End With
    End If
        
    Application.ScreenUpdating = True
    
    'If no acronyms found, show msg and close new document without saving
    'Else keep open
    If n = 1 Then
        Msg = "No acronyms found."
        oDoc_Target.Close savechanges:=wdDoNotSaveChanges
    Else
        Msg = "Finished extracting " & n - 1 & " acronymn(s) to a new document."
    End If
    
    MsgBox Msg, vbOKOnly, Title
    
    'Clean up
    Set oRange = Nothing
    Set oDoc_Source = Nothing
    Set oDoc_Target = Nothing
    Set oTable = Nothing
    Set oCC = Nothing
    
End Sub


С уважением, Dost1369
Изменено: Dost1369 - 11.11.2022 14:37:35
Очистка диапазона при наличии в этом диапазоне пустой ячейки (VBA)
 
Добрый день!

Подскажите, пожалуйста, как можно отслеживать наличие пустой ячейки в диапазоне и очистку этого диапазона при наличии в нем пустой ячейки.

Пример прилагаю.

Пояснения к примеру:
В диапазоне F2:F4 оказалась пустая ячейка (F3), VBA отслеживает наличие этой пустоты и удаляет данные из всего диапазона F2:F4.
Такое необходимо провернуть для каждого столбца (B2:B4, С2:С4, D2:D4 и т.д.).

Пробовал пойти таким путем, но потерпел фиаско. :sceptic:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count = "" Then Exit Sub
    If Not Intersect(Target, Range("B3")) Is Nothing Then
    Range("B2:B4").Select
    Selection.ClearContents
    End If
End Sub

С  уважением, Dost1369.
Создание файла txt с наименованием из ячейки и копирование в него данных по условию
 
Цитата
написал:
кстати я леплю пробел между Д и Е а нужен он вам или нет я не знаю
Очень важное уточнение, поправил у себя. Спасибо.
Создание файла txt с наименованием из ячейки и копирование в него данных по условию
 
Ігор Гончаренко, Все-равно из столбца D импортирует данные там, где в столбце E пустота.
Ну либо я что-то делаю не так.  :sceptic:  
Создание файла txt с наименованием из ячейки и копирование в него данных по условию
 
МатросНаЗебре, Что-то по Вашему варианту у меня не получается. Вставлял и в модули и в сами листы.  
Создание файла txt с наименованием из ячейки и копирование в него данных по условию
 
Цитата
написал:
Код
    [URL=#]?[/URL]       1  2  3  4  5  6  7  8  9      Sub   CreateTxtFile()        Dim   fs, txt, rg        Set   fs = CreateObject(  "Scripting.FileSystemObject"  )        Set   txt = fs.CreateTextFile("d:\Test\" & [c3],   True  ):   Set   rg = [d6]        Do   While   Not   IsEmpty(rg)          txt.WriteLine rg &   " "   & rg.Offset(0, 1):     Set   rg = rg.Offset(1)        Loop        txt.Close    End   Sub   
 
Добавил еще & ".txt" для создания расширения, все работает. Спасибо.
Но в оригинальном файле есть один нюанс, в ячейки, которые пустые для человека, эксель все-равно видит формулу, которая как раз таки возвращает пустоту.
Это как-то можно обойти или придется ручками удалять из txt?
Создание файла txt с наименованием из ячейки и копирование в него данных по условию
 
Добрый день!

Подскажите, пожалуйста, каким образом я могу создать файл txt в определенной папке (D:\Test) c наименованием файла, которое соответствует значению в ячейке С3 и скопировать туда выбранные данные из диапазона D6:E18 при условии, что начало диапазона всегда начинается с ячейки D6, а конец диапазона будет динамическим (последняя не пустая ячейка в диапазоне D6:E18). В примере диапазон для копирования будет D6:E12.

С уважением, Dost1369.
Сокрытие листов по условию
 
, суть понял, спасибо!
Сокрытие листов по условию
 
Макрос работает отлично, но делает наоборот. :)
Мне нужно чтобы зеленые остались листы, а обычные были скрыты.
Сокрытие листов по условию
 
Добрый день!

Подскажите, пожалуйста, есть ли какой-то способ скрыть все листы в книге, которые не выделены цветом разом, а не тыкая вручную?
(без заливки скрываем, с заливкой оставляем)

В интернете поискал, но найти информацию не смог.



С уважением, Dost1369.
Изменено: Dost1369 - 30.03.2022 16:05:53
Обнуление определенных ячеек в таблице при изменение каких либо данных в других таблицах
 
Идея Пытливого направлена на то,
Цитата
kosyak777 написал:
чтобы не делать много различных операция в ручную
У меня в одном документе такое работает, очень удобно.
Замена встроенной "группировки строк" - Графической кнопкой, при нажатии на Кнопку - группированные строки должны показаться/скрыться
 
Цитата
vitareiki написал:
похоже вы просто добавили еще одну кнопку в файле-примере и все ... и в чем фишка ?.. - кнопки-то не работают
Пардон, вот нужный файл.
Замена встроенной "группировки строк" - Графической кнопкой, при нажатии на Кнопку - группированные строки должны показаться/скрыться
 
А можно так.
Открыть все файлы в папке, скопировать содержимое и вставить в активную книгу
 
Дмитрий(The_Prist) Щербаков, спасибо.  
Открыть все файлы в папке, скопировать содержимое и вставить в активную книгу
 
Цитата
Nordheim написал:
"Select" и "Activate",хотя не раз на форуме упоминалось о вреде использования данных методов?
А можно ссылочку на обсуждения? Буду повышать свой уровень знаний. :)
Удаление содержимого ячеек по условию в выделенном диапазоне (макрос)
 
Nordheim, большое спасибо.
Первый вариант для меня оказался проще, добавил только в конце
Код
Selection.ClearContents
По второму варианту не понял: получается, что макрос очищает ячейки по условию, а на их место ставит следующее значение, при этом происходит несоответствие даты и замера.
Удаление содержимого ячеек по условию в выделенном диапазоне (макрос)
 
Добрый день! Прошу помочь с решением следующей задачки.

Исходные данные.
1) Есть необходимость в построении диаграммы, которая будет изменяться в соответствии со значением в ячейке B2. Для этого использую результирующий столбец I2:I12.
2) Временами получается так, что в определенную дату значений может не быть, поэтому ячейка остается либо пустой, либо со знаком "-". В этом случае линия на графике ныряет до значения 0 (синия линия), что недопустимо в моем случае.
3) Если прописывать #Н/Д, то график выстраивает усредненную линию по близлежащим точкам, что также не подходит.

Что хочется получить в итоге.
1) Возможность построения графика таким образом, чтобы линия прерывалась (пример: красная линия) при помощи макроса.

Чего удалось добиться своими силами.
Идея макроса заключается в следующем:
1) При нажатии на "Большую кнопку" в диапазоне  I2:I12 обновляется формула для правильного построения диаграммы.
2) Затем происходит поиск и выделение значений, которые НЕ соответствуют условиям, для правильного построения диаграммы (-, 0, #Н/Д).
3) Макрос удаляет значения в выделенных по условию ячейках (пример в диапазоне K2:K12).
Если с обновлением формулы удалось справиться самостоятельно, то с выделением ячеек возникли трудности.

С уважением, Dost1369
Скрыть объекты диаграммы через CheckBox.
 
Цитата
Sanja написал:
Какие надписи Вам нужно скрывать? Если скрываете ТекстБоксы, то причем тут Диаграмма? И где Ваши макросы?
В прилагаемом файле на диаграмме присутствует Текстбокс, вот его и нужно скрыть.
А вот с моими макросами беда, не могу понять куда они пропали, перед прикреплением файла проверял, вроде все на месте было.

Апострофф, спасибо, за помощь. Все работает так, как и хотелось.
Скрыть объекты диаграммы через CheckBox.
 
Добрый день!
Подскажите, пожалуйста, каким образом можно скрывать надпись на диаграмме, используя CheckBox?
У меня получилось только кнопкам присвоить макросы, которые скрывают свойства ТекстБокса.
Файл примера прилагаю.
С уважением, Dost1369.
Персонификация файла, Создание персонифицированного файла при сохранении возможности редактирования
 
Цитата
The_Prist написал: дописывать в заголовок окна файла
Спасибо за информацию, очень здорово получается.

Андрей VG, и Вам спасибо за наводку на Ribbon, буду изучать.  :)  
VBA для рядов данных диагарммы, Подмена значений value и xvalue для рядов диаграммы
 
Цитата
leseal написал:
Ссори за первый вопрос - заработался , тут все просто .SeriesCollection(i).XValue и Value
А можно поподробнее расписать этот момент?  :)  
Построение динамической диаграммы с выбором столбца
 
Цитата
Rustam Aisarov написал:
можно сделать это с помощью функций Vlookup и match
В принципе можно, но я надеялся, что можно провернуть такое без создания доп. столбцов. :)
Цитата
Rustam Aisarov написал:
или вы хотите сделать это в макросе?
Не принципиально, чтобы это был макрос. Хотя изначально мне очень хотелось сделать это в форме VBA, но сообразить не смог (начальный вариант).
Построение динамической диаграммы с выбором столбца
 
Добрый день!
Хочу построить динамическую диаграмму, чтобы при выборе данных Y (ячейка С4), диаграмма перестраивалась по столбцам G:I.
Поискал по форуму, общая идея понятна, но реализовать не получается.
Подскажите, пожалуйста, где я ошибаюсь?

С уважением, Dost1369.
Изменено: Dost1369 - 30.10.2017 07:42:46
Вставка графика в форму VBA по имени.
 
Не теряю надежды.  :)  
Вставка графика в форму VBA по имени.
 
Up
Вставка графика в форму VBA по имени.
 
Пока получилось сделать это.
Как сделать перебор графиков в зависимости от значение в комбобоксе так и не понял.
Вставка графика в форму VBA по имени.
 
Этот файлик я уже находил, и если я правильно понял, то он работает в том случае, если диаграмма находится на листе одна.
Но что делать если у меня их на одном листе по 40 штук? Неужели необходимо их выносить на 40 разных листов?
Вставка графика в форму VBA по имени.
 
Добрый день, уважаемые форумчане!
Имеется изменяющийся во времени диапазон значений, по которым строятся большое количество диаграмм на одном листе.
Подскажите, пожалуйста, каким образом я могу внедрить диаграмму в форму VBA по выбору ее имени в комбобоксе?
Пример прилагаю.
С уважением, Dost1369.
Изменено: Dost1369 - 05.10.2017 10:50:36
Зависимые списки в Combobox (VBA)
 
Logistic, прошу прощения за поздний ответ, был в отъезде.
Применил Ваш код к своему файлу, все работает как задумано.
Большое спасибо! :)
С уважением, Dost1369
Страницы: 1 2 3 След.
Наверх