Excel VBA質問箱 IV

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

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


5542 / 13645 ツリー ←次へ | 前へ→

【50227】変数の処理 ユニフ 07/7/14(土) 23:07 質問[未読]
【50228】Re:変数の処理 かみちゃん 07/7/14(土) 23:14 発言[未読]
【50230】Re:変数の処理 ユニフ 07/7/14(土) 23:30 お礼[未読]
【50232】Re:変数の処理 かみちゃん 07/7/14(土) 23:39 発言[未読]
【50233】Re:変数の処理 ユニフ 07/7/14(土) 23:48 質問[未読]
【50234】Re:変数の処理 かみちゃん 07/7/15(日) 0:02 発言[未読]
【50229】Re:変数の処理 ichinose 07/7/14(土) 23:27 発言[未読]
【50231】Re:変数の処理 ユニフ 07/7/14(土) 23:36 お礼[未読]

【50227】変数の処理
質問  ユニフ  - 07/7/14(土) 23:07 -

引用なし
パスワード
   皆様こんばんは。以下のコードで

Sub vlook書き込み()
  Dim x As Integer

  For x = 0 To 49
   Cells(4 + x, 1).Formula = "=VLOOKUP(1+x,デタベス!$A$3:$S$100,7,FALSE)"
     Next x

End Sub
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

=VLOOKUP(1+x,の部分が =VLOOKUP(1 =VLOOKUP(2 VLOOKUP(3
と書き込んでいって欲しいのですが、全部=VLOOKUP(1+x
と書き込んでしまわれるので困っています。

どうしたらちゃんと変化して書き込んでくれますでしょうか?

【50228】Re:変数の処理
発言  かみちゃん  - 07/7/14(土) 23:14 -

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

>   Cells(4 + x, 1).Formula = "=VLOOKUP(1+x,デタベス!$A$3:$S$100,7,FALSE)"

   Cells(4 + x, 1).Formula = "=VLOOKUP(" & 1 + x & ",デタベス!$A$3:$S$100,7,FALSE)"

の違いがわかりますか?

>=VLOOKUP(1+x,の部分が =VLOOKUP(1 =VLOOKUP(2 VLOOKUP(3
>と書き込んでいって欲しいのですが、全部=VLOOKUP(1+x
>と書き込んでしまわれるので困っています。

変数と数式の文字列の使い分けができていません。
" " で囲ってしまうと、その中は、文字列になります。

x = 1
MsgBox "=VLOOKUP(1+x"
MsgBox "=VLOOKUP(" & 1 + x
で、その違いをよく確認してみましょう。

【50229】Re:変数の処理
発言  ichinose  - 07/7/14(土) 23:27 -

引用なし
パスワード
   ▼ユニフ さん:
こんばんは。

ループ処理(For〜Next文)を使うなら

>Sub vlook書き込み()
>  Dim x As Integer
>
>  For x = 0 To 49
   Cells(4 + x, 1).Formula = "=VLOOKUP(" & 1+x & ",デタベス!$A$3:$S$100,7,FALSE)"
>     Next x
>
>End Sub
>\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

ですが、私はこの場合なら

Sub vlook書き込み2()

  With Range("a4:a53")
   .Formula = "=VLOOKUP(row()-" & _
          .Row - 1 & ",デタベス!$A$3:$S$100,7,FALSE)"
   End With
End Sub


とすることの方が多いです。

【50230】Re:変数の処理
お礼  ユニフ  - 07/7/14(土) 23:30 -

引用なし
パスワード
   かみちゃん さん、毎度どうもありがとうございます。

>   Cells(4 + x, 1).Formula = "=VLOOKUP(" & 1 + x & ",デタベス!$A$3:$S$100,7,FALSE)"

で、うまくいきました。

>変数と数式の文字列の使い分けができていません。
>" " で囲ってしまうと、その中は、文字列になります。

そうでしたか。Formulaメソッドを使っているんだから数式と認識されているはずだ
と思い込んでいました。

>x = 1
>MsgBox "=VLOOKUP(1+x"
>MsgBox "=VLOOKUP(" & 1 + x
>で、その違いをよく確認してみましょう。

わかりました。上の場合は1+Xと表示され、下の場合2になりました。

早々の回答ありがとうございます。助かりました。

#しかし疑問です。””の中を文字列として扱ってしまうのなら
#.valueでもいいわけで、何で.Formulaがあるのかなと思ってしまいます。

【50231】Re:変数の処理
お礼  ユニフ  - 07/7/14(土) 23:36 -

引用なし
パスワード
   ichinose さん 回答ありがとうございます。

>Sub vlook書き込み2()
>
>  With Range("a4:a53")
>   .Formula = "=VLOOKUP(row()-" & _
>          .Row - 1 & ",デタベス!$A$3:$S$100,7,FALSE)"
>   End With
>End Sub
>
>
>とすることの方が多いです。

私のレベルですと。Withで始まるコードの意味がよくわからない低レベルなことと。
(row()-" & .Row - 1
の辺が高度で特によくわかりません。何で+1じゃなくてー1なんだろう?というレベルです。
もう少しレベルが上がって理解できるまでブックマークしておきます。

【50232】Re:変数の処理
発言  かみちゃん  - 07/7/14(土) 23:39 -

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

>#しかし疑問です。””の中を文字列として扱ってしまうのなら
>#.valueでもいいわけで、何で.Formulaがあるのかなと思ってしまいます。

.Formulaプロパティのヘルプをご確認ください。
「数式バーでの表示と同じ形式で、等号を含む数式を文字列として返します。」
とあると思います。

なお、今回は、変数と文字列の使い分けをわかっていただきたかったので、
その部分に特化したコメントを書きましたが、私もichinoseさんと同様、
ループ処理を津川がに数式を設定することが多いです。

たとえば、以下のような感じにすると、A1〜A3に数式が一括して設定されます。
Sub Samole()
 Range("A1:A3").Formula = "=B1"
End Sub
なお、この場合は、セル位置の相対参照、絶対参照を気をつけて設定する必要
があります。
特に、VLOOKUP関数などの場合は、範囲がずれる可能性もあるので。

【50233】Re:変数の処理
質問  ユニフ  - 07/7/14(土) 23:48 -

引用なし
パスワード
   かみちゃん さん、アドバイスありがとうございます。

なにか理解が進みそうなありがたいレスだなとじっくり
読んでおりますが、
>ループ処理を津川がに数式を設定することが多いです。

の部分はタイプミスではないでしょうか?
一応まじめに津川数式も検索してみましたが見当たらないので。
私にとって貴重なご意見と思いますので、この部分だけ
なんて書こうとしていたのか教えていただけないでしょうか。

【50234】Re:変数の処理
発言  かみちゃん  - 07/7/15(日) 0:02 -

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

>>ループ処理を津川がに数式を設定することが多いです。
>の部分はタイプミスではないでしょうか?

お手数おかけして、大変申し訳ありません。
おっしゃるとおり、投稿時のタイプミスです。
ヘルプにちゃんと書いてあるのに・・・と思いなかせら打ったので。

正しくは、
「ループ処理を使わずに」です。

50音入力で、キーボードの「す」の隣に「か」がありますので、打ち間違いました。

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