Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8851 / 13644 ツリー ←次へ | 前へ→

【30720】解説お願いします。 じっちょう 05/11/3(木) 23:14 質問[未読]
【30721】Re:解説お願いします。 かみちゃん 05/11/3(木) 23:19 発言[未読]
【30732】Re:解説お願いします。 じっちょう 05/11/4(金) 8:51 お礼[未読]

【30720】解説お願いします。
質問  じっちょう  - 05/11/3(木) 23:14 -

引用なし
パスワード
   Sub TEST6_2()
  Dim S1 As Worksheet, S2 As Worksheet
  Dim vntArray As Variant
  Dim GYO As Long, COL As Long
  Dim GYO2 As Long, COL2 As Long, IX As Long
  
  Set S1 = Worksheets("Sheet1")
  Set S2 = Worksheets("Sheet2")
  ' 4行×3列の場合の配置の配列を作成
  vntArray = Array("11", "12", "13", _
           "21", "22", "23", _
           "31", "32", "33", _
           "41", "42", "43")
  ' 1セルずつ配置を変更して転記
  IX = 0
  ' 行のループ
  For GYO = 1 To 3
    ' カラムのループ
    For COL = 1 To 4
      ' 転記先の行列を判定
      GYO2 = CLng(Left$(vntArray(IX), 1))
      COL2 = CLng(Right$(vntArray(IX), 1))
      ' 単一セルの転記
      S2.Cells(GYO2, COL2).Value = S1.Cells(GYO, COL).Value
      ' インデックスを加算
      IX = IX + 1
    Next COL
  Next GYO
End Sub
サンプルなのですが、上記のマクロについて質問があります。
GYO2 = CLng(Left$(vntArray(IX), 1))
COL2 = CLng(Right$(vntArray(IX), 1))
の部分で、ウォッチ式でステップ実行していくと、IXが0であるため、
vntArrayが11という値は理解できるのですが、
GYO2やCOL2になぜ値1が入るのか理解できません。
どなたか解説お願いします。

【30721】Re:解説お願いします。
発言  かみちゃん  - 05/11/3(木) 23:19 -

引用なし
パスワード
   こんにちは。かみちゃん です。

> GYO2 = CLng(Left$(vntArray(IX), 1))
> COL2 = CLng(Right$(vntArray(IX), 1))
>の部分で、ウォッチ式でステップ実行していくと、IXが0であるため、
>vntArrayが11という値は理解できるのですが、
>GYO2やCOL2になぜ値1が入るのか理解できません。

vntArrayが11ということがおわかりなら、
Left$(11,1)
Right$(11,1)
がわからないということでしょうか?
Left関数、Right関数のヘルプをご確認ください。

【30732】Re:解説お願いします。
お礼  じっちょう  - 05/11/4(金) 8:51 -

引用なし
パスワード
   かみちゃんさん回答有難うございました。
結局、ウォッチ式の数字にとらわれて
代入せずに考えてしまったことや、
その為にLeftやRightといった関数を見逃して
いたのが原因でした。
有難うございました。

8851 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free