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

Страницы: 1
DDE обмен между MetaTrader 4 и Excel зависает
 
Пошел на крайние меры, переустановил Windows 7, но проблема так и осталась. Даже не знаю в какую сторону еще копать...
DDE обмен между MetaTrader 4 и Excel зависает
 
Добрый день. Перерыл весь инет, но предложенные решения, проблему не решают... В общем проблема в том, что есть стандартная формула экспорта котировок из МТ4 в ексель: ='MT4'|ASK!GBPUSD. Так вот, если поставить галочку "Обновить ссылки на другие документы", то ексель на мертво зависает. Что сделал:
Галочку снял - Игнopиpoвaть DDЕ - зaпpocы oт дpyгиx пpилoжeний
Пpeoбpaзoвaниe фopмул в фopмaт еxcel пpи ввoдe галочку поставил
разрешить DDЕ в мт4 галочку поставил, короче все сделал как пишут...
Был вариант что зависание возможно из за Гугл Хром, удалил, но не помогло. Надежда только на вас... Устал бороться с екселем...)
п.с. еxcel 2007 Windows 7 64
Проблемы с макросом сохранения книги, запущенного с панели быстрого доступа
 
Я новичок, многое не знаю...) Да, логично, что то я не подумал. Поместил в Personal, все заработало, спасибо. Но, данная книга будет использоваться на других компьютерах тоже, если макрос будет в Personal, то на других ведь компьютерах она не будет работать, как тогда быть?
Может как нибудь в виде надстройки, но никогда их не делал, т.е. сохранить как надстройка то знаю, ума большого не надо, формат файла выбрать...), а вот как сделать чтобы кнопочка обращалась к макросу в надстройке(на уме только одно - Кал, ну в смысле call...), только не знаю как применить), тут нет опыта... Или это не выход?
Изменено: SANA555 - 28.02.2013 14:24:11
Проблемы с макросом сохранения книги, запущенного с панели быстрого доступа
 
Макрос находится в модуле, в этой же книге(не в персональной книге!). Пробовал менять ThisWorkbook на ActiveWorkbook, еще до того как вы написали, результат точно такой же, как я описал выше. В выложенном файле, если есть желание, можете сами убедиться(хотя утверждать не могу, может быть у меня что нибудь не то с екселем).
То Дмитрий Синицын: Там уже был.., только вот мне нужно сохранить всю книгу, с именем на определенном листе, а там сохранение конкретного листа... Вообще где только уже не был..), Хотел было использовать: Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean), но есть трудности с тем, что окно сохранения выскакивает два раза.. Короче ниче понять не могу..)
Изменено: SANA555 - 26.02.2013 22:37:54
Проблемы с макросом сохранения книги, запущенного с панели быстрого доступа
 
Не много уточню. При первом нажатии на кнопку сохранения, на панели быстрого доступа, книга сохраняется нормально, с новым именем. При последующем нажатии на кнопку, книга сохраняется и открывается книга, из которой было произведено последнее сохранение.
Пример: Предположим есть книга с названием "1.xlsm". В ней нажимаю кнопку и документ сохраняется с новым названием "2.xlsm", при этом книга "1.xlsm" как и положено, закрывается.
Далее нажимаю кнопку, уже в книге "2.xlsm", и при этом открывается книга "1.xlsm". Возможно сумбурно объяснил, но как то так...)
Проблемы с макросом сохранения книги, запущенного с панели быстрого доступа
 
У меня есть макрос сохранения книги с именем из ячейки, с выводом диалогового окна. Макрос нормально работает и сохраняет, если его запускать из вкладки "макросы". Мне нужно, чтобы этот макрос располагался на панели быстрого доступа, т.к. листов много и делать на каждый лист кнопку сохранения не есть хорошо. Вот тут то и начинаются проблемы. При нажатии кнопки макроса на панели быстрого доступа, выходит диалоговое окно с подставленным именем из ячейки, а при нажатии сохранить появляется еще одна книга и так каждый раз. Не могу понять в чем может быть дело...
Код
Sub MySaveName1()
    Dim sName As Variant
    sName = Application.GetSaveAsFilename(ThisWorkbook.Path & "\" & Range("b2") & ".xlsm", "Excel files (*.xlsm),*.xlsm")
    On Error Resume Next
    If sName <> False Then ThisWorkbook.SaveAs sName
End Sub
Выбор фото в примечании из выпадающего списка
 
Сегодня прям, мой день рождения, столько подарков..) и все в точку. Вот что значит профессионализм, спасибо большое!
Скрытие строк по значению нескольких ячеек по условию "или" , "и"
 
Спасибо! И проблема с отменить(вернуть) решилась таким способом..) Поменял только строчку от К61, т.к. нужно ставить именованную строку(строки) и все хорошо.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, [a1:a2]) Is Nothing Then
        Range("a6").EntireRow.Hidden = ([a1] = 0 Or [a2] = 0)
    End If
End Sub
Изменено: SANA555 - 25.02.2013 16:25:44
Скрытие строк по значению нескольких ячеек по условию "или" , "и"
 
При таком коде, если изменить значение а1 на 1, а при этом значение а2 равно 0, то строка а6 раскрывается, а нужно так как у меня в коде, если я ставлю значение предположим 1 в ячейку а1, и при этом в ячейке а2 стоит значение 0, то строка а6 не должна раскрываться. Строка а6 должна раскрываться только при положительных значениях в обоих ячейках: а1>0 и а2>0, и скрываться при нулевом значении любой из ячеек: или а1=0, а2=1 или а1=1, а2=0 или а1=0, а2=0.
Скрытие строк по значению нескольких ячеек по условию "или" , "и"
 
Нужно скрыть строку, при условии: если а1=о или а2=о, то скрываем строку a6.

If Target.Address = [а1,а2]Address Then Range("а6").EntireRow.Hidden = Target.Value <= 0
Если прописать ячейки через запятую, то о результатов.

В общем поэкспериментировал, и сделал для условия "или" так:

Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("a1") <= 0 Or Range("a2") <= 0 Then
        Range("a6").EntireRow.Hidden = True
        Else
        Range("a6").EntireRow.Hidden = False
    End If 
End Sub


для условия "и":

Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("a3") <= 0 And Range("a4") <= 0 Then
        Range("a7").EntireRow.Hidden = True
        Else
        Range("a7").EntireRow.Hidden = False
    End If 
End Sub


короче код сделать не получилось..
Все вроде работает но, при таком коде, почему то стали не активны кнопки "отменить(вернуть) последнее действие" в ексель, даже если вводишь значение в других ячейках, не прописанных в макросе.
Выбор фото в примечании из выпадающего списка
 
Есть зависимые списки, нужно обнулять значения во втором зависимом списке при смене значения в первом списке. Как можно упростить код, т.к. таких зависимых списков до 30 шт, плюс листов еще до кучи..)

Код
Private Sub Worksheet_Change(ByVal Target As Range)    
    If Target.Address = [c35].Address Then Range("d35") = ""
    If Target.Address = [c36].Address Then Range("d36") = ""   
    If Target.Address = [c37].Address Then Range("d37") = "" 
    ... и таких зависимых списков до 30шт.
End Sub
Выбор фото в примечании из выпадающего списка
 
Цитата
Сократим:
Ух ты, как все просто и работает, спасибо! А можно сделать скрытие строки по условию двух, трех ячеек?
If Target.Address = [c8,c9].Address Then Range("b36").EntireRow.Hidden = Target.Value <= 0
Если прописать через запятую, то о результатов.

В общем поэкспериментировал, и сделал так, короче код сделать не получилось:

If Range("c8") <= 0 Or Range("c10") <= 0 Then
Range("b36").EntireRow.Hidden = True
Else
Range("b36").EntireRow.Hidden = False
End If

Но, при таком коде, почему то перестали работать кнопки "отменить последнее действие" в ексель...
Изменено: SANA555 - 25.02.2013 01:20:23
Выбор фото в примечании из выпадающего списка
 
Готовый макрос по скрытию не связанных строк:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim d
Set d = Union(Range("Имя1"), Range("Имя2"))
Names.Add Name:="ИмяДиапазона", RefersTo:=d
    If Target.Address = [a1].Address Then
        If Target.Value = "Коала" Then    
            Range("ИмяДиапазона").EntireRow.Hidden = True            
        Else
            Range("ИмяДиапазона").EntireRow.Hidden = False            
        End If
    End If
End Sub


Или сначала создаем имя(как я понял имя сохраняется в диспетчере имен):

Код
Sub СоздатьИмяДиапазона()
    Dim d
    Set d = Union(Range("Имя1"), Range("Имя2"))
    Names.Add Name:="ИмяДиапазона", RefersTo:=d
End Sub


а потом скрываем строки по новому имени несвязанного диапазона:

Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = [a1].Address Then
        If Target.Value = "Коала" Then    
            Range("ИмяДиапазона").EntireRow.Hidden = True            
        Else
            Range("ИмяДиапазона").EntireRow.Hidden = False            
        End If
    End If
End Sub


Какой способ лучше?
Изменено: SANA555 - 23.02.2013 17:18:22
Выбор фото в примечании из выпадающего списка
 
Супер! Все работает, подставил вместо Union(Cells(1, 1), Cells(3, 2))
свои имена - Union(Range("Имя1")  , Range("Имя2")  ) и вуаля, спасибо...)
А это созданное имя - 'Names("ИмяДиапазона" )  .Delete, в конце макроса нужно удалять?
Изменено: SANA555 - 23.02.2013 15:45:40
Выбор фото в примечании из выпадающего списка
 
Да, спасибо..) Вы как великий художник, отсекли все не нужное! А случайно не знаете ответ на вопрос, который я задавал выше: можно ли сделать не связанный именованный диапазон?
Изменено: SANA555 - 23.02.2013 14:16:12
Выбор фото в примечании из выпадающего списка
 
К сожалению, для меня данный макрос сложен в понимании и как он сможет решить мою задачу... Как вставлять картинку в примечания я знаю, а вот дальше не могу понять как он сможет поменять ее при смене значения из выпадающего списка. Выкладываю свой файл для 2003 екселя, для того чтобы вам было нагляднее, что мне нужно.
Выбор фото в примечании из выпадающего списка
 
Ни чего себе, решил попробывать поставить вместо Range("2:2")  .EntireRow.Hidden = True
Имя ячейки: Range("а2" )  .EntireRow.Hidden = True и о чудо, так тоже работает, а значит можно задать имя для данной ячейки, это радует..)
Это тоже вариант, но от оптимизации первого не откажусь..)
Еще один вопрос, знаю что вроде как нельзя сделать не связанный именованный диапазон. Просто многие значения ячеек находятся в разных местах на листе, а делать для них разные имена, многовато получится... Может быть как то можно обойти данную проблему?
Изменено: SANA555 - 22.02.2013 19:44:40
Выбор фото в примечании из выпадающего списка
 
Есть еще один вариант, это скрытие строк. Но как задать имя определенной строке? Дело в том, что новые значения могут вставляться внутрь уже существующих, а ссылка на строку абсолютная. Может быть можно как то задать имя строке?

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = [a1].Address Then
If Target.Value = "Коала" Then
Range("2:2") .EntireRow.Hidden = True 'Можно ли сделать именованную строку?
Else
Range("2:2") .EntireRow.Hidden = False
End If
End If

If Target.Address = [a1].Address Then
If Target.Value = "Пингвины" Then
Range("3:3") .EntireRow.Hidden = True
Else
Range("3:3") .EntireRow.Hidden = False

End If
End If

End Sub
Изменено: SANA555 - 22.02.2013 18:35:53
Выбор фото в примечании из выпадающего списка
 
Добрый день. Знаю, что есть выбор фото из выпадающего списка, но она меняет картинку в ячейке, а вот чтобы фото менялось в примечании, увы никак не смог найти, весь инет излазил. Нашел на этом форуме небольшой код от ZVI, суть его в том, что при смене значения в одной ячейке, можно поменять значение в другой. Не много доработав его под свою задачу, применив копирование примечания из другой ячейки, получил то, что собственно и хотел, но мои познания в вба желают быть лучшими, поэтому прошу помощи в оптимизации сего кода. Суть заключается в следующем: при выборе из выпадающего списка в ячейке А1, к примеру "Коала", в ячейке А2 в примечании появится фото Коалы, а в ячейке А3 примечание с текстом "Коала любит лазить по деревьям"..) -это просто пример, вместо текста там может быть и другая картинка. Для решения моей задачи, при выборе какого либо значения из ячейки А1, ему будут соответствовать до 6 параметров, которые должны показывать свою индивидуальную картинку именно в примечании. Поэтому код так сказать вырастет на одном только копировании... Выкладываю файл с примером, там будет все наглядно. Возможно у кого нибудь есть более простое решение данной задачи, буду весьма благодарен.

Код
Private Sub Worksheet_Change(ByVal Target As Range) 
Dim x 
   x = Range("a1" ;) 
 
   If x = "Коала" Then 
       If Target.Address = [a1].Address Then 
          Range("e2" ;) .Copy 
          Range("a2" ;) .PasteSpecial Paste:=xlPasteComments, Operation:=xlNone, _ 
          SkipBlanks:=False, Transpose:=False 
          Range("e6" ;) .Copy 
          Range("a3" ;) .PasteSpecial Paste:=xlPasteComments, Operation:=xlNone, _ 
          SkipBlanks:=False, Transpose:=False 
       End If 
   End If
 
   If x = "Маяк" Then 
       If Target.Address = [a1].Address Then 
          Range("e3" ;) .Copy 
          Range("a2" ;) .PasteSpecial Paste:=xlPasteComments, Operation:=xlNone, _ 
          SkipBlanks:=False, Transpose:=False 
          Range("e7" ;) .Copy 
          Range("a3" ;) .PasteSpecial Paste:=xlPasteComments, Operation:=xlNone, _ 
          SkipBlanks:=False, Transpose:=False 
       End If 
   End If
 
   If x = "Пингвины" Then 
       If Target.Address = [a1].Address Then 
          Range("e4" ;) .Copy 
          Range("a2" ;) .PasteSpecial Paste:=xlPasteComments, Operation:=xlNone, _ 
          SkipBlanks:=False, Transpose:=False 
          Range("e8" ;) .Copy 
          Range("a3" ;) .PasteSpecial Paste:=xlPasteComments, Operation:=xlNone, _ 
          SkipBlanks:=False, Transpose:=False 
       End If 
   End If 

 Application.CutCopyMode = False 
End Sub
Изменено: SANA555 - 24.02.2013 21:26:19
Защита Excel, компилятором DoneEx XCell Compiler
 
Да, конечно, не совсем точно выразился..), сделали обзор, из которого было очевидным, куда идти..) Это не скрытая реклама, это благодарность лично Вам и этому форуму за непосильный труд и помощь чайникам, вроде меня..) Я уже больше года нахожу ценные советы и решения поставленных задач для моей скромной программки на этом форуме и еще пару других. По поводу надстройки, хорошо передам..) Мое почтение.
Защита Excel, компилятором DoneEx XCell Compiler
 
ZVI писал - "Владимир, по поводу формулы я же отписал, что даже не пытался искать, т.е. с защитой формулы вроде все в порядке. С большим количеством формул поэкспериментируйте сами - не тормозят ли, в правильном ли порядке считаются длинные зависимости и т.п.
И как я уже отмечал, в итоге считаю защиту хорошей."

Последовал вашему совету и приобрел бизнес версию DoneEx XCell. Я конечно не специалист, и мне трудно судить о хорошей защите файлов, поэтому возлагался на мнения опытных, в том числе вас. Очень нравятся в данной программе множество настроек, таких как возможность привязки к ID компьютера, создание демо версии, а также облагораживающих примочек..), таких как персонализированная заставка при открытии приложения, возможность поставить свою индивидуальную иконку, вставка своего лицензионного соглашения. Возникали некоторые трудности по работе с макросами и другие не большие недочёты, но техподдержка работает там очень оперативно и все решали очень быстро, это факт!, несмотря на то что я абсолютный ноль в знании английского языка..) Очень понравилось то, что макросы работают на защищенном листе, без использования специального макроса на открытие книги, который включает UserinterfaceOnly:=True. Так что очень доволен, спасибо ZVI, за отзыв и команде DoneEx XCell.
Страницы: 1
Наверх