![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
BVA自己流素人です。
エクセルブック(A)のsheet1に4桁の数値の書かれたテキストボックスが多数貼り付けられています。
それぞれがマクロボタンになっていて、どれかを選択するとテキストの4桁を取得して別のエクセルブック(B)を開きシート名(数値4桁)と一致するシートを検索して表示するVBAがすでに組んであります。
Sub test1()
Dim i As String
Dim botan
bangou = Application.Caller
i = ActiveSheet.Shapes(bangou).TextFrame.Characters.Text
Workbooks.Open Filename:="c:\…B.xls"
Sheets(i).Select
End Sub
助けていただきたいのはこの後にエクセルAのsheet2 A1セルにその4桁の数値を入力したいのですがどうしてもうまくいきません。基礎知識がないため苦しんでいます。どなたか助けてください。
No.4ベストアンサー
- 回答日時:
割り込みさせていただきます。
これは、思った以上に難易度の高いマクロです。不可抗力のミスが入り込むからです。
それと、余計なお世話になってしまうかもしれませんが。質問のようなコードは、かなり古いタイプのもので、Ver.5 のテクニックで、コントロール配列を使った技術です。誰からちゃんと教わるか、その説明が書かれたテキストを手に入れない限りは、あまり、そのようなコードは求めないほうがよいと思います。せめて、フォームボタンにしたほうが分かりやすかったはずです。フォーム全体の使い方は、今は、もうMicrosoft 側にはありません。
さて、変数の名称は変更させていただきました。
Sub Test1()
Dim objName As String
Dim ShName As String
Dim wb As Workbook
objName = Application.Caller
ShName = ActiveSheet.Shapes(objName).TextFrame.Characters.Text
ShName = Application.Clean(ShName) '不要なゴミが入り込む余地をなくす
Set wb = Workbooks.Open(Filename:="c:\…B.xls")
With wb.Worksheets(ShName)
.Select
.Range("A1").Value = ShName
End With
With WorkBooks("A.xls") 'すでに開いていると見做す。
.Worksheets("Sheet2").Range("A1").Value =ShName
End With
End Sub
'//
なお、微妙なところでうまくいかない可能性もあります。
シート名は、おそらく日付型だとは思いますが、私の経験では、シート名を手動で入力されたものは、一旦、マクロで、シート名を整理しなおさないと、うまくヒットしないこともあります。
Sub SheetRenaming()
Dim sh As Worksheet
For Each sh In ActiveWorkbook.Worksheets
buf = Trim(Application.Clean(sh.Name))
sh.Name = StrConv(buf, vbNarrow)
Debug.Print sh.Name '取得した名称は、再利用する
Next
End Sub
これですと、カタカナのシート名は半角になってしまいますから、もしその場合は、正規表現置換の方がよいでしょう。
ありがとうございました。
非常にうまくいきました。
不安定なコードを書き直してくださった理由でベストアンサーとさせていただきます。
Goouserラック様もありがとうございました。
こちらもうまく作動いたしました。
No.3
- 回答日時:
No.1 さらに追補
どちらの変数に代入されているかもわからなければ、「i = ActiveSheet.…」と「Workbooks.…」の間に「MsgBox ("bangou = " & bangou & " 、i = " & i)」を入れて実行してみてください。
No.2
- 回答日時:
No.1 の追補
もしどちらかの変数ならば、「i = ActiveSheet.…」と「Workbooks.…」の間に
「Sheets("sheet2").Range("A1").Value = bangou」か「Sheets("sheet2").Range("A1").Value = i」を入れればよいのでは?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Excel(エクセル) マクロVBA別Excelブックにデータ転記 2 2022/07/10 23:35
- Excel(エクセル) Excleマクロ セル値の代入と文字列の結合について 3 2022/10/05 16:47
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 別ブックからシートのコピー 3 2022/04/01 20:07
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/01/26 09:50
- Visual Basic(VBA) 複数シート一括作成後に、特定範囲の数式は値で貼り付けしたい 3 2022/10/07 11:18
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロを複数シートに実行する...
-
コマンドボタンがデザインモー...
-
エクセルでシートの並び替えで...
-
マクロ 各シートの決められた位...
-
EXCELのエラー
-
エクセル シート保護をかける...
-
エクセルVBAでcmbBoxのプロパテ...
-
VBA シート名を先月の名前に...
-
エクセル2013でマクロのボタン...
-
エクセルで回数をカウントする...
-
VBA ワークシートオブジェクト...
-
エクセルで複数のSheetを一括フ...
-
エクセルを開いたとき常に同じ...
-
シートを保護した時でも並べ替...
-
【 Excel】シートの見出しに自...
-
VBAでユーザーに別ファイルのシ...
-
Excelのマクロの呼び出し元を知...
-
うまくマクロが実行しません
-
EXCELでマクロを使わずに図形の...
-
シートの保護を実行した時、マ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マクロを複数シートに実行する...
-
コマンドボタンがデザインモー...
-
エクセルを開いたとき常に同じ...
-
【 Excel】シートの見出しに自...
-
エクセルでシートの並び替えで...
-
VBAで条件によってシート見出し...
-
EXCELでワークシートを開いたら...
-
EXCELでマクロを使わずに図形の...
-
マクロを特定の複数シートで実...
-
エクセルの複数のワークシート...
-
EXCELのエラー
-
複数シートの保護・解除
-
VBA シート名を先月の名前に...
-
エクセル2013でマクロのボタン...
-
VBAで作るexcel検索窓
-
EXCELの起動時に常に同じ...
-
シートを保護した時でも並べ替...
-
Excelで,特定のシートを開いた...
-
Excelのマクロの呼び出し元を知...
-
メッセージボックスでシート名...
おすすめ情報