<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: hotkey для переключения листов в Excel]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=11655</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=11655&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: hotkey для переключения листов в Excel».]]></description>
		<lastBuildDate>Fri, 10 Jun 2016 15:32:04 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: hotkey для переключения листов в Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=105087#p105087</link>
			<description><![CDATA[<p><span style="color: green"><strong>dumper09</strong>, Ваши смайлики поедают точки.<br /><span class="postimg"><img src="http://apachan.net/thumbs/201506/09/fwhr2om91zin.jpg" alt="http://apachan.net/thumbs/201506/09/fwhr2om91zin.jpg" /></span><br />Верните точки в свои сообщения.</span></p>]]></description>
			<author><![CDATA[null@example.com (ypppu)]]></author>
			<pubDate>Fri, 10 Jun 2016 15:32:04 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=105087#p105087</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: hotkey для переключения листов в Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=105075#p105075</link>
			<description><![CDATA[<p>Странно.<br />У меня на 2016 работает.<br />Надо проверять с помощью msgbox где затык.<br />Чему равен first после Send, {LButton Up}.<br />Чему равен Selection.<br />Отлавливаются ли события тут:<br /></p><div class="codebox"><pre><code>           if (event = &quot;SheetActivate&quot;)
           {
              Global NewSelection := &quot;&quot;
              Global Selection := oExcel.Selection.address
           }
           if (event = &quot;SheetSelectionChange&quot;)
           {
              if (NewSelection != &quot;&quot;)
                 Global Selection := NewSelection
              Global NewSelection := oExcel.Selection.address
           }
        }</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Fri, 10 Jun 2016 13:32:08 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=105075#p105075</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: hotkey для переключения листов в Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=105071#p105071</link>
			<description><![CDATA[<div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>А как эксел поймет, что вы решили переключаться, а не выделить ячейуи?</p></blockquote></div><p>Так же как у вас - перехватить ЛКМ, потом симулировать. <br />Этот код ошибку не вызывает и переключается, но и ячейка выделяется всегда.</p>]]></description>
			<author><![CDATA[null@example.com (dumper09)]]></author>
			<pubDate>Fri, 10 Jun 2016 13:14:12 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=105071#p105071</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: hotkey для переключения листов в Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=105065#p105065</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>А я думал в направлении запрета в экселе выделять ячейки на момент переключения, а потом разрешать</p></blockquote></div><p>А как эксел поймет, что вы решили переключаться, а не выделить ячейуи?<br />А так?<br /></p><div class="codebox"><pre><code>ComObjError(false)
Global oExcel := ComObjActive(&quot;Excel.Application&quot;)
ComObjConnect(oExcel, new Workbook_Events)                      ; Connect to the workbooks&#039;s events
#If WinActive(&quot;ahk_class XLMAIN&quot;) and GetKeyState(&quot;LButton&quot;, &quot;P&quot;)
~LButton::
first := 1
return

XButton1::
XButton2::
Send, {LButton Up}
if (first = 1)
{
   oExcel.range(Selection).select()
   first = 0
}
If (A_ThisHotkey = &quot;XButton1&quot;)
   Send, ^{PgUp}
else
   Send, ^{PgDn}
return
#If


class Workbook_Events
{
    __Call(Event, Args*)
    {
        static EventList                         ; List of recent events that are not implemented
		if (IsFunc(this[Event]))           ; If there is a method defined for this event, call it
			this[Event].Call(Args)
		else                              ; Else display EventList and add this event to the list
        {
           if (event = &quot;SheetActivate&quot;)
           {
              Global NewSelection := &quot;&quot;
              Global Selection := oExcel.Selection.address
           }
           if (event = &quot;SheetSelectionChange&quot;)
           {
              if (NewSelection != &quot;&quot;)
                 Global Selection := NewSelection
              Global NewSelection := oExcel.Selection.address
           }
        }
    }
    BeforeClose(Cancel, wkb)
    {
        ; Reference: 
        ; https://autohotkey.com/board/topic/69847-com-events-using-byref-parms/?p=442260
        OldValue := NumGet(ComObjValue(Cancel), 0, &quot;Short&quot;)    ; Get &quot;cancel&quot; value. Bool=2 bytes
        NumPut(-1, ComObjValue(Cancel), &quot;Short&quot;)                 ; Change value. -1 is True in VB
        NewValue := NumGet(ComObjValue(Cancel), 0, &quot;Short&quot;)              ; Get new &quot;cancel&quot; value
        TrayTip, Blocked, % &quot;Old value: &quot; OldValue &quot;`nNew value: &quot; NewValue
    }
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Fri, 10 Jun 2016 10:36:30 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=105065#p105065</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: hotkey для переключения листов в Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=105063#p105063</link>
			<description><![CDATA[<p><strong>Malcev</strong> да, так уже лучше) А я думал в направлении запрета в экселе выделять ячейки на момент переключения, а потом разрешать... У вас я так понял момент ЛКМ перехватывается, запоминается адрес ячейки и дальше сендами делаем клик, а после ХБ восстанавливаем этот адрес и перекл.лист, да? А что за ComObjError(false) - откл.ошибки?</p><p>Вообщем работает, но не стабильно - во первых заметил, когда скрипт запущен и загрузить эксел, то нормал (перелючает листы и ячейку не выбирает), а если выйти и зайти снова в эксел, то выбирает, пока не перегрузить скрипт. Во вторых на строке <strong>oExcel.range(Selection).select()</strong> частенько выдает ошибку 0x80010001 - вызов отклонен или 0x800A03EC - Source, Description, HelpFile (null)</p>]]></description>
			<author><![CDATA[null@example.com (dumper09)]]></author>
			<pubDate>Fri, 10 Jun 2016 10:23:17 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=105063#p105063</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: hotkey для переключения листов в Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=105061#p105061</link>
			<description><![CDATA[<p>Можно так еще попробовать:<br /></p><div class="codebox"><pre><code>ComObjError(false)
#If WinActive(&quot;ahk_class XLMAIN&quot;)
LButton::
oExcel := ComObjActive(&quot;Excel.Application&quot;)
if (oExcel.Selection.address != &quot;&quot;)
   Selection := oExcel.Selection.address
Send {LButton down}
first := 1
keyWait LButton
Send {LButton up}
return
#If

#If WinActive(&quot;ahk_class XLMAIN&quot;) and GetKeyState(&quot;LButton&quot;, &quot;P&quot;)
XButton1::
Send, {LButton Up}
if (first = 1)
{
   oExcel.range(Selection).select()
   first = 0
}
Send, ^{PgUp}
return

XButton2::
Send, {LButton Up}
if (first = 1)
{
   oExcel.range(Selection).select()
   first = 0
}
Send, ^{PgDn}
return
#If</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Fri, 10 Jun 2016 07:00:31 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=105061#p105061</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: hotkey для переключения листов в Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=105053#p105053</link>
			<description><![CDATA[<div class="quotebox"><cite>Alectric пишет:</cite><blockquote><p>Нашел старую мышь с этими кнопками - проверил всё работает. Был момент когда не работало, но потом вдруг заработало. Загадка какая-то... не работала именно команда &quot;send&quot;.</p></blockquote></div><p>Не работает, по разному пробывал и ни разу, только если ХБ1 поменять.</p><div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>А у вас ячейка в экселе что ли по отжатию левой кнопки мыши выделяется?</p></blockquote></div><p>Нет, как только нажал и держишь ЛБ, перед нажатием ХБ1, ячейка уже выбралась((. Если держать ЛБ а ХБ1 кликать, то листы меняются и ячейки конечно не выбираются, и как отпустишь ЛБ тоже не выбирается. Но вот на том, начальном листе, откуда начали менять, т.е. там где нажали ЛБ там ячейка изменилась.<br />И этот код тоже выбирает ячейку.</p>]]></description>
			<author><![CDATA[null@example.com (dumper09)]]></author>
			<pubDate>Thu, 09 Jun 2016 21:47:08 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=105053#p105053</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: hotkey для переключения листов в Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=105021#p105021</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Вопрос с невыбором ячейки по ЛКМ остался открытым</p></blockquote></div><p>А у вас ячейка в экселе что ли по отжатию левой кнопки мыши выделяется?<br />Можно еще так попробовать:<br /></p><div class="codebox"><pre><code>#If WinActive(&quot;ahk_class XLMAIN&quot;) and GetKeyState(&quot;LButton&quot;, &quot;P&quot;)
SetWinDelay, -1
XButton1::
WinActivate, ahk_class Shell_TrayWnd
Send {LButton Up}
WinActivate, ahk_class ahk_class XLMAIN
Send ^{PgDn}
return
XButton2::
WinActivate, ahk_class Shell_TrayWnd
Send {LButton Up}
WinActivate, ahk_class ahk_class XLMAIN
Send ^{PgUp}
return
#If</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Thu, 09 Jun 2016 13:19:22 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=105021#p105021</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: hotkey для переключения листов в Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=105011#p105011</link>
			<description><![CDATA[<p>Нашел старую мышь с этими кнопками - проверил всё работает. Был момент когда не работало, но потом вдруг заработало. Загадка какая-то... не работала именно команда &quot;send&quot;.<br />Про &quot;trig&quot;: сначала выполняется присвоение &quot;trig:=!trig&quot; (переменной присваивается инверсное значение, т.е. &quot;true&quot;, т.к. до присвоения переменная равна &quot;false&quot;); затем проверяется условие &quot;if&quot; на &quot;true/false&quot;. При втором нажатии значение переменной уже равно &quot;true&quot; и меняется на &quot;false&quot;, &quot;if&quot; не выполняется по этому выполняется &quot;else&quot;.</p>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Thu, 09 Jun 2016 07:33:36 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=105011#p105011</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: hotkey для переключения листов в Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=104987#p104987</link>
			<description><![CDATA[<p><strong>Alectric</strong> задумка интересная на жест мышки повесить, но ... не переключает так листы (тестировал конечно без своего скрипта, чисто ваш). Если заменить ХБ1 на ЛБ то переключает, прикольно. Но тогда ЛКМ конечно пропадает.</p><p>И еще: <strong>if trig:=!trig</strong> означает - если значение переменной trig противоположно предыдущему значению trig то... Так?</p>]]></description>
			<author><![CDATA[null@example.com (dumper09)]]></author>
			<pubDate>Wed, 08 Jun 2016 18:31:14 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=104987#p104987</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: hotkey для переключения листов в Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=104942#p104942</link>
			<description><![CDATA[<p>Зажать XButton1 и водить мышкой влево\вправо - переключение листов; нажать XButton2 - свернуть окно, еще раз - развернуть.</p><div class="codebox"><pre><code>#If WinActive(&quot;ahk_class XLMAIN&quot;)

XButton1::
mousegetpos,sx
while,GetKeyState(&quot;XButton1&quot;,&quot;P&quot;)
{
  sleep,100
  mousegetpos,x

  if (abs(sx-x)&gt;a_screenwidth/8)
  {
    if (sx&gt;x)
      Send,^{PgUp}
    else if (sx&lt;x)
      send,^{PgDn}
    sx:=x
  }
;  tooltip,% sx &quot;`t&quot; x &quot;`n&quot; sy &quot;`t&quot; y
}
return

#If

#Up::
XButton2::
if trig:=!trig
{
  WinGet, MinMaxID, ID, A
  WinGetClass, MinMaxClass, A
  WinMinimize, ahk_class %MinMaxClass%
}
else
{
  WinRestore, ahk_id %MinMaxID%
  WinActivate, ahk_id %MinMaxID%
}
Return
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Alectric)]]></author>
			<pubDate>Wed, 08 Jun 2016 12:28:55 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=104942#p104942</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: hotkey для переключения листов в Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=104935#p104935</link>
			<description><![CDATA[<p><strong>Malcev</strong> так напрямую работать не будет - дублирование, т.к. на ХБаттоны уже ранее завязаны Minimize/Restore. Я к if... добавил else и собрал все в одну конструкцию. Так работает, спасибо за наводку.</p><p>Также спасибо всем форумчанам кто отозвался и помог с решением о переключении листов, <strong>Malcev</strong>у особенно.</p><p>Вопрос с невыбором ячейки по ЛКМ остался открытым. Буду что-то пробывать...</p>]]></description>
			<author><![CDATA[null@example.com (dumper09)]]></author>
			<pubDate>Wed, 08 Jun 2016 10:50:16 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=104935#p104935</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: hotkey для переключения листов в Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=104917#p104917</link>
			<description><![CDATA[<div class="codebox"><pre><code>#If WinActive(&quot;ahk_class XLMAIN&quot;) and GetKeyState(&quot;LButton&quot;, &quot;P&quot;)
XButton1::
Send, {LButton Up}^{PgUp}
return
XButton2::
Send, {LButton Up}^{PgDn}
return
#If

XButton1::
if GetKeyState(&quot;LButton&quot;, &quot;P&quot;)
   Send, {XButton1}
return
XButton2::
if GetKeyState(&quot;LButton&quot;, &quot;P&quot;)
   Send, {XButton2}
return</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Tue, 07 Jun 2016 20:39:24 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=104917#p104917</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: hotkey для переключения листов в Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=104899#p104899</link>
			<description><![CDATA[<p>Странно, даже без ~LButton &amp; ~XButton1:: ... (листы конечно начали перелючаться), ячейка все равно выбирается. У меня правда Excel2010... Но, ведь тогда не работает Вперед\Назад. </p><p>Вообще вот этот код:<br /></p><div class="codebox"><pre><code>
~LButton &amp; ~XButton1::
~LButton &amp; ~XButton2::
Return
</code></pre></div><p>в скрипте 10 можно заменить другим, чтобы работали Вперед\Назад (и не отвалились остальные хоткеи с экселем)?</p>]]></description>
			<author><![CDATA[null@example.com (dumper09)]]></author>
			<pubDate>Tue, 07 Jun 2016 19:27:19 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=104899#p104899</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: hotkey для переключения листов в Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=104888#p104888</link>
			<description><![CDATA[<p>Тогда не знаю.<br />Так как этот код у меня работает исправно на Win7+ excel 2016.<br />Предыдущий я тестировал на Win10+excel 2016.<br />Если вы его вставляете в 10 пост, то это надо убрать:<br /></p><div class="codebox"><pre><code>~LButton &amp; ~XButton1::
~LButton &amp; ~XButton2::
Return</code></pre></div><p>То есть так:<br /></p><div class="codebox"><pre><code>#If WinActive(&quot;ahk_class XLMAIN&quot;) and GetKeyState(&quot;LButton&quot;, &quot;P&quot;)
XButton1::
Send, {LButton Up}^{PgUp}
return
XButton2::
Send, {LButton Up}^{PgDn}
return
#If

#Down::
XButton1::
WinGet, MinMaxID, ID, A
WinGetClass, MinMaxClass, A
WinMinimize, ahk_class %MinMaxClass%
Return

#Up::
XButton2::
WinRestore, ahk_id %MinMaxID%
WinActivate, ahk_id %MinMaxID%
Return</code></pre></div><p>У меня ячейка не выбирается.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Tue, 07 Jun 2016 16:38:51 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=104888#p104888</guid>
		</item>
	</channel>
</rss>
