毎度お世話になります。
先日も同じような質問をさせていただいたのですが、
パターンが替わると手も足も出ません。
Dim myweek As Integer
myweek = Worksheets(Sheets.Count).Range("A1").Value
Worksheets(Array("○○第" + myweek + "週", " ◇◇第+ myweek + "週")).Select
という具合にシート名の週の数字だけを変数にしようとしていますが、うまくいきません。
指摘と修正お願いします。
補足Range("A1")には数字が入っています。
○○、◇◇は固有名詞です。
No.4ベストアンサー
- 回答日時:
> Worksheets(Array("○○第" + myweek + "週", " ◇◇第+ myweek + "週")).Select
まず、
> " ◇◇第
半角スペースが入っちゃってるのはタイプミスでしょうけれど、
"◇◇第"
ダブルクォートを閉じないと文字列として完結しません。
次に文字列の連結には「&」記号を使うのが一般的ですし、
間違いが少なくなります。
以上を踏まえると、
Worksheets(Array("○○第" & myweek & "週", "◇◇第" & myweek & "週")).Select
となり、
変数部分を■で表すと
○○第■週
◇◇第■週
という名前の2つのワークシートを同時に選択することになります。
条件として元の値が32767以下の正の整数、もしくは、
同等に評価できる文字列(数字にみえる文字列)でなければなりません。
原則に忠実な考え方として、文字列に連結するのは文字列ですから、
Integer型の変数をString型に変換しながら連結するような書き方もあります。
Worksheets(Array("○○第" & CStr(myweek) & "週", "◇◇第" & CStr(myweek) & "週")).Select
ただし、これはVBAではあまり一般的な書き方ではありません。
都度、変数の型を直さなくても自動的に変換されて連結できますし、
これはレアケースとして曖昧さが許される部分と思ってもらって良いと思います。
多くの場合、同じプロシージャの中で数値処理も併せて実行することがありますが、
そんな時は数値(といってもIntegerとLongに限りますが)
で宣言することを優先しておけば間違いが少ないと思います。
これはもう少し習熟が進んだ時の課題という言い方になりますが、
元となる.Valueが数値として読めるものなのかどうかを評価する必要がある、
ような場合だとVariantで宣言しないとなりません。
例えば元の値が数字ではない文字列なら、
Integer型の変数に格納する時点でエラーになる訳です。
しかし、
こういうエラーを経験することはVBAを習得する上で必要なプロセスだと
私は考えるので、是非Integer(必要ならLong)で実践してみてください。
つまり概ねIntegerで合っているし、お奨めしますよ、
という話です。
No.5
- 回答日時:
>Worksheets(Array("○○第" + myweek + "週", " ◇◇第+ myweek + "週")).Select
上記のように多くの文字列結合すると
慣れないうちはこんがらがってしまうでしょうから
シート名もそれぞれ変数にすれば分かりやすいと思いますが。。
'-----------------------------------------
Sub Test222()
Dim myWeek As Integer
myWeek = Worksheets(Sheets.Count).Range("A1").Value
Dim Sht1 As String
Dim Sht2 As String
Dim Sht3 As String
Sht1 = "●●第" & myWeek & "週"
Sht2 = "■■第" & myWeek & "週"
Sht3 = "▲▲第" & myWeek & "週"
Worksheets(Array(Sht1, Sht2, Sht3)).Select
End Sub
'-----------------------------------------------
Sub Test333()
Dim myWeek As Integer
myWeek = Worksheets(Sheets.Count).Range("A1").Value
Dim Sht(2) As String
Sht(0) = "●●第" & myWeek & "週"
Sht(1) = "■■第" & myWeek & "週"
Sht(2) = "▲▲第" & myWeek & "週"
Worksheets(Sht).Select
End Sub
'---------------------------------------------
それから文字列の結合は、&を使う方がベター。
No.3
- 回答日時:
>"○○第" + myweek + "週"
↑でエラーになっていませんか?
VBAでの文字列連結を
"○○第" & myweek & "週"
のようにするとどうでしょうか?
(正確には、integerのmyweekを文字に変換にして…となるのでしょうが、
VBAが計算時に型変換してくれますね。)
No.2
- 回答日時:
"○○第" + myweek + "週", " ◇◇第+ myweek + "週"
は
"○○第" & myweek & "週", " ◇◇第" & myweek & "週"
の間違いでしょうが、
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Excel(エクセル) vba シート名の一覧を2列に分けるには 5 2023/04/24 08:56
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Excel(エクセル) vbaで列幅について 1 2022/11/15 08:31
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
夫婦の営みについて
-
週3日以上~と言う事は週3もO...
-
パート勤務、土日休みが条件だ...
-
大学生のアルバイトは週に何日...
-
1週間にだいたい1〜2回、長文LI...
-
週3日からと書いてあるパートの...
-
パートの有給休暇について 副業...
-
初出勤日を間違えました
-
ステーキ宮での出勤退勤時での...
-
障害者雇用のお仕事を探してる...
-
2022年10月からの扶養内勤務(...
-
職場から急に休むように言われ...
-
障害者雇用で週2日から働きたい...
-
マクドナルドを他の店舗と兼任...
-
コンビニ店員 有給がもらえない...
-
バイトのシフト減らす交渉、1回...
-
週3・一日4~5時間で働きた...
-
誰か褒めて欲しいです。
-
有給休暇が勤務時間に含まれる...
-
再来週、おととい、先々週、明...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
夫婦の営みについて
-
週3日以上~と言う事は週3もO...
-
パート勤務、土日休みが条件だ...
-
大学生のアルバイトは週に何日...
-
職場から急に休むように言われ...
-
障害者雇用のお仕事を探してる...
-
コンビニ店員 有給がもらえない...
-
誰か褒めて欲しいです。
-
コメダ珈琲をよく利用しますか?
-
病気で休んだ場合振替出勤の強...
-
週3・一日4~5時間で働きた...
-
アルバイトで振替出勤の質問で...
-
50代の方に質問です。昔は週6...
-
パート週2程度よりの意味!!
-
スイミング 週2だと上達は?
-
障害者雇用で週2日から働きたい...
-
マクドナルドを他の店舗と兼任...
-
面接のときに、週4希望を出して...
-
Wワークの労働基準法違反
-
愛子様の初任給が13万と雑誌に...
おすすめ情報