Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 11 Pro : Microsoft 365)
数式の結果を利用すると数値が出力されない
投稿日時: 22/09/05 16:32:04
投稿者: wgfyhsudji24w

もし、お分かりになれば、〈皆様への質問〉につきまして、ご助言を頂けますと幸いです。
よろしくお願いいたします。
 
< 状況 >
Excel B〜E列に、A列の文字列何文字目を抽出する数式を入れています。
例:=MID(A1,29,4)
 
F列1行目に、B〜E列の値を利用して、以下ようなの文字列を出力したいと考えます。
 
Test -StartDate "2022/9/5 3:00"
 
1.
以下「& Range("E1") & Chr(58) & "00" 」を含まない※---をマクロに記載すると、数値部分が消えてしまいます。
 
 
Test -StartDate "//"
 
2.
以下「& Range("E1") & Chr(58) & "00" 」を含む※---をマクロに記載すると、構文エラーが出ます。
 
 
 
※---
Sub Test()
 
Worksheets(Sheet1).Range("F1").Value = "Test" & Chr(32) & "-StartDate" & Chr(32) & Chr(34) & Range("B1").Value & Chr(47) & Range("C1").Value & Chr(47) & Range("D1").Value & Chr(32) & Range("E1") & Chr(58) & "00"
 
End Sub
------
 
< 皆様への質問 >
1.B1〜E1には数式入っているため、このままだとF1にB1〜E1の数式の結果のみを出力することは難しいでしょうか。
(一度B1〜E1の数式からコピー→どこかに値としてペースト→ペーストした値を参照してF1に出力する等の処理が必要なのでしょうか)
 
2.構文エラーの出力原因についてご指摘を頂けたら幸いです。
 
よろしくお願いいたします。

回答
投稿日時: 22/09/05 18:52:48
投稿者: simple

Worksheets(Sheet1) → Worksheets("Sheet1") です。
他は読んでいません。

回答
投稿日時: 22/09/05 20:34:32
投稿者: MMYS

下記のようにコードを分解し、それぞれ、想定した値であることを確認しましょう。
 


a = "Test" & Chr(32) & "-StartDate" & Chr(32) & Chr(34)
b = Range("B1").Value & Chr(47)
c = Range("C1").Value & Chr(47)
d = Range("D1").Value & Chr(32)
e = Range("E1").Value & Chr(58) & "00"

Debug.Print a
Debug.Print b
Debug.Print c
Debug.Print d
Debug.Print e

f = a & b & c & d & e
Debug.Print f

Worksheets("Sheet1").Range("F1").Value = f


回答
投稿日時: 22/09/05 22:07:04
投稿者: WinArrow
投稿者のウェブサイトに移動

A1セルには、どの様なデータが入っているんでしょうか?

回答
投稿日時: 22/09/05 22:35:27
投稿者: WinArrow
投稿者のウェブサイトに移動

B1:2022
C1:9
D1:5
E1:3
 
と入力し

引用:

Worksheets(Sheet1).Range("F1").Value = "Test" & Chr(32) & "-StartDate" & Chr(32) & Chr(34) & Range("B1").Value & Chr(47) & Range("C1").Value & Chr(47) & Range("D1").Value & Chr(32) & Range("E1") & Chr(58) & "00"

を実行したが、エラーにはなりませんよ。

回答
投稿日時: 22/09/06 08:44:42
投稿者: simple

質問に当たっては
●実際に動作させたコードをそのままコピーペイストしてください。
  手打ちをして投稿されると、入力ミスが混入してしまって議論が嚙み合いません。
●また、エラーが発生するなら、
・どの行で(この場合は一行しかないですが、一般的なケースで書きます)
・何というエラーメッセージが出るのか、正確に記述してください。
●& Range("E1") & Chr(58) & "00"
を含む含まないでそのような変化があるとも思えませんが、
そうであるなら、プロシージャ名をそれぞれtest1,test2と別にして、
二つのプロシージャーをそれぞれ示してください。
(必ずVBEからコピーペイストして、手打ちは止めてください。)
 
----
以下念のための補足です。
 
Worksheetsを使ってシートを指定するには、
・Worksheets("Sheet1")のように、Worksheets(シート名を表す文字列)とするか、
・Worksheets(1)のように、Worksheets(左からのindex番号(1から始まる整数))とするかです。
Worksheets(Sheet1)は、Sheet1がシートオブジェクトそのものですから、
いずれにも該当せず、型が一致しません、とエラーになります。
単に、
 
Worksheets("Sheet1")と変更すれば、エラーは無くなり、
あとは文字列の作成だからご自分で解決できるものと思い、コメントは控えました。
 
敢えて書けば以下のとおりです。
・式が入っていても、FormulaプロパティではなくValueプロパティを使っているのですから、
  この場合のValue値(この場合文字列でしょう)が取り出されるはずです。
  > 一度B1〜E1の数式からコピー→どこかに値としてペースト
  > →ペーストした値を参照してF1に出力する等の処理が必要なのでしょうか
  といったことは不要です。
  なお、Range("E1")のようにプロパティ名を省略した場合は、
  (デフォルトプロパティである)Valueが指定したものと見なされます。
 
・末尾にChr(34)が抜けていることにも気づくでしょう。
・なお、"をChr(34)とすれば""""のように続けなくてもよいので、便利ではありますが、
  他の文字はあえてChrを使う必要性はありません。
  それが何の文字か直感的にわからないので、可読性が低下するだけだと思いますよ。
 
デバッグに当たっては、既に指摘されている方法を使ってご自分で調べて下さい。
 
こんな風に書くかもしれません。シートの指定については、敢えて省略しました。

Sub Test()
    Range("F1").Value _
            = "Test -StartDate "  _
              & Chr(34) & Range("B1").Value & "/" _
              & Range("C1").Value & "/" _
              & Range("D1").Value & " " _
              & Range("E1").Value & ":00" & Chr(34)
End Sub
提示されたコードの右辺にはシートの指定がないので、以下の点に注意してください。
・標準モジュールに書いたコードなら、
  現在のアクティブシートのセルを参照します。
・シートモジュールに書いたコードなら、
  アクティブシートの如何にかかわらず、コードが書かれたシートが前提になります。
複数のシートを使いわけているなら、右辺のRangeオブジェクトに対しても
シートを指定すべきでしょう。(With ステートメントを使うと良いでしょう)
なお、シートはひとつしかないとか、二つにまたがって使うことは考えられないということなら、
シートの指定は左右とも不要でしょう。

回答
投稿日時: 22/09/06 08:58:42
投稿者: Suzu

1)WorkSheet の指定方法に問題がある
 
 コードそのまま実行すると
 
 実行時エラー '13':
   型が一致しません。
 
   エラーになります。
 
 これは、既に simple さんがご指摘くださっています様に
  Worksheets(Sheet1) の Sheet1 の部分は インデックスとして、
   数字 または ""で括ったシート名 を渡す必要があります。
 
  現状は、"" で括っていないので、シート名ではなく、
  シートのオブジェクトそのものを渡している事になります。
 
   "" で括らなければ、シートオブジェクトになるので
   極端な話 コードとしては
   Sheet1.Range("F1").Value = "Test -StartDate " 〜〜
   でもエラーにはなりません。
 
2) 「" 」の 不足
  【Test -StartDate "2022/9/5 3:00"】これが得たいのでしょうが
   コード中、最後の「"」が抜けています。
 
 
3) 確認を行う
 
 変数や、Rangeの値が 怪しい と思ったなら、それらの値を確認する事を行いましょう。
 
  ステップ実行や、ブレイクポイント等を使い、そのステップの実行中に
    a.値を確認したい変数や、オブジェクトの上にカーソルを移動させる
    b.ローカルウィンドにて 各変数、オブジェクトの確認したいモノを確認
 
  その行の直前に、
    c. Debug.Print 確認したい値
    を入れる
 
  もっと確実には、別に変数を用意し
    d. MMYS さんが提案してくださっている様に、順次変数に値を代入し
       先の a.b.c. のどれかの方法で値を確認
 
  上記を行う事で、値の確認を行う事ができますね。
 
 
4)つまずいたら、理解しやすい方法に置き換えてみる
 
  どこでエラーになっているのか判らないなら、判る様に置き換えてみます。
    ※ 2)の最後の「"」が抜けているのは反映させていません。
      あくまで、思い通りにならない原因がどこにあるのかを明らかにする為の手順の説明です。
 
 Step1
  Worksheets(Sheet1).Range("F1").Value = _
  "Test" & Chr(32) & "-StartDate" & Chr(32) & Chr(34) & Range("B1").Value & Chr(47) & Range("C1").Value & Chr(47) & Range("D1").Value & Chr(32) & Range("E1") & Chr(58) & "00"
   ↓
 Step2 Chr を置き換える
  Worksheets(Sheet1).Range("F1").Value = _
  "Test -StartDate """ & Range("B1").Value & "/" & Range("C1").Value & "/" & Range("D1").Value & " " & Range("E1") & ":" & "00"
  ※赤の Chr(34) の 「"」の置き換えの部分 文字列の中 で「"」を表すには、2つ並べる必要があります
 
   ↓
 Step3 Value を置き換える
   Worksheets(Sheet1).Range("F1").Value = _
     "Test -StartDate """ & 2022 & "/" & 9 & "/" & 5 & " " & 3 & ":" & "00"
 
 Step4 Step3 でも 1)のエラーになるはずです。
  となると、右辺ではなく、左辺の
  「Worksheets(Sheet1).Range("F1").Value」のどこかに問題がある事が判ると思います。
 
---------------------------------------------------------------------------
ご質問の 2. の構文エラー についてですが、
 ○○を含む とか 含まない と言う様な ご質問をされても、
そのステップの構文が間違っていると言うことなので、そのステップ全体を見ないと判断できません。
その部分を明らかにしたいのであれば、そのステップ部分のコード全体を提示ください。

回答
投稿日時: 22/09/06 09:59:35
投稿者: WinArrow
投稿者のウェブサイトに移動

WinArrow さんの引用:
B1:2022
C1:9
D1:5
E1:3
 
と入力し
引用:

Worksheets(Sheet1).Range("F1").Value = "Test" & Chr(32) & "-StartDate" & Chr(32) & Chr(34) & Range("B1").Value & Chr(47) & Range("C1").Value & Chr(47) & Range("D1").Value & Chr(32) & Range("E1") & Chr(58) & "00"

を実行したが、エラーにはなりませんよ。

 
実行したコードが違っていました。
掲示されたコードをそのまま実行したのではなく、
修正したコードを実行していました。
 
皆さんのご指摘通り、エラーになります。

投稿日時: 22/09/06 10:12:31
投稿者: wgfyhsudji24w

MMYS さんの引用:
下記のようにコードを分解し、それぞれ、想定した値であることを確認しましょう。
 

a = "Test" & Chr(32) & "-StartDate" & Chr(32) & Chr(34)
b = Range("B1").Value & Chr(47)
c = Range("C1").Value & Chr(47)
d = Range("D1").Value & Chr(32)
e = Range("E1").Value & Chr(58) & "00"

Debug.Print a
Debug.Print b
Debug.Print c
Debug.Print d
Debug.Print e

f = a & b & c & d & e
Debug.Print f

Worksheets("Sheet1").Range("F1").Value = f



 
ご返答ありがとうございます。
初回投稿時のマクロ修正し、以下マクロ全文より、MMYSさんに頂いたコード分解を試しましたが、J1セルに出力される文言は「Test -StartDate "// :00」となります。理想は、以下A1からの出力なら「Test -StartDate "2022/8/6 2:00"」としたいと思っております。
("等が抜けている事は承知しており、目下問題としているのは、数値が抜けて出力されてしまう事です)
 
なお、A1〜A14まで以下の値が入っております。
 
A1:TestDaysigninlog_20220806_*-20220806_020000-20220806_030000.csv
A2:TestDaysigninlog_20220806_*-20220806_030000-20220806_040000.csv
A3:TestDaysigninlog_20220806_*-20220806_050000-20220806_060000.csv
A4:TestDaysigninlog_20220806_*-20220806_060000-20220806_070000.csv
A5:TestDaysigninlog_20220806_*-20220806_070000-20220806_080000.csv
A6:TestDaysigninlog_20220806_*-20220806_080000-20220806_090000.csv
A7:TestDaysigninlog_20220806_*-20220806_090000-20220806_100000.csv
A8:TestDaysigninlog_20220806_*-20220806_100000-20220806_110000.csv
A9:TestDaysigninlog_20220806_*-20220806_110000-20220806_120000.csv
A10:TestDaysigninlog_20220806_*-20220806_120000-20220806_130000.csv
A11:TestDaysigninlog_20220806_*-20220806_130000-20220806_140000.csv
A12:TestDaysigninlog_20220806_*-20220806_140000-20220806_150000.csv
A13:TestDaysigninlog_20220806_*-20220806_150000-20220806_160000.csv
A14:TestDaysigninlog_20220806_*-20220806_160000-20220806_170000.csv
 
---<実施したマクロ全文>---
  Sub Test()
 
Set wsSheet = ThisWorkbook.Worksheets("Sheet2")
 
wsSheet.Range("B1").Formula = "=MID(A1,29,4)"
wsSheet.Range("C1").Formula = "=MID(A1,34,1)"
wsSheet.Range("D1").Formula = "=MID(A1,36,1)"
wsSheet.Range("E1").Formula = "=MID(A1,39,1)"
wsSheet.Range("F1").Formula = "=MID(A1,45,4)"
wsSheet.Range("G1").Formula = "=MID(A1,50,1)"
wsSheet.Range("H1").Formula = "=MID(A1,52,1)"
wsSheet.Range("I1").Formula = "=MID(A1,55,1)"
 
 
If Trim(wsSheet.Range("A1")) <> "" Then
LastROw = wsSheet.Range("A" & Rows.Count).End(xlUp).Row
wsSheet.Range("B1").AutoFill Destination:=wsSheet.Range("B1:B" & LastROw)
wsSheet.Range("C1").AutoFill Destination:=wsSheet.Range("C1:C" & LastROw)
wsSheet.Range("D1").AutoFill Destination:=wsSheet.Range("D1:D" & LastROw)
wsSheet.Range("E1").AutoFill Destination:=wsSheet.Range("E1:E" & LastROw)
wsSheet.Range("F1").AutoFill Destination:=wsSheet.Range("F1:F" & LastROw)
wsSheet.Range("G1").AutoFill Destination:=wsSheet.Range("G1:G" & LastROw)
wsSheet.Range("H1").AutoFill Destination:=wsSheet.Range("H1:H" & LastROw)
wsSheet.Range("I1").AutoFill Destination:=wsSheet.Range("I1:I" & LastROw)
 
Else
    End If
    
a = "Test" & Chr(32) & "-StartDate" & Chr(32) & Chr(34)
b = Range("B1").Value & Chr(47)
c = Range("C1").Value & Chr(47)
d = Range("D1").Value & Chr(32)
e = Range("E1").Value & Chr(58) & "00"
 
'f = "Test" & Chr(32) & "-EndDate" & Chr(32) & Chr(34)
'g = Range("B1").Value & Chr(47)
'h = Range("C1").Value & Chr(47)
'i = Range("D1").Value & Chr(32)
'j = Range("E1").Value & Chr(58) & "00"
 
 
Debug.Print a
Debug.Print b
Debug.Print c
Debug.Print d
Debug.Print e
 
'Debug.Print f
'Debug.Print g
'Debug.Print h
'Debug.Print i
'Debug.Print j
 
j = a & b & c & d & e
'& f & g & h & i& j
 
 
Debug.Print j
 
wsSheet.Range("J1").Value = j
 
End Sub

投稿日時: 22/09/06 10:13:16
投稿者: wgfyhsudji24w

WinArrow さんの引用:
A1セルには、どの様なデータが入っているんでしょうか?

ご返答ありがとうございます。
A1〜A14まで以下の値が入っております。
 
A1:TestDaysigninlog_20220806_*-20220806_020000-20220806_030000.csv
A2:TestDaysigninlog_20220806_*-20220806_030000-20220806_040000.csv
A3:TestDaysigninlog_20220806_*-20220806_050000-20220806_060000.csv
A4:TestDaysigninlog_20220806_*-20220806_060000-20220806_070000.csv
A5:TestDaysigninlog_20220806_*-20220806_070000-20220806_080000.csv
A6:TestDaysigninlog_20220806_*-20220806_080000-20220806_090000.csv
A7:TestDaysigninlog_20220806_*-20220806_090000-20220806_100000.csv
A8:TestDaysigninlog_20220806_*-20220806_100000-20220806_110000.csv
A9:TestDaysigninlog_20220806_*-20220806_110000-20220806_120000.csv
A10:TestDaysigninlog_20220806_*-20220806_120000-20220806_130000.csv
A11:TestDaysigninlog_20220806_*-20220806_130000-20220806_140000.csv
A12:TestDaysigninlog_20220806_*-20220806_140000-20220806_150000.csv
A13:TestDaysigninlog_20220806_*-20220806_150000-20220806_160000.csv
A14:TestDaysigninlog_20220806_*-20220806_160000-20220806_170000.csv

投稿日時: 22/09/06 10:15:41
投稿者: wgfyhsudji24w

WinArrow さんの引用:
B1:2022
C1:9
D1:5
E1:3
 
と入力し
引用:

Worksheets(Sheet1).Range("F1").Value = "Test" & Chr(32) & "-StartDate" & Chr(32) & Chr(34) & Range("B1").Value & Chr(47) & Range("C1").Value & Chr(47) & Range("D1").Value & Chr(32) & Range("E1") & Chr(58) & "00"

を実行したが、エラーにはなりませんよ。

 
 
値で入力した数値を参照する場合は、エラーにならず引用できるということなのですかね、、
ご確認ありがとうございます。
 
 
 

投稿日時: 22/09/06 10:28:38
投稿者: wgfyhsudji24w

simple さんの引用:
質問に当たっては
●実際に動作させたコードをそのままコピーペイストしてください。
  手打ちをして投稿されると、入力ミスが混入してしまって議論が嚙み合いません。
●また、エラーが発生するなら、
・どの行で(この場合は一行しかないですが、一般的なケースで書きます)
・何というエラーメッセージが出るのか、正確に記述してください。
●& Range("E1") & Chr(58) & "00"
を含む含まないでそのような変化があるとも思えませんが、
そうであるなら、プロシージャ名をそれぞれtest1,test2と別にして、
二つのプロシージャーをそれぞれ示してください。
(必ずVBEからコピーペイストして、手打ちは止めてください。)
 
----
以下念のための補足です。
 
Worksheetsを使ってシートを指定するには、
・Worksheets("Sheet1")のように、Worksheets(シート名を表す文字列)とするか、
・Worksheets(1)のように、Worksheets(左からのindex番号(1から始まる整数))とするかです。
Worksheets(Sheet1)は、Sheet1がシートオブジェクトそのものですから、
いずれにも該当せず、型が一致しません、とエラーになります。
単に、
 
Worksheets("Sheet1")と変更すれば、エラーは無くなり、
あとは文字列の作成だからご自分で解決できるものと思い、コメントは控えました。
 
敢えて書けば以下のとおりです。
・式が入っていても、FormulaプロパティではなくValueプロパティを使っているのですから、
  この場合のValue値(この場合文字列でしょう)が取り出されるはずです。
  > 一度B1〜E1の数式からコピー→どこかに値としてペースト
  > →ペーストした値を参照してF1に出力する等の処理が必要なのでしょうか
  といったことは不要です。
  なお、Range("E1")のようにプロパティ名を省略した場合は、
  (デフォルトプロパティである)Valueが指定したものと見なされます。
 
・末尾にChr(34)が抜けていることにも気づくでしょう。
・なお、"をChr(34)とすれば""""のように続けなくてもよいので、便利ではありますが、
  他の文字はあえてChrを使う必要性はありません。
  それが何の文字か直感的にわからないので、可読性が低下するだけだと思いますよ。
 
デバッグに当たっては、既に指摘されている方法を使ってご自分で調べて下さい。
 
こんな風に書くかもしれません。シートの指定については、敢えて省略しました。
Sub Test()
    Range("F1").Value _
            = "Test -StartDate "  _
              & Chr(34) & Range("B1").Value & "/" _
              & Range("C1").Value & "/" _
              & Range("D1").Value & " " _
              & Range("E1").Value & ":00" & Chr(34)
End Sub
提示されたコードの右辺にはシートの指定がないので、以下の点に注意してください。
・標準モジュールに書いたコードなら、
  現在のアクティブシートのセルを参照します。
・シートモジュールに書いたコードなら、
  アクティブシートの如何にかかわらず、コードが書かれたシートが前提になります。
複数のシートを使いわけているなら、右辺のRangeオブジェクトに対しても
シートを指定すべきでしょう。(With ステートメントを使うと良いでしょう)
なお、シートはひとつしかないとか、二つにまたがって使うことは考えられないということなら、
シートの指定は左右とも不要でしょう。

 
WorkSheetの""が抜けていたこと承知しました、諸々ご指摘ありがとうございます。
また、simpleさんに記載頂いたコードを試しましたら、無事J1セルに「Test -StartDate "2022/8/6 2:00"」を出力することができました!誠にありがとうございます。
妙に一行でダラダラ書くからミスをするのですね、、
 
今後はエラーが出たら分割して確認を行うこと、一行羅列のコードはやめ、また分かりずらいChrの多用はしないことを念頭に置きます。
 
以下コピーペイストした全文を載せます。
 
---<実施したマクロ全文>---
Sub Test()
 
Set wsSheet = ThisWorkbook.Worksheets("Sheet2")
 
wsSheet.Range("B1").Formula = "=MID(A1,29,4)"
wsSheet.Range("C1").Formula = "=MID(A1,34,1)"
wsSheet.Range("D1").Formula = "=MID(A1,36,1)"
wsSheet.Range("E1").Formula = "=MID(A1,39,1)"
wsSheet.Range("F1").Formula = "=MID(A1,45,4)"
wsSheet.Range("G1").Formula = "=MID(A1,50,1)"
wsSheet.Range("H1").Formula = "=MID(A1,52,1)"
wsSheet.Range("I1").Formula = "=MID(A1,55,1)"
 
 
If Trim(wsSheet.Range("A1")) <> "" Then
LastROw = wsSheet.Range("A" & Rows.Count).End(xlUp).Row
wsSheet.Range("B1").AutoFill Destination:=wsSheet.Range("B1:B" & LastROw)
wsSheet.Range("C1").AutoFill Destination:=wsSheet.Range("C1:C" & LastROw)
wsSheet.Range("D1").AutoFill Destination:=wsSheet.Range("D1:D" & LastROw)
wsSheet.Range("E1").AutoFill Destination:=wsSheet.Range("E1:E" & LastROw)
wsSheet.Range("F1").AutoFill Destination:=wsSheet.Range("F1:F" & LastROw)
wsSheet.Range("G1").AutoFill Destination:=wsSheet.Range("G1:G" & LastROw)
wsSheet.Range("H1").AutoFill Destination:=wsSheet.Range("H1:H" & LastROw)
wsSheet.Range("I1").AutoFill Destination:=wsSheet.Range("I1:I" & LastROw)
 
Else
    End If
 
         wsSheet.Range("J1").Value _
            = "Test -StartDate " _
              & Chr(34) & Range("B1").Value & "/" _
              & Range("C1").Value & "/" _
              & Range("D1").Value & " " _
              & Range("E1").Value & ":00" & Chr(34)
 
End Sub

回答
投稿日時: 22/09/06 11:00:29
投稿者: WinArrow
投稿者のウェブサイトに移動

解決したようで、よかったですが、
 
>If Trim(wsSheet.Range("A1")) <> "" Then
このコードが、なぜ、途中にあるのかがわかりません。
先頭に記述すべきと思います。
それから、インデントをキチンと付けましょう。
インデントを付けることは、可読性をよくすることに繋がります。

投稿日時: 22/09/06 12:26:59
投稿者: wgfyhsudji24w

Suzu さんの引用:
1)WorkSheet の指定方法に問題がある
 
 コードそのまま実行すると
 
 実行時エラー '13':
   型が一致しません。
 
   エラーになります。
 
 これは、既に simple さんがご指摘くださっています様に
  Worksheets(Sheet1) の Sheet1 の部分は インデックスとして、
   数字 または ""で括ったシート名 を渡す必要があります。
 
  現状は、"" で括っていないので、シート名ではなく、
  シートのオブジェクトそのものを渡している事になります。
 
   "" で括らなければ、シートオブジェクトになるので
   極端な話 コードとしては
   Sheet1.Range("F1").Value = "Test -StartDate " 〜〜
   でもエラーにはなりません。
 
2) 「" 」の 不足
  【Test -StartDate "2022/9/5 3:00"】これが得たいのでしょうが
   コード中、最後の「"」が抜けています。
 
 
3) 確認を行う
 
 変数や、Rangeの値が 怪しい と思ったなら、それらの値を確認する事を行いましょう。
 
  ステップ実行や、ブレイクポイント等を使い、そのステップの実行中に
    a.値を確認したい変数や、オブジェクトの上にカーソルを移動させる
    b.ローカルウィンドにて 各変数、オブジェクトの確認したいモノを確認
 
  その行の直前に、
    c. Debug.Print 確認したい値
    を入れる
 
  もっと確実には、別に変数を用意し
    d. MMYS さんが提案してくださっている様に、順次変数に値を代入し
       先の a.b.c. のどれかの方法で値を確認
 
  上記を行う事で、値の確認を行う事ができますね。
 
 
4)つまずいたら、理解しやすい方法に置き換えてみる
 
  どこでエラーになっているのか判らないなら、判る様に置き換えてみます。
    ※ 2)の最後の「"」が抜けているのは反映させていません。
      あくまで、思い通りにならない原因がどこにあるのかを明らかにする為の手順の説明です。
 
 Step1
  Worksheets(Sheet1).Range("F1").Value = _
  "Test" & Chr(32) & "-StartDate" & Chr(32) & Chr(34) & Range("B1").Value & Chr(47) & Range("C1").Value & Chr(47) & Range("D1").Value & Chr(32) & Range("E1") & Chr(58) & "00"
   ↓
 Step2 Chr を置き換える
  Worksheets(Sheet1).Range("F1").Value = _
  "Test -StartDate """ & Range("B1").Value & "/" & Range("C1").Value & "/" & Range("D1").Value & " " & Range("E1") & ":" & "00"
  ※赤の Chr(34) の 「"」の置き換えの部分 文字列の中 で「"」を表すには、2つ並べる必要があります
 
   ↓
 Step3 Value を置き換える
   Worksheets(Sheet1).Range("F1").Value = _
     "Test -StartDate """ & 2022 & "/" & 9 & "/" & 5 & " " & 3 & ":" & "00"
 
 Step4 Step3 でも 1)のエラーになるはずです。
  となると、右辺ではなく、左辺の
  「Worksheets(Sheet1).Range("F1").Value」のどこかに問題がある事が判ると思います。
 
---------------------------------------------------------------------------
ご質問の 2. の構文エラー についてですが、
 ○○を含む とか 含まない と言う様な ご質問をされても、
そのステップの構文が間違っていると言うことなので、そのステップ全体を見ないと判断できません。
その部分を明らかにしたいのであれば、そのステップ部分のコード全体を提示ください。

ご丁寧な返答を頂き、誠にありがとうございます。
以下今後留意します。
 
1)Worksheets(Sheet1) の Sheet1 の部分は 、数字 または ""で指定すること
2) 「" 」の 不足
3)確認の方法について
4)エラーが不明なら分かりやすく書き換える
→ 妙にChrを入れてしまったため、分かりづらくなりました。。以後分かりやすく書きます。

投稿日時: 22/09/06 12:28:45
投稿者: wgfyhsudji24w

WinArrow さんの引用:
解決したようで、よかったですが、
 
>If Trim(wsSheet.Range("A1")) <> "" Then
このコードが、なぜ、途中にあるのかがわかりません。
先頭に記述すべきと思います。
それから、インデントをキチンと付けましょう。
インデントを付けることは、可読性をよくすることに繋がります。

コード記述のルールも分かっておらず、ご指摘ありがとうございます!
インデントもつけるようにします。
ご返信ありがとうございます。

回答
投稿日時: 22/09/06 14:15:45
投稿者: めいぷる

解決しましたとのコメントがありますが、以下の部分大丈夫ですか?
Range("B1").Valueにワークシートの指定がありません。(C1〜E1も同様)
 
         wsSheet.Range("J1").Value _
            = "Test -StartDate " _
              & Chr(34) & Range("B1").Value & "/" _
              & Range("C1").Value & "/" _
              & Range("D1").Value & " " _
              & Range("E1").Value & ":00" & Chr(34)
 
Worksheets("Sheet2")以外のシートがActiveの状態で実行するとうまくいかないと思います。

投稿日時: 22/09/06 14:17:54
投稿者: wgfyhsudji24w

皆さん、たくさんのご返答誠にありがとうございました。解決いたしました。