• 締切済み

テキストボックスにコピーするマクロ

エクセルのA1にある文字列の先頭から2番目の文字を、テキストボックスにコピーするマクロのことですが。 Sub copy()  Cells(2, 1) = "=MID(A1,2,1)"  Selection.copy  Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _  SkipBlanks:=False, Transpose:=False  ActiveSheet.Shapes("Text Box 4").Select  Selection.Characters.Text = Cells(2, 1) End Sub 上記のもので成功しますが疑問に思うことがあります。 Cells(2, 1) = "=MID(A1,2,1)" の次の行に Cells(2, 1).Select を置くと、実行後に A2 には関数が残らず数値しか存在しなくなります。どうしてでしょう? (コピー → 形式を選択して貼り付け を手作業でやる時は関数は残るのに) また、上記よりも簡潔なマクロがあれば教えて下さい。

みんなの回答

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.2

>mid(Cells(1, 1),2,1)  と mid(A1,2,1) に違いがあるのかと悩んでいます。 A1だけだと マクロの場合、変数などというふうに認識されてしまうからです。 range("A1") というふうにする必要があります。

peko__
質問者

お礼

ありがとうございました。 納得しました。

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

 ActiveSheet.Shapes("Text Box 4").Select  Selection.Characters.Text = mid(Cells(2, 1),2,1) でいいのでは?

peko__
質問者

お礼

ありがとうございました。 上記で mid(Cells(2, 1),2,1) を  mid(Cells(1, 1),2,1) にすればだいじょうぶでした。 ただ、上記で mid(A1,2,1) のケースは最初に試したのですが、うまくいきませんでした。 mid(Cells(1, 1),2,1)  と mid(A1,2,1) に違いがあるのかと悩んでいます。

関連するQ&A