アプリ版:「スタンプのみでお礼する」機能のリリースについて

他の人が作成したVBAのコードを解読しているのですが、下記意味を教えてください。
If .Cells(i, cntcol) = "TO" Then

質問者からの補足コメント

  • 黄色くエラーになってしまっているのですが、どこが間違っているのか原因不明で教えてください。
    コードは下記のように設定されています。
    元のエクセル添付しました。

    「VBAコード意味を教えてください。「If」の補足画像1
      補足日時:2017/11/07 19:00
  • そもそもの理解がない中で質問をしており申しわけありません。

    コードは下記のように入力されております。
    文字数の関係で分割させていただきます。

    '#####宛先作成ルーチン_TO
    Sub MakeTO()

    With Sheets("宛先リスト(追加はこちらへ)")


    'メールアドレスTO取得
    Set Dic = CreateObject("Scripting.Dictionary")

    For i = 5 To .Range("E65536").End(xlUp).Row

    No.3の回答に寄せられた補足コメントです。 補足日時:2017/11/08 12:12
  • If .Cells(i, cntcol) = "TO" Then
    buf = .Cells(i, 5).Value
    If Not Dic.Exists(buf) Then
    Dic.Add buf, ""
    End If

    End If

    Next i
    'セミコロンで接続
    keys = Dic.keys
    fil = Join(keys, ";")
    Set Dic = Nothing
    End With

    End Sub

      補足日時:2017/11/08 12:14

A 回答 (6件)

i行,cntcol列のセルの中身が「TO」だったら、・・・・。

    • good
    • 0

「.cells」ということは上に「With sheets(シート名等)」があるのでしょう。


内容は、
もし、そのシートの行(Row)番号i、列(Column)番号cntcolのセルの内容が”TO"(←文字列です)だったら(Then)
という意味です。
i と  cntcol はLong型(またはInter型)で
cntcol = 定数かな?
for i=○○ to ××
next
のように指定していると思います。 

一応If文の説明
If (条件) then
条件が成り立つ場合(True)の処理
.....
else  ’必要の無い場合はありません
それ以外(False)の処理
End If

となっているはずです。
    • good
    • 0

No.2です。


”TO”の場合は問題なく動作するのですね?
>黄色くエラーになってしまっているのですが、
「セルB5」のことでしょうか?
セルB5は”CC”ですので、(当然”TO”ではありません。つまり)前回の回答の「Else」の処理部分にエラーの原因があるのしょう。
>コードは下記のように設定されています。
コード(命令文)はどこでしょうか?
Else~EndIf
のコードがわからないと、どうにもなりません。
または、Elseの前に「Exit ○○」のように処理を抜け出している場合は、EndIf 以降の場合も考えれらます。
「黄色くエラー」がコードの事でしたら、そのコードがエラーを起こしていると思われますが、おそらくその部分だけを示されても、解決には至らないと思います。
この回答への補足あり
    • good
    • 0

んーー。

。ためしに
If .Cells(i, countcol) = "TO" Then
に直してみてください。

「cntcol」は変数だと思われるので、冒頭に(Dim countcol As 〇〇〇)といった
変数宣言があるはずです。

「col」はcolumn(列)の略だと思われます。
「cnt」はcount(カウント)のスペルミスだと推察します。

今まで動いていたのにエラーが出るということなら、おそらく何かの拍子に
countのouが消えてしまったのでしょう。
    • good
    • 0

.Cells(i, cntcol) でiはfor文のiだから良いけど、


cntcolはどこにもセットされていない。列番号なんだけどB列だから値は2の筈。

また、見る限り
For i = 5 To ・・・は
For i = 4 To・・・で無いといけないけど。
    • good
    • 0

「CreateObject("Scripting.Dictionary")」は使ったことが有りません。



怪しいのは
「Dic.Add buf, ""」

参考になりそうなのは、ここですかね。
質問者さんは、ここを読んで、どれくらい理解できますか。
「No.17 VBAで連想配列 ~ Scripting.Dictionary」
http://www.niji.or.jp/home/toru/notes/17.html

「ちんぷんかんぷん」であったなら、力不足です。

あとは、
>'セミコロンで接続
>keys = Dic.keys
>fil = Join(keys, ";")
一回しか処理していないのに、この構文で接続できるのでしょうか。
そのほか
countcol の値が0になっていませんか。(定義が見当たりません)

漠然と、「エラーが出ます」だけでは、開発者でもない者に原因は見当もつきません。
「何をしたのか」すら分からないのです。

ところで、DEBUG や ウォッチウィンドウ はご存知しょうか。
通常はこれらを駆使して怪しいところを確認しながら、エラーの原因を取り除きます。

当初の質問と内容がだいぶ変わってきてますので、もうそろそろ締め切った方がよさそうです。

次は、エラーの原因を生んでいる行(おそらく黄色になっている)と、それを含む構文を示して、新たに質問することをお勧めします。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!