Dim gyo For gyo = 2 To 11 name = Range("b" & gyo).Value slush = InStr(name, "/") If name = 0 Then slush = InStr(name, " ") End If Range("C" & gyo).Value = Left(name, slush-1) Range("D" & gyo).Value = Mid(name, slush + 1)
Next End Sub
2019/01/30 14:59
小川 慶一さんのコメント
(コメントID: 5969)
受講生 さん:
次回からは、相談時は、実際に作ったコードをまるまる貼り付けてください。 最初の行は sub となっています。 そこから、少なくともこの部分はあとから手書きで追加したものではないか?と推測しました。 それで、こういうお願いを書いています。
プログラムの修正点は、以下のプロシージャ内に僕がしたコメントを参照ください。
sub renshu2()
Dim slush
Dim name
Dim gyo
For gyo = 2 To 11
name = Range("b" & gyo).Value
slush = InStr(name, "/")
If name = 0 Then '調査対象は、 変数 name ではなく、変数 slush
slush = InStr(name, " ")
End If
Range("C" & gyo).Value = Left(name, slush-1)
Range("D" & gyo).Value = Mid(name, slush + 1)
Next
End Sub
sub renshu2()
> Dim slush
> Dim name
>
> Dim gyo
> For gyo = 2 To 11
> name = Range("b" & gyo).Value
> slush = InStr(name, "/")
> If name = 0 Then '調査対象は、 変数 name ではなく、変数 slush
> slush = InStr(name, " ")
> End If
> Range("C" & gyo).Value = Left(name, slush-1)
> Range("D" & gyo).Value = Mid(name, slush + 1)
>
> Next
> End Sub
> > それから、以下は、このプログラムについての追加コメントです。 > > [1] > インデントしっかり入れてください。僕が書いたコードと同じになるように。 > 昨日のメールマガジンでも書きましたが、僕の動きをそのままマネることです。 > 今回の問題をご自身で見破れないのも、整形がなっていないために、コードが読みにくい状態になっているからです。 > > [2] > 変数名に英単語一語のものを使うのは避けましょう。 > 以下の2つの理由からです。 > > [2-1] > VBAで実際に使われているキーワードと重複する可能性が高いからです。 > 「name」というのは、まさに、worksheetオブジェクトのプロパティに存在します。 > そういう変数名を使うのは、混乱や思わぬ誤動作の元です。 > > [2-2] > スペルをミスすると、バカに見えるからです。 > 参考までに、「スラッシュ」は、英語では、「slush」ではなく、「slash」と書きます。 > ひょっとすると英語での意図的に「slush」と書かれたのかもしれませんが、このプログラムはその他の部分から醸し出される雰囲気がダメぽいので、残念ながらそうは思ってもらえないでしょう。 > > ということなのでおすすめは: > name → namae > slush → kugiri > とかですかね。 > > よろしくお願いいたします。 > > > > お世話になります。問題3について質問させてください。 > > 下記のようにコードを書きました。小川先生と同じように書いたつもりですが、動きません。実行時エラー5と表示されます。そこで試しにRange("C" & gyo).Value = Left(name, slush - 1)をRange("C" & gyo).Value = Left(name, slush )としたところ、動くようになりました(/は入ってしまいますが)。今回のコードにはもう1つ問題があります。半角空欄を認識していません。なぜダメなのかお手数ですが、ご回答お願いいたします。 > > > > sub renshu2() > > Dim slush > > Dim name > > > > Dim gyo > > For gyo = 2 To 11 > > name = Range("b" & gyo).Value > > slush = InStr(name, "/") > > If name = 0 Then > > slush = InStr(name, " ") > > End If > > Range("C" & gyo).Value = Left(name, slush-1) > > Range("D" & gyo).Value = Mid(name, slush + 1) > > > > Next > > End Sub > > > >
受講生さんの投稿
(投稿ID: 4344)
下記のようにコードを書きました。小川先生と同じように書いたつもりですが、動きません。実行時エラー5と表示されます。そこで試しにRange("C" & gyo).Value = Left(name, slush - 1)をRange("C" & gyo).Value = Left(name, slush )としたところ、動くようになりました(/は入ってしまいますが)。今回のコードにはもう1つ問題があります。半角空欄を認識していません。なぜダメなのかお手数ですが、ご回答お願いいたします。
sub renshu2()
Dim slush
Dim name
Dim gyo
For gyo = 2 To 11
name = Range("b" & gyo).Value
slush = InStr(name, "/")
If name = 0 Then
slush = InStr(name, " ")
End If
Range("C" & gyo).Value = Left(name, slush-1)
Range("D" & gyo).Value = Mid(name, slush + 1)
Next
End Sub
小川 慶一さんのコメント
(コメントID: 5969)
次回からは、相談時は、実際に作ったコードをまるまる貼り付けてください。
最初の行は sub となっています。
そこから、少なくともこの部分はあとから手書きで追加したものではないか?と推測しました。
それで、こういうお願いを書いています。
プログラムの修正点は、以下のプロシージャ内に僕がしたコメントを参照ください。
それから、以下は、このプログラムについての追加コメントです。
[1]
インデントしっかり入れてください。僕が書いたコードと同じになるように。
昨日のメールマガジンでも書きましたが、僕の動きをそのままマネることです。
今回の問題をご自身で見破れないのも、整形がなっていないために、コードが読みにくい状態になっているからです。
[2]
変数名に英単語一語のものを使うのは避けましょう。
以下の2つの理由からです。
[2-1]
VBAで実際に使われているキーワードと重複する可能性が高いからです。
「name」というのは、まさに、worksheetオブジェクトのプロパティに存在します。
そういう変数名を使うのは、混乱や思わぬ誤動作の元です。
[2-2]
スペルをミスすると、バカに見えるからです。
参考までに、「スラッシュ」は、英語では、「slush」ではなく、「slash」と書きます。
ひょっとすると英語での意図的に「slush」と書かれたのかもしれませんが、このプログラムはその他の部分から醸し出される雰囲気がダメぽいので、残念ながらそうは思ってもらえないでしょう。
ということなのでおすすめは:
name → namae
slush → kugiri
とかですかね。
よろしくお願いいたします。
> お世話になります。問題3について質問させてください。
> 下記のようにコードを書きました。小川先生と同じように書いたつもりですが、動きません。実行時エラー5と表示されます。そこで試しにRange("C" & gyo).Value = Left(name, slush - 1)をRange("C" & gyo).Value = Left(name, slush )としたところ、動くようになりました(/は入ってしまいますが)。今回のコードにはもう1つ問題があります。半角空欄を認識していません。なぜダメなのかお手数ですが、ご回答お願いいたします。
>
> sub renshu2()
> Dim slush
> Dim name
>
> Dim gyo
> For gyo = 2 To 11
> name = Range("b" & gyo).Value
> slush = InStr(name, "/")
> If name = 0 Then
> slush = InStr(name, " ")
> End If
> Range("C" & gyo).Value = Left(name, slush-1)
> Range("D" & gyo).Value = Mid(name, slush + 1)
>
> Next
> End Sub
>
>
受講生さんのコメント
(コメントID: 5970)
英語を使わない理由がわかりました。その他についてもいただいたアドバイスを参考にいたします。
小川慶一さん:
> 受講生 さん:
>
> 次回からは、相談時は、実際に作ったコードをまるまる貼り付けてください。
> 最初の行は sub となっています。
> そこから、少なくともこの部分はあとから手書きで追加したものではないか?と推測しました。
> それで、こういうお願いを書いています。
>
> プログラムの修正点は、以下のプロシージャ内に僕がしたコメントを参照ください。
>
>
>
> それから、以下は、このプログラムについての追加コメントです。
>
> [1]
> インデントしっかり入れてください。僕が書いたコードと同じになるように。
> 昨日のメールマガジンでも書きましたが、僕の動きをそのままマネることです。
> 今回の問題をご自身で見破れないのも、整形がなっていないために、コードが読みにくい状態になっているからです。
>
> [2]
> 変数名に英単語一語のものを使うのは避けましょう。
> 以下の2つの理由からです。
>
> [2-1]
> VBAで実際に使われているキーワードと重複する可能性が高いからです。
> 「name」というのは、まさに、worksheetオブジェクトのプロパティに存在します。
> そういう変数名を使うのは、混乱や思わぬ誤動作の元です。
>
> [2-2]
> スペルをミスすると、バカに見えるからです。
> 参考までに、「スラッシュ」は、英語では、「slush」ではなく、「slash」と書きます。
> ひょっとすると英語での意図的に「slush」と書かれたのかもしれませんが、このプログラムはその他の部分から醸し出される雰囲気がダメぽいので、残念ながらそうは思ってもらえないでしょう。
>
> ということなのでおすすめは:
> name → namae
> slush → kugiri
> とかですかね。
>
> よろしくお願いいたします。
>
>
> > お世話になります。問題3について質問させてください。
> > 下記のようにコードを書きました。小川先生と同じように書いたつもりですが、動きません。実行時エラー5と表示されます。そこで試しにRange("C" & gyo).Value = Left(name, slush - 1)をRange("C" & gyo).Value = Left(name, slush )としたところ、動くようになりました(/は入ってしまいますが)。今回のコードにはもう1つ問題があります。半角空欄を認識していません。なぜダメなのかお手数ですが、ご回答お願いいたします。
> >
> > sub renshu2()
> > Dim slush
> > Dim name
> >
> > Dim gyo
> > For gyo = 2 To 11
> > name = Range("b" & gyo).Value
> > slush = InStr(name, "/")
> > If name = 0 Then
> > slush = InStr(name, " ")
> > End If
> > Range("C" & gyo).Value = Left(name, slush-1)
> > Range("D" & gyo).Value = Mid(name, slush + 1)
> >
> > Next
> > End Sub
> >
> >
小川 慶一さんのコメント
(コメントID: 5971)
お返事ありがとうございます。
特にインデントについては、遠回りなようで、最終的に近道です。
ひきつづきよろしくお願いいたします。
> お世話になります。ご回答ありがとうございました。
>
> 英語を使わない理由がわかりました。その他についてもいただいたアドバイスを参考にいたします。
>
> 小川慶一さん:
>
> > 受講生 さん:
> >
> > 次回からは、相談時は、実際に作ったコードをまるまる貼り付けてください。
> > 最初の行は sub となっています。
> > そこから、少なくともこの部分はあとから手書きで追加したものではないか?と推測しました。
> > それで、こういうお願いを書いています。
> >
> > プログラムの修正点は、以下のプロシージャ内に僕がしたコメントを参照ください。
> >
> >
> >
> > それから、以下は、このプログラムについての追加コメントです。
> >
> > [1]
> > インデントしっかり入れてください。僕が書いたコードと同じになるように。
> > 昨日のメールマガジンでも書きましたが、僕の動きをそのままマネることです。
> > 今回の問題をご自身で見破れないのも、整形がなっていないために、コードが読みにくい状態になっているからです。
> >
> > [2]
> > 変数名に英単語一語のものを使うのは避けましょう。
> > 以下の2つの理由からです。
> >
> > [2-1]
> > VBAで実際に使われているキーワードと重複する可能性が高いからです。
> > 「name」というのは、まさに、worksheetオブジェクトのプロパティに存在します。
> > そういう変数名を使うのは、混乱や思わぬ誤動作の元です。
> >
> > [2-2]
> > スペルをミスすると、バカに見えるからです。
> > 参考までに、「スラッシュ」は、英語では、「slush」ではなく、「slash」と書きます。
> > ひょっとすると英語での意図的に「slush」と書かれたのかもしれませんが、このプログラムはその他の部分から醸し出される雰囲気がダメぽいので、残念ながらそうは思ってもらえないでしょう。
> >
> > ということなのでおすすめは:
> > name → namae
> > slush → kugiri
> > とかですかね。
> >
> > よろしくお願いいたします。
> >
> >
> > > お世話になります。問題3について質問させてください。
> > > 下記のようにコードを書きました。小川先生と同じように書いたつもりですが、動きません。実行時エラー5と表示されます。そこで試しにRange("C" & gyo).Value = Left(name, slush - 1)をRange("C" & gyo).Value = Left(name, slush )としたところ、動くようになりました(/は入ってしまいますが)。今回のコードにはもう1つ問題があります。半角空欄を認識していません。なぜダメなのかお手数ですが、ご回答お願いいたします。
> > >
> > > sub renshu2()
> > > Dim slush
> > > Dim name
> > >
> > > Dim gyo
> > > For gyo = 2 To 11
> > > name = Range("b" & gyo).Value
> > > slush = InStr(name, "/")
> > > If name = 0 Then
> > > slush = InStr(name, " ")
> > > End If
> > > Range("C" & gyo).Value = Left(name, slush-1)
> > > Range("D" & gyo).Value = Mid(name, slush + 1)
> > >
> > > Next
> > > End Sub
> > >
> > >