Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Excel VBA (часть 2)

Модерирует : ShIvADeSt

ShIvADeSt (11-01-2010 10:17): http://forum.ru-board.com/topic.cgi?forum=33&topic=10903  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200

   

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

 
 
Обсуждаем вопросы только по Excel VBA
(программирование макросов, скриптов, пользовательских функций и т.п.).
Приветствуются ссылки на ресурсы и справочную литературу по теме.
 
Вопросы по работе с MS Excel, не относящиеся к программированию, задаем в теме Excel FAQ

 
Обратите внимание, этот топик для помощи в изучении и использовании VBA. Посему запросы типа "Напишите мне такой-то макрос, я VBA не знаю и знать не хочу" не приветствуются.
Древняя мудрость: "Накорми голодного рыбой и он погибнет, научи его ловить рыбу и ты спасешь его."(R)
 
Предыдущие ветки топика: Часть 1
 
Информация общего характера:
  • Список соответствия имен функций в английской и русской версиях Excel
  • Описание Microsoft Excel File Format (eng.)
     
    Рекомендации:
    Если у Вас есть проблема, не решаемая стандартными средствами Excel (об этом можно уточнить здесь) или требующая автоматизации, попробуйте для начала записать макрос самим Excel через меню Сервис (Tools) - Макрос (Macro) - Начать запись (Record New Macro). Подробнее здесь. В большинстве случаев получившийся код (Сервис-Макрос-Макросы-Изменить) Вас не удовлетворит, но подскажет, какие объекты-методы-свойства использовать.  
    Другой Ваш помощник - Просмотр объектов (Object Browser). Ну и встроення помощь (F1), естественно.
     
    Если Вы в тупике, покажите Ваш код (или часть кода) здесь.  Если вылазит ошибка, цитируйте ее полностью. Если код слишком большой, используйте тeг [more].
    Используйте отладчик - Breakpoints (F9), Watches (Shift-F9), Steps (F8 и др.) Сильно облегчает поиск ошибок.

     
    Рекомендуется к прочтению:
  • Первые шаги с Excel VBA
  • Excel VBA: Приёмы программирования
  • WinApi. Лекция из курса "Основы офисного программирования и язык VBA" (для продвинутых)
  • Daily Dose of Excel (eng.) - тематический блог: советы по работе с Excel и прочие материалы
  • Excel Macros & Excel VBA Code Tips, Tricks (eng.) - советы, трюки и уловки
  • Mr. Excel (forum) (eng.) - весьма оживленный форум по Excel&VBA.
  • Приемы, хитрости, трюки и нюансы работы в Microsoft Excel - сайт "Планета Excel", целиком посвященный Excel и всему, что с ним связано.
  • Microsoft Excel: Таблицы и VBA. Справочник. Вопросы и Ответы. Советы. Примеры.  
     
    Родственные топики:
  • Вопросы по работе с MS Excel - Excel FAQ - часть 1, часть 2, часть 3
  • Технические проблемы с MS Office 2003 или Office XP.
  • Word VBA все вопросы по Word VBA туда
  • Access все вопросы по программированию в Access туда
  • Книжульки по VBA - книги по программированию с использованием VBA
     
    Конкретные вопросы:
    Форма-заставка
    Как запустить макрос при изменении положения курсора или значения ячейки
  • Пример 1
  • Пример 2
  • Пример 3 (проверка области)
  • Пример 4
  • Пример 5
    Зацикливание в функции Change или SelectionChange
     
    Ранжирование без пробелов (макрос включает функции сортировки массива и удаления дубликатов, работает и в Excel 2007)
  • под Office 97
     
    Добавление в главное меню своего пункта, ассоциированного с макросом
    Создание ярлыка на рабочем столе
    Снятие защиты листа при забытом пароле
    Смена раскладки клавиатуры
    Скролл формы колесом прокрутки мыши
    Оптимизация кода по быстродействию использованием массивов
    Найти "чужое" окно и нажать в нем кнопку (вписать текст в текстовое поле)
    Работа с UNICODE-символами в VBA: запись, чтение из ячейки, перевод в ASС и обратно
    Как программно подключить дополнительные библиотеки (например, "Microsoft Scripting Runtime" или "Microsoft ActiveX Data Objects 2.8 Library) через References

  • Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 01:58 23-04-2007 | Исправлено: JekG, 22:32 10-01-2010
    denisdenmm



    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SAS888
    ещё раз огромное спасибо, век живи век учись,  
    если бы не подсказал где копать, сам бы не додумался не в жизнь
    вот кодик который я состряпал с помощью твоей подсказки и подсказкиdneprcomp
     
     
    Sub Кнопка1_Щелкнуть()
     ' Запускаем калькулятор
     ' Активизируем калькулятор
     Shell "Calc.exe", vbNormalFocus
     
    End Sub
    Sub Кнопка2_Щелкнуть()
     ScreenUpdating = 0
    Application.ActivateMicrosoftApp 0 ' Активизируем калькулятор
    SendKeys "^{c}", True
    Application.Windows("Книга1").Activate ' Активизируем рабочую книгу
    Range("A1").Select
    ActiveSheet.Paste
    Range("A1").Value = CDbl(Range("A1").Value)
    Application.ActivateMicrosoftApp 0 ' Активизируем калькулятор
     SendKeys "%{F4}", True ' Посылаем Alt+F4 для закрытия калькулятора
    ScreenUpdating = 1
    End Sub
     
     
    Добавлено:
    но своим калькулятором я всё же горжусь
    всё таки я его забабахал, если бы раньше умел пользоваться "SendKeys", то и не стал бы мучится, а так теперь просто эту форму везде вставляю, только клавишу "ок" подстраиваю и всё
     
    Добавлено:
    dneprcomp
    с переменными тоже всё отлично получилось
    теперь не нужно дополнительнительных Label вводить
    и всё же один вопрос повторю, он остался открытым

    Цитата:
    и ещё вопрос
    вот например макрос
    Sub Макрос1()
        ActiveCell.FormulaR1C1 = "='D:\[материалы 2.xls]р'!R10C6"
       ActiveCell.Value = ActiveCell.Value
    End Sub
     как правильно написать для  ActiveCell.Value =......
    чтобы не писать потом ActiveCell.Value = ActiveCell.Value  

     

    Всего записей: 18 | Зарегистр. 20-10-2007 | Отправлено: 18:24 07-11-2007
    davidyantz

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    davidyantz

    Цитата:
    Как на защищаемом листе позволить пользователю пользоваться Структурой (т.е. объектом Outline) - скрывать и отображать строки с помощью пиктограмм "+" и "-" ?  

     
     
    Vitus_Bering

    Цитата:
    По-моему, никак, как и сортировка невозможна на защищенном листе.  

     
     
    Можно! Нужно воспользоваться:  
     
    EnableOutlining = True
     
    Правда, вместе с книгой эта информация не сохраняется.
     

    Всего записей: 23 | Зарегистр. 06-11-2007 | Отправлено: 08:13 08-11-2007
    SAS888

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    qEraser

    Цитата:
    А если необходимо удалить  строки кроме 1й и тех на которых отмечены ячейки (например через ctrl)?

    Можно так:
    Sub Udalenie()
        Dim MyCel As Integer
        Dim nR As Integer
        MyCel = Selection.Rows.Count 'Количество выделеных ячеек (строк)
        nR = ActiveSheet.UsedRange.Rows.Count 'Всего строк
        Selection.EntireRow.Copy
        Rows(nR).Select   'Переместим выделенные строки в конец
        ActiveSheet.Paste
        For i = nR To 2 Step -1
          Cells(i, 1).EntireRow.Delete 'Удаляем лишние
        Next i
    End Sub
    Хотя может действительно лучше скрывать строки, чем удалять?

    Всего записей: 398 | Зарегистр. 31-10-2007 | Отправлено: 08:18 08-11-2007
    davidyantz

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Вопрос:
     
     Я создаю пункт меню в pop-up меню для ячейки:
     
    Set cbut = Application.CommandBars("Cell").Controls.Add(before:=1, Temporary:=True)
     
     Как мне назначить этому пункту меню картинку из ImageList ?
     
    Так, как я делаю сейчас, не работает:
     
     cbut.Picture.Handle = ImageList1.ListImages.Item(1).Picture.Handle
     

    Всего записей: 23 | Зарегистр. 06-11-2007 | Отправлено: 10:42 08-11-2007
    hackman



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    подскажите как сделать, чтоб в легенде не появлялся ряд4, і как упростить такой макрос.

    Код:
     
    Sub build_ser_rik()
    Application.ScreenUpdating = False
    t = UserForm1.ComboBox1.Value
    name = UserForm1.ComboBox1.Value
    t = CStr(t)
    If t = "РАЗОМ" Then colz = 2: scalval = 230
    If t = "ВХ" Then colz = 4: scalval = 110
    If t = "ЛХЗ" Then colz = 5: scalval = 44
    If t = "Заморозка" Then colz = 6: scalval = 0.3
    If t = "ГХ" Then colz = 7: scalval = 17
    If t = "БХ" Then colz = 8: scalval = 10
    If t = "МП" Then colz = 9: scalval = 2
    If t = "ЧГ" Then colz = 10: scalval = 6
    If t = "КХ" Then colz = 11: scalval = 3
    If t = "СХ" Then colz = 12: scalval = 6
    If t = "РХ" Then colz = 13: scalval = 10
    If t = "ЖХ" Then colz = 14: scalval = 0
    If t = "КМХ" Then colz = 15: scalval = 1
    If t = "ШП" Then colz = 16: scalval = 5
    If t = "КЗХ" Then colz = 17: scalval = 6
     
    xvls = Range(Cells(43, 1), Cells(54, 1)).Address(RowAbsolute:=False, ColumnAbsolute:=False)
    fakt = Range(Cells(43, colz), Cells(52, colz)).Address(RowAbsolute:=False, ColumnAbsolute:=False)
    plan = Range(Cells(58, colz), Cells(69, colz)).Address(RowAbsolute:=False, ColumnAbsolute:=False)
    fakt6 = Range(Cells(73, colz), Cells(84, colz)).Address(RowAbsolute:=False, ColumnAbsolute:=False)
       
        Charts.Add
        ActiveChart.ChartType = xlLineMarkers
        ActiveChart.SeriesCollection.NewSeries
        ActiveChart.SeriesCollection.NewSeries
        ActiveChart.SeriesCollection.NewSeries
       
           
       'дані для графіка планової реалізації
        ActiveChart.SeriesCollection(1).XValues = Worksheets("Динаміка").Range("" & (xvls) & "")
        ActiveChart.SeriesCollection(1).Values = Worksheets("Динаміка").Range("" & (plan) & "")
        ActiveChart.SeriesCollection(1).name = "=""Планова реалізація"""
         
        'дані для графіка фактичної реалізації 2007
        ActiveChart.SeriesCollection(2).XValues = Worksheets("Динаміка").Range("" & (xvls) & "")
        ActiveChart.SeriesCollection(2).Values = Worksheets("Динаміка").Range("" & (fakt) & "")
        ActiveChart.SeriesCollection(2).name = "=""Факт. реалізація 2007"""
         
        'дані для графіка фактичної реалізації 2007
         
        ActiveChart.SeriesCollection(3).XValues = Worksheets("Динаміка").Range("" & (xvls) & "")
        ActiveChart.SeriesCollection(3).Values = Worksheets("Динаміка").Range("" & (fakt6) & "")
        ActiveChart.SeriesCollection(3).name = "=""Факт. реалізація 2006"""
         
    '    ActiveChart.Location Where:=xlLocationAsNewSheet, name:= _
            "Середньоденні_план_факт_" & (name) & ""
        With ActiveChart
            .HasTitle = True
            .ChartTitle.Characters.Text = _
            "Середньоденна реалізація в тоннах " & (name) & " 2007 р."
            .Axes(xlCategory, xlPrimary).HasTitle = False
            .Axes(xlValue, xlPrimary).HasTitle = True
            .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "тонн"
        End With
        ActiveChart.HasLegend = True
        ActiveChart.Legend.Select
        Selection.Position = xlRight
        ActiveChart.Axes(xlValue).Select
        Selection.TickLabels.AutoScaleFont = True
        With Selection.TickLabels.Font
            .FontStyle = "обычный"
            .Size = 8
       
        End With
    ' If ActiveChart.Legend.LegendEntries(4) = True Then
     '    ActiveChart.Legend.LegendEntries(4).Select
      '   Selection.Delete
       '  End If
        ActiveChart.Axes(xlCategory).Select
        Selection.TickLabels.AutoScaleFont = True
         
        With Selection.TickLabels.Font
             
            .FontStyle = "обычный"
             Size = 8
                End With
        With Selection.TickLabels
            .Alignment = xlCenter
            .Offset = 100
            .ReadingOrder = xlContext
            .Orientation = xlDownward
        End With
         
        ActiveChart.SeriesCollection(2).Select
        With Selection.Border
            .ColorIndex = 11
            .Weight = xlThick
            .LineStyle = xlContinuous
        End With
        With Selection
            .MarkerBackgroundColorIndex = 11
            .MarkerForegroundColorIndex = 11
            .MarkerStyle = xlAutomatic
            .Smooth = False
            .MarkerSize = 7
            .Shadow = False
        End With
     
        ActiveChart.SeriesCollection(1).Select
        With Selection.Border
            .ColorIndex = 27
            .Weight = xlThick
            .LineStyle = xlDash
     
        End With
        With Selection
         
             
            .MarkerStyle = xlNone
            .Smooth = False
            .Shadow = False
        End With
        ActiveChart.Axes(xlValue).MajorGridlines.Select
         
        ActiveChart.PlotArea.Select
        With Selection.Border
            .ColorIndex = 16
            .Weight = xlThin
            .LineStyle = xlContinuous
        End With
         Selection.Fill.PresetGradient Style:=msoGradientHorizontal, Variant:=1, _
            PresetGradientType:=msoGradientDaybreak
        Selection.Fill.Visible = True
    'підписи факт
     
    '
        ActiveChart.PlotArea.Select
        ActiveChart.SeriesCollection(2).Select
        ActiveChart.SeriesCollection(2).ApplyDataLabels AutoText:=True
         
        ActiveChart.SeriesCollection(2).DataLabels.Select
        Selection.AutoScaleFont = True
        With Selection.Font
            .Size = 8
               End With
        ActiveChart.ChartArea.Select
     
     
    '3 графік обробка
      ActiveChart.SeriesCollection(3).Select
        With Selection.Border
            .ColorIndex = 26
            .Weight = xlThick
            '.LineStyle = xlGray50
        End With
        With Selection
            .MarkerBackgroundColorIndex = 26
            .MarkerForegroundColorIndex = 26
            .MarkerStyle = xlSquare
            .Smooth = False
            .MarkerSize = 7
            .Shadow = True
        End With
    'поправити 2 графік факт 2007
        ActiveChart.SeriesCollection(2).Select
    '    ActiveChart.SeriesCollection(2).Points(5).Select
        With Selection.Border
            .ColorIndex = 11
            .Weight = xlThick
            .LineStyle = xlContinuous
        End With
        With Selection
            .MarkerBackgroundColorIndex = 49
            .MarkerForegroundColorIndex = 49
            .MarkerStyle = xlSquare
            .MarkerSize = 7
            .Shadow = False
        End With
         
            ActiveChart.SeriesCollection(3).ApplyDataLabels AutoText:=True
            ActiveChart.SeriesCollection(3).DataLabels.Select
        Selection.AutoScaleFont = True
        With Selection.Font
                    .Size = 8
                End With
            'легенда
    ActiveChart.Legend.Select
        Selection.Left = 568
        Selection.Width = 149
            With Selection.Font
              .Size = 8
        End With
         
            ActiveChart.PlotArea.Select
    '    ActiveChart.SeriesCollection(4).Delete
     
    'шкала
    ActiveChart.Axes(xlValue).Select
        With ActiveChart.Axes(xlValue)
            .MinimumScale = scalval
           End With
     
    'лінія тренду
    ActiveChart.SeriesCollection(2).Trendlines.Add Type:=xlLinear, name:="Лінія тренду"
    'ActiveChart.Legend.Select
    '    ActiveChart.Legend.LegendEntries(4).Select
     '   Selection.Delete
             
        ActiveSheet.Select
        ActiveSheet.name = "Cередньоденна_" & (name) & ""
        ActiveSheet.Move
    End Sub
       
     

     

    Всего записей: 185 | Зарегистр. 22-09-2003 | Отправлено: 12:25 08-11-2007 | Исправлено: hackman, 12:26 08-11-2007
    CEMEH



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Кстати о англо-русском соответствии функций.
    Можно пользоваться справочником (в шапке), а если его нет под рукой то записю макросов.

    Всего записей: 237 | Зарегистр. 17-09-2006 | Отправлено: 22:22 08-11-2007
    FiraSaro

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Здравствуйте! Есть вопрос:
     
    Имеем форму, в которую надо заполнить и  большую такую таблицу, где храниться то чем заполнять будем.  Конкретно это база данных по материалам . Инвентарный  номер в записях может быть одинаковым, а номер партии разный . Как сделать так чтобы при вводе в ячейку инвентарного номера была возможность выбора партии? И от этого заполнялись все остальные строки?(цена,количество).  У меня пока только так получилось. Но здесь выбирает только первую встречающуюся в списке.
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    make_null_os = True
    Select Case Target.Column
       
         
    Case 5
      Set c = Worksheets(1).Range("dF1:dF5000").Find(Cells(Target.Row, Target.Column).Value, LookIn:=xlValues)
      Cells(Target.Row, Target.Column + 1).Value = Cells(c.Row, c.Column + 1).Value
      Cells(Target.Row, Target.Column + 2).Value = Cells(c.Row, c.Column + 3).Value
       Cells(Target.Row, Target.Column + 5).Value = Cells(c.Row, c.Column + 2).Value
    End Select
     
    End Sub

    Всего записей: 2 | Зарегистр. 09-11-2007 | Отправлено: 08:55 09-11-2007
    SERGE_BLIZNUK

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    FiraSaro
    сходите http://www.planetaexcel.ru/tip.php там есть -  
    Связанные выпадающие списки  
    Представьте себе два выпадающих списка в ячейках, причем от того, что выбрано в первом - зависит содержимое второго.
     
    может подойдёт?

    Всего записей: 2014 | Зарегистр. 12-09-2002 | Отправлено: 13:02 09-11-2007
    gureedo

    Newbie
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    как программно назнаить кнопке обработчик?

    Всего записей: 10 | Зарегистр. 20-09-2006 | Отправлено: 15:26 09-11-2007
    vasiliy74



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    SERGE_BLIZNUK
    Спасибо за UCase

    Всего записей: 289 | Зарегистр. 21-02-2006 | Отправлено: 15:42 09-11-2007
    AndVGri

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    CEMEH

    Цитата:
    Кстати о англо-русском соответствии функций.
    Можно пользоваться справочником (в шапке), а если его нет под рукой то записю макросов.
     

    Или стандартный файл соответствия funcs.xls. Для 2003 в "c:\Program Files\Microsoft Office\OFFICE11\1049\FUNCS.XLS"

    Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 03:30 10-11-2007
    CEMEH



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    ВОПРОС
    Где в ComboBox прописать запрет введения данных, отличных от заполненных в него?
    СПАСИБО

    Всего записей: 237 | Зарегистр. 17-09-2006 | Отправлено: 13:45 10-11-2007
    dneprcomp



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    CEMEH
        ComboBox1.MatchRequired=True
     
        ComboBox1.MatchEntry = fmMatchEntryFirstLetter
        ComboBox1.MatchEntry = fmMatchEntryNone
        ComboBox1.MatchEntry = fmMatchEntryComplete

    Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 20:49 10-11-2007
    AndVGri

    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dneprcomp
    А не проще ли будет сделать только выбор значений из раскрывающегося списка?
    ComboBox1.Style = fmStyleDropDownList

    Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 03:48 11-11-2007
    dneprcomp



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    AndVGri

    Цитата:
    А не проще ли будет сделать только выбор значений из раскрывающегося списка?

    Такое решение не соответствует запросу CEMEH А вот что ему подходит больше, пусть сам решает.
     
    Часто ручной ввод оказывается быстрее и удобнее для юзера. Кроме того, можно в списке показывать одно, а разрешить набирать другое. Как пример, двухколоночный список Описание/Код. Знающему юзеру быстрее набрать код. Не знающему дается выбор из листа по Описанию. Но в текстовое поле все равно попадает Код.

    Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 07:12 11-11-2007 | Исправлено: dneprcomp, 07:20 11-11-2007
    CEMEH



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dneprcomp
    В коде я записал все четыре условия но...
    КомбоБокс используется для выбора фамилий из списка (строк очень много) И если я набираю в поле КомбоБокса "И" то подставляются все возможные варианты начинающиеся на "И", если я ввожу "Ив" то все варианты с "Ив". После выполнения всех четырех пунктов "Ив" я ввести не могу. Либо "И", либо "В", а "Ив" только из раскрывающегося списка. Я не силен в англицком, поэтому многое для меня темный лес.
    Первое, что на ум приходит, это цикл с проверкой КомбоБокс на соответствие6
    Z=false
    for x=1 to 1000
    if combobox1=range("A" & X) then Z=true
    Next x
    If Z=false then msgbox "фамилии нет в списке"
    Но такой вариант громоздкий и долгий
     
    и еще ВОПРОС
    Как в range("A1") кроме ссылки на ячейку добавить еще и ссылку на лист.
     
    СПАСИБО

    Всего записей: 237 | Зарегистр. 17-09-2006 | Отправлено: 02:12 12-11-2007
    dneprcomp



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    CEMEH

    Цитата:
    В коде я записал все четыре условия но...  
    Нельзя использовать все условия сразу. И не обязательно устанавливать параметры контрола в коде. Можно и в свойствах контрола их установить. Если не собираешься менять настройки динамически, то настройка через свойства наиболее оптимальна.
    ComboBox1.MatchRequired=True   обязательна
     
    Одна из трех на выбор, а не все сразу.  
    ComboBox1.MatchEntry = fmMatchEntryFirstLetter    совпадение по первой букве(можно вносить только соответствующие знаки)
    ComboBox1.MatchEntry = fmMatchEntryNone    без совпадения(можно печатать любые знаки)
    ComboBox1.MatchEntry = fmMatchEntryComplete   совпадение по полной строке(долны совпасть все знаки в строке)

    Цитата:
    Как в range("A1") кроме ссылки на ячейку добавить еще и ссылку на лист.

    Лист чего? Если контрол, то =ComboBox1.Text
    А если лист книги, то =Sheet3!B1
    И что значит "кроме"? Не может быть двух ссылок одновременно.

    Цитата:
    Я не силен в англицком, поэтому многое для меня темный лес.  
    Или ищи русский хелп(что является полурешением), или учи язык(что предпочтительнее). Третьего не дано. Без знания английского так и будешь путаться в простейшем.
     
     

    Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 03:39 12-11-2007 | Исправлено: dneprcomp, 03:47 12-11-2007
    SAS888

    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Кто подскажет? Можно ли при помощи VBA Excel перехватить данные по COM-порту? Если можно, то как это сделать?

    Всего записей: 398 | Зарегистр. 31-10-2007 | Отправлено: 11:51 13-11-2007
    CEMEH



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    dneprcomp

    Цитата:
    Лист чего?

    СПАСИБО
    Да, Sheet3!B1, именно то, что нужно. теперь для полученя значения ячейки я пишу A=range("лист1!A1"). А как записать А=range(книгa_на жестком_диске, лист, ячейка)? Особенно, если не указан прямой путь к файлу, а нужен файл, находящийся в каталоге вместе с исходной книгой, в которой записан макрос. Т е если я перенесу папку с файлами в другое место или на другой компьютер (изменю путь к папке) то макрос все равно будет работать корректно.  
     

    Всего записей: 237 | Зарегистр. 17-09-2006 | Отправлено: 23:42 13-11-2007
    dneprcomp



    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    CEMEH

    Цитата:
    нужен файл, находящийся в каталоге вместе с исходной книгой, в которой записан макрос

    Application.Path & книгa_на жестком_диске

    Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 01:52 14-11-2007
       

    Страницы: 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 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Excel VBA (часть 2)
    ShIvADeSt (11-01-2010 10:17): http://forum.ru-board.com/topic.cgi?forum=33&topic=10903


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru