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

Страницы: 1
Ошибка при обращении к объекту ActiveX
 
R Dmitry  
 
Приходиться извращаться, ибо таких dat великое множество, к примеру что бы сделать вот так:  
 
For i = 1 To 50  
Set x = Sheets("Лист1").OLEObjects("dat" & i)  
If x.Object = "" Or x.Object = "Город" Then p = False  
Next i  
 
 
Может я велосипед изобретаю, можно сделать проще?  
 
KukLP Спасибо, заработало :)
Ошибка при обращении к объекту ActiveX
 
Ребята, укажите пожалуйста что не так.  
Суть:  
Есть Элемент АктивХ, Combobox с именем dat1 Прямо на листе Лист1.  
Код:  
 
Dim x As Object  
Set x = Sheets("Лист1").OLEObjects("dat1")  
MsgBox x.Value  
 
Результат: Object doesn't support this property or method (Error 438)  
 
А такой Код работает:  
 
Dim x As Object  
Set x = Sheets("Лист1").OLEObjects("dat1")  
MsgBox x.Name  
 
Что не так?
Создание гипер ссылок в нескольких тысячах ячеек.
 
Не могу добавить файл для примера...  
Скажите, а как одной строкой протянуть на весь диапазон ячеек формулу ГИПЕРССЫЛКА(), будет ли она изменяться динамически?  
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
Создание гипер ссылок в нескольких тысячах ячеек.
 
{quote}{login=EducatedFool}{date=27.07.2011 02:25}{thema=}{post}Sub Ссылки()  
 
application.screenupdating=false ' отключаем обновление экрана  
 
' Создаю переменную и присваиваю ей статическую часть ссылки  
Dim ssilka As String  
ssilka = Sheets("Data").Range("A10").Value  
 
Dim i As Integer  
Dim iLastRow As Integer  
' узнаю номер последней непустой строки, и присваиваю цифру переменной  
iLastRow = Cells(Rows.Count, 4).End(xlUp).Row  
' запускаю цикл и формирую ссылки в столбце "С"  
For i = 11 To iLastRow  
Sheets("Активация").Hyperlinks.Add Anchor:=Cells(i, 3), Address:=ssilka & Cells(i, 4), TextToDisplay:="Ссылка"  
Next i  
 
application.screenupdating=true ' включаем обратно  
End Sub  
 
 
 
PS: Файл надо смотреть. Секунда на ссылку - это очень много.  
Есть формулы на этом или других листах?{/post}{/quote}  
 
да, формулы есть, сам файл достаточно громоздкий.  
Добавил отключение обновления экрана, немного увеличилась скорость.
Создание гипер ссылок в нескольких тысячах ячеек.
 
{quote}{login=}{date=27.07.2011 02:11}{thema=}{post}application.screenupdating=false  
код  
application.screenupdating=true{/post}{/quote}  
 
А в какое место кода нужно добавить эту строчку?  
Спасибо.
Создание гипер ссылок в нескольких тысячах ячеек.
 
Прикрепил файл для примера.
Создание гипер ссылок в нескольких тысячах ячеек.
 
Всем доброго дня!  
 
Я соорудил макрос, который формирует гиперссылки на основании Id ссылки (столбец D).  
Вот сам макрос:  
 
Sub Ссылки()  
' Создаю переменную и присваиваю ей статическую часть ссылки  
Dim ssilka As String  
ssilka = Sheets("Data").Range("A10").Value  
 
Dim i As Integer  
Dim iLastRow As Integer  
' узнаю номер последней непустой строки, и присваиваю цифру переменной  
iLastRow = Cells(Rows.Count, 4).End(xlUp).Row  
' запускаю цикл и формирую ссылки в столбце "С"  
For i = 11 To iLastRow  
Sheets("Активация").Hyperlinks.Add Anchor:=Cells(i, 3), Address:=ssilka & Cells(i, 4), TextToDisplay:="Ссылка"  
Next i  
End Sub  
 
Все бы было хорошо, но есть одна проблема, если строк несколько тысяч и если в других листах есть еще данные, то на формирование одной ссылки уходит почти секунда, весь массив может отрабатываться до 15 минут.  
 
Подскажите, есть ли другой способ провести эту же операцию, но быстрее?  
Возможно ли например загрузить весь массив в переменную типа Variant, обработать каждый элемент массива и потом выгрузить в ячейки?  
Прошу прощения, если вопрос задан не корректно, я в VBA не силен.
Как написать формулу или макрос
 
{quote}{login=nena}{date=19.04.2011 02:26}{thema=}{post}Какие вы умнички мне еще учиться и учиться... я все по плану...  
Помогите еще разок:  
К примеру план 1000 з/п 1000 бонус 40%  
Выполнение плана  
МИН 80% и МАХ -120 %  
1% недовыполнения  = -2% от бонуса,    
1% перевыполнения = 2% бонуса дополнительно,    
Помогите! плиз{/post}{/quote}  
 
Так нужно?
Сохранение области (диапозона) в отделный файл
 
{quote}{login=Igor67}{date=17.04.2011 09:11}{thema=}{post}А Вы пробовали специальную вставку? Ваш вопрос в какой то теме уже видел, но не дошли руки. А примеров сохранения в отдельный файл - есть на форуме.  
Range("Область").copy  
Workboock.add  
               With ActiveSheet.Range("A1")  
                   .PasteSpecial Paste:=xlValues  
                   .PasteSpecial Paste:=xlPasteFormats  
               End With  
Как то так:){/post}{/quote}  
 
Спасибо, то что доктор прописал!  
Теперь бы еше код, который папочку создаст, если ее нет.  
Темы действительно такие были, я их сколько нашел перечитал, но речь шла в основном об сохранении листа или данных, которые копировали в месте со значениями формулы и кнопки.  
Поэтому пришлось создать еще одну, извиняюсь за размножение тем.
Сохранение области (диапозона) в отделный файл
 
С праздником!  
 
Ребята, прошу помощи.  
Необходимо помочь в написании маленького макроса, который бы смог сохранить определенный диапазон ячеек, с присвоенным именем "Область" в отдельную книгу, но скопировать необходимо только значения и форматирование. На листе присутствуют элементы управления (Кнопки и т д) и макрос, они копироваться не должны. Новый файл с именем текущей даты, нужно поместить в папку рядом с файлом с названием "Документы", если такой папки нет, ее необходимо создать.  
Я перечитал много похожих тем, но собрать из них макрос отвечающий этим критериям не смог.  
Буду очень благодарен за помощь.
Макрос сохранения листа в новый файл
 
Файлик
Макрос сохранения листа в новый файл
 
Ребята, а как скопировать в другую книгу только значения выделенной области (диапазона) с форматированием и что бы без всяких элементов управления (кнопок переключателей и т д) если они были на листе?
Как написать формулу или макрос
 
Можно вот так, но с массивом покороче.  
 
=ЕСЛИ(H6<0,5;0;ЕСЛИ(И(H6>=0,5;H6<=0,7);0,5;ЕСЛИ(И(H6>0,7;H6<0,8);0,8;ЕСЛИ(H6>0,8;1;0))))  
 
Во вложении пример, с возможностью настройки доли выплаты.
отображение вводимых в TextBox сумм с разделителями
 
Ребята, а как программно выделить нужный TextBox?  
К примеру нажимая на кнопку, выделялся TextBox в UserForm1 и пользователь сразу бы смог ввести значение не кликая ни куда мышкой?  
Такое возможно?
Авторизация (Регистрация) пользователей в EXCEL
 
The_Prist, спасибо за дельный совет, все получилось как нужно.
Авторизация (Регистрация) пользователей в EXCEL
 
Спасибо, буду пробоавать.
Авторизация (Регистрация) пользователей в EXCEL
 
{quote}{login=The_Prist}{date=13.04.2011 05:41}{thema=}{post}Самое очевидное: создать список соответствий непосредственно на листе. И уже не через Select Case искать, а через Find или через массивы(что побыстрее будет). Но влазить все равно придется в книгу, при пополнении сотрудников. Но опять же: даже добавлять на этот скрытый лист соответствий можно будет макросом и из другой книги.  
Или разместить книгу с соответствиями на сервере, дать общий доступ и макросом вытаскивать оттуда данные в режиме Read Only. Если есть возможность на сервере хранить - то можно вообще в простом txt-файле. Если хотите, чтобы в него никто не влез, можно сделать защиту от дурака - тупо сменить расширение файла. А макросом его перед открытием менять на нормальное.{/post}{/quote}  
 
Спасибо за быстрый ответ!  
Вариант более чем подходит:  
Выполняется проверка соответствия, при нахождении совпадения присваивается нужное значение, в случае если соответствие не найдено, вылетает форма добавления с помощью макроса в лист или txt файл  
Только вот я не совсем понимаю, как правильно применить, в VBA достаточно слаб.  
Примерно так?  
 
Dim u_name As String  
Dim nam As String    
Dim iRange As Range  
Dim iFind As String  
iFind = u_name  'Что ищем  
 
    Set iRange = Columns("diapozon_s_imenami").Find(What:=iFind)  
    If iRange Is Nothing Then  
        MsgBox "Сотрудник не найден!" 'Или выводим форму добавления Нового сотрудника  
    Else  
        nam = iRange.Row  
    End If
Авторизация (Регистрация) пользователей в EXCEL
 
Всем доброго дня!  
Просмотрел несколько тем об авторизации, но в основном они касаются защиты или ограничения доступа.    
А мне необходимо организовать простую систему регистрации пользователей (по имени профиля), так что-бы пользователю, который в первый раз открывает файл, выскочила форма, в которую предлагается ввести Настоящее имя и инициалы и при нажатии кнопки "Сохранить" данные об имени профиля и Настоящем имени сотрудника вносилась отдельный лист (базу сотрудников). При последующих открытиях файла с этого с того же профиля, производилась проверка и переменной, которая отвечает за имя сотрудника (Например name_uzer) присваивалось "настоящее имя" (Например Сидоров В. в место имени профиля или компьтера Sidorov_uchotnaia_gruppa_12354GTRJ ), а формочка с просьбой внести данные, больше не выскакивала (не зачем лишний раз беспокоить пользователя).  
Ранее я решал проблему таким образом:  
 
Private Sub Workbook_Open()  
'-----------------------------------------------  
Dim u_name As String  
' Присваиваем переменной u_name имя профиля сотрудника  
u_name = CreateObject("WScript.Network").UserName  
 
Производим проверку, если значение u_name было внесено, присваиваем Человеко - понятное имя сотрудника, переменной nam либо используем имя профиля, если имени в списках нет  
Select Case u_name  
 
 Case "i.krasnova"  
     nam = "Краснова И. Е."  
 
 Case "v.horbunova"  
     nam = "Горбунова В. С."  
 Case "r.oliinyk"  
     nam = "Олийнык Р. И."  
 Case Else  
     nam = Application.UserName  
End Select  
 
'----------------------------------------------  
 
End Sub  
 
Однако, при добавлении сотрудника, приходиться снова лезть в макросы, а после того как к нам присоединились еще несколько десятков предприятий, такой способ стал бесполезен.  
Если кто нибудь сталкивался с таким вопросом, прошу у Вас помощи.  
Заранее благодарен!
Страницы: 1
Наверх