VBAの知恵をお貸しください… 下記のコードでエラーが出てうまく動かないのですが…何が悪いのでしょうか…

Visual Basic | Excel57閲覧xmlns="http://www.w3.org/2000/svg">250

ベストアンサー

0

言われてみて初めて気が付きました。ブックの表記が重複していますね。 シート表記だけで動かしてみたらエラーは吐かなくなりました。有難うございます。

ThanksImg質問者からのお礼コメント

皆様回答ありがとうございました。 基礎的な部分をもっと勉強していきます。

お礼日時:5/17 17:56

その他の回答(3件)

0

プログラムが長いのが気になります。 G3=11 → D7 G3=12 → E7 G3=1 → F7 G3=2 → G7 G3=3 → H7 G3=4 → I7 G3=5 → J7 G3=6 → K7 G3=7 → L7 G3=8 → M7 G3=9 → N7 G3=10 → O7 をしたいのなら、 Option Explicit ' Sub Macro1()     Dim Colu As Integer '     Colu = ([G3] + 1) Mod 12 + 4     Cells(7, Colu).Select End Sub だけでいいです。 (何をしたいのか判らないので、Selectにしました) Cells を使えば、列を数字で指定できます。

0

式で使用している変数が正しいと仮定して Select CASE wb2.sh2.Range("G3").Value CASE 1 P = F CASE 2 P = G CASE 3 P = H CASE 4 P = I CASE 5 P = J CASE 6 P = K CASE 7 P = L CASE 8 P = M CASE 9 P = N CASE 10 P = O CASE 11 P = D CASE 12 P = E End Select ただし上記だと、Pという変数に、何を代入しているのかが意味不明ですね。 A~O は何を意味しているのかが意味不明。 ------------------- または DIM A(1 TO 12) A(1) = F A(2) = G A(3) = H A(4) = I A(5) = J A(6) = K A(7) = L A(8) = M A(9) = N A(10) = O A(11) = D A(12) = E P=A(wb2.sh2.Range("G3").Value) ----------------- ただし、p=で始まる式の A~O は何を意味しているのかが意味不明。 本来なら If wb2.sh2.Range("G3") = 11 Then p = "D" ElseIf wb2.sh2.Range("G3") = 12 Then p = "E" ElseIf wb2.sh2.Range("G3") = 1 Then p = "F" ElseIf wb2.sh2.Range("G3") = 2 Then p = "G" ElseIf wb2.sh2.Range("G3") = 3 Then p = "H" ElseIf wb2.sh2.Range("G3") = 4 Then p = "i" ElseIf wb2.sh2.Range("G3") = 5 Then p = "J" ElseIf wb2.sh2.Range("G3") = 6 Then p = "K" ElseIf wb2.sh2.Range("G3") = 7 Then p = "L" ElseIf wb2.sh2.Range("G3") = 8 Then p = "M" ElseIf wb2.sh2.Range("G3") = 9 Then p = "N" ElseIf wb2.sh2.Range("G3") = 10 Then p = "O" End If とすべきなのでは? セルの列を指定する話では無いかと思いますが、そもそもの話として、 何をしたいのかが判らないので、式だけでの推測回答になってしまいます。 規則性のある式になるので、キャラクターコード、セル番地などを屈指して行えばもっと短いし気になるかと思います。 「A」のコードはCHR(65)なので、

DIM A(1 TO 12) A(1) = "F" A(2) = "G" A(3) = "H" A(4) = "I" A(5) = "J" A(6) = "K" A(7) = "L" A(8) = "M" A(9) = "N" A(10) = "O" A(11) = "D" A(12) = "E" P=A(wb2.sh2.Range("G3").Value) Pという変数に「E」~「O」までのアルファベットを代入するならこれでOKかな。 12月ならE列を・・・などの意味なのかな・・・・。

0

アルファベットは変数じゃなくて文字列ってことですか? それなら変数pはstringで宣言しないといけないですし 代入するときにp="D"のようにしないとダメです。 あと気になったのは"11"のようになってますが そこは本当に文字列の11なのでしょうか。 数値ならば11としないとダメです。

回答ありがとうございます。 そうです。文字列です。 宣言と、ダブルクォーテーションが必要だったのですね。 11等は文字列で入力されています。 回答を頂きまして早速変更しましたが、同じ位置でエラーが出ます。 また、続くコードでは wb1.sh.Range("p" & 7) = wb2.sh2.Range("H6") このようなものがつづきまして最後にEnd Subは書いております。