<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Странное поведение при работе с Excel]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=16280</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=16280&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Странное поведение при работе с Excel».]]></description>
		<lastBuildDate>Thu, 22 Apr 2021 09:48:22 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Странное поведение при работе с Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=147466#p147466</link>
			<description><![CDATA[<div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><div class="quotebox"><cite>KepocuH пишет:</cite><blockquote><p>col := A_Index - внезапно строка</p></blockquote></div><p>Это вы как определили?</p></blockquote></div><p>Достоверно не определил, просто по аналогии:<br /><em>col:=1</em> работает, <em>col:=&quot;1&quot;</em> выдает ошибку 0x800a03ec.</p><div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p>Также If var is [not] type.</p></blockquote></div><p>К сожалению, работает не совсем как надо. Не помогает отличить число от строки, состоящей из цифр.<br />Этот код выведет &quot;Число&quot;. Дважды.<br /></p><div class="codebox"><pre><code>var := &quot;1&quot;
if var is integer 
	MsgBox Число
MsgBox % var + 0 = &quot;&quot; ? &quot;Не число&quot; : &quot;Число&quot;
</code></pre></div><p><em>col := A_Index + 0</em><br />Вот этот способ приведения строки к числу, пожалуй, самый простой. Спасибо!<br />За топик на autohotkey.com тоже спасибо.</p>]]></description>
			<author><![CDATA[null@example.com (KepocuH)]]></author>
			<pubDate>Thu, 22 Apr 2021 09:48:22 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=147466#p147466</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Странное поведение при работе с Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=147465#p147465</link>
			<description><![CDATA[<p><a href="https://www.autohotkey.com/boards/viewtopic.php?f=76&amp;t=89692&amp;p=395392#p395392">Задал</a> вопрос, может, кто знает.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Thu, 22 Apr 2021 09:15:41 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=147465#p147465</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Странное поведение при работе с Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=147464#p147464</link>
			<description><![CDATA[<p>Удалось воспроизвести проблему, действительно, странное поведение.<br /></p><div class="codebox"><pre><code>if !Excel := Excel_Get()
   Return

XLSht := Excel.ActiveSheet

loop 2 {
   row := A_Index
   loop 2 {
      col := A_Index
      XLSht.Cells(row, col).Value := &quot;test&quot;
   }
}

Excel_Get(WinTitle := &quot;ahk_class XLMAIN&quot;)  {
   ControlGet, hwnd, hwnd,, Excel71, %WinTitle%
   if !hwnd
      return
   Window := AccObjectFromWindow(hwnd, -16)
   Loop  {
      try Application := Window.Application
      catch
         ControlSend, Excel71, {esc}, %WinTitle%
   } Until !!Application
   return Application
}

AccObjectFromWindow(hWnd, idObject = 0)
{
   static IID_IDispatch   := &quot;{00020400-0000-0000-C000-000000000046}&quot;
        , IID_IAccessible := &quot;{618736E0-3C3D-11CF-810C-00AA00389B71}&quot;
        , OBJID_NATIVEOM  := 0xFFFFFFF0, VT_DISPATCH := 9, F_OWNVALUE := 1
        , h := DllCall(&quot;LoadLibrary&quot;, Str, &quot;oleacc&quot;, Ptr)
        
   VarSetCapacity(IID, 16), idObject &amp;= 0xFFFFFFFF
   DllCall(&quot;ole32\CLSIDFromString&quot;, Str, idObject = OBJID_NATIVEOM ? IID_IDispatch : IID_IAccessible, Ptr, &amp;IID)
   if DllCall(&quot;oleacc\AccessibleObjectFromWindow&quot;, Ptr, hWnd, UInt, idObject, Ptr, &amp;IID, PtrP, pAcc) = 0
      Return ComObjEnwrap(VT_DISPATCH, pAcc, F_OWNVALUE)
}</code></pre></div><p>Работает, если заменить <em>col := A_Index</em> на <em>col := A_Index + 0</em>.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Thu, 22 Apr 2021 09:00:42 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=147464#p147464</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Странное поведение при работе с Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=147463#p147463</link>
			<description><![CDATA[<div class="quotebox"><cite>KepocuH пишет:</cite><blockquote><p>col := A_Index - внезапно строка</p></blockquote></div><p>Это вы как определили?<br /></p><div class="quotebox"><cite>KepocuH пишет:</cite><blockquote><p>Есть ли в Autohotkey надежный способ узнать, какой тип данных в данный момент хранится в переменной?</p></blockquote></div><div class="codebox"><pre><code>var := 5
MsgBox % var + 0 = &quot;&quot; ? &quot;Не число&quot; : &quot;Число&quot;</code></pre></div><p>Также <a href="https://www.autohotkey.com/docs/commands/IfIs.htm">If var is [not] type</a>.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Thu, 22 Apr 2021 08:10:15 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=147463#p147463</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Странное поведение при работе с Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=147462#p147462</link>
			<description><![CDATA[<p>Я снова не понимаю, почему это произошло, но вот в таком виде заработало:<br /></p><div class="codebox"><pre><code>loop 5 {
	row := A_Index
	loop 3 {
		tmp := [A_Index]
		col := tmp[1]
		Xl.Cells(row, col).Value := &quot;R&quot; . row . &quot;C&quot; . col
	}
}
</code></pre></div><p>И вот так тоже работает: </p><div class="codebox"><pre><code>col := Floor(A_Index)</code></pre></div><p>Короче, происходит что-то непонятное с типами данных.<br />A_Index - число;<br />row := A_Index - тоже число;<br />col := A_Index - внезапно строка;<br />col := Floor(A_Index) - число.</p><p>Есть ли в Autohotkey надежный способ узнать, какой тип данных в данный момент хранится в переменной?</p>]]></description>
			<author><![CDATA[null@example.com (KepocuH)]]></author>
			<pubDate>Thu, 22 Apr 2021 07:08:25 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=147462#p147462</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Странное поведение при работе с Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=147460#p147460</link>
			<description><![CDATA[<p>Если судить по тому коду, что вы привели, содержание col и A_Index идентично, ничего другого сказать нельзя.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Wed, 21 Apr 2021 17:45:19 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=147460#p147460</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Странное поведение при работе с Excel]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=147459#p147459</link>
			<description><![CDATA[<p>Здравствуйте!<br />Есть код, который должен заполнять ячейки таблицы excel.<br /></p><div class="codebox"><pre><code>loop 5 {
	row := A_Index
	loop 3 {
		col := A_Index
		Xl.Cells(row, col).Value := &quot;R&quot; . row . &quot;C&quot; . col
	}
}
</code></pre></div><p>При запуске вылетает ошибка 0x800a03ec.</p><p>Так работает:</p><div class="codebox"><pre><code>Xl.Cells(row, 1).Value := &quot;R&quot; . row . &quot;C&quot; . col</code></pre></div><p>Так тоже работает:</p><div class="codebox"><pre><code>Xl.Cells(row, A_Index).Value := &quot;R&quot; . row . &quot;C&quot; . col</code></pre></div><p>Почему я не могу использовать переменную в качестве второго параметра? <br />И почему могу - в качестве первого? <br />И почему таки могу в качестве второго, если ее имя - A_Index?</p>]]></description>
			<author><![CDATA[null@example.com (KepocuH)]]></author>
			<pubDate>Wed, 21 Apr 2021 16:21:17 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=147459#p147459</guid>
		</item>
	</channel>
</rss>
