アプリ版:「スタンプのみでお礼する」機能のリリースについて

VBA全く分かりませんが、ご教示いただきたいです!
よろしくお願いしますm(__)m

操作用のブックを1つ用意し、その操作用のブック内のどこかのセルに
A4と入力しボタンをクリックしたら現在開いている全てのブックの表示列がA4に表示されるようにするには、どういったコードを入力したらよいのでしょうか?

日々、50あるブックを開き操作用のブックに指定したシート名を入力し、ボタンをクリックすると全てのブックの指定したシートが表示されるマクロをかなり前に前任者の方が作成してくれていますが(全てのブックはシート名、シートの中の表示は全て同じ作りになっています)
日々、50全てのブックの表示させる列が変更になるため自分で分からないなりに
下記のコードを作成して、日々表示させる列をコードの方で変更し表示させています

Sub スクロール()
Dim AllBook As Workbook
For Each AllBook In Workbooks
AllBook.Activate
Range("G4").Select ←("G4")が日々変更になるためここを毎回変更しています
With ActiveWindow
.ScrollRow=ActivCell.Row
.ScrollColumn=ActivCell.Column
End With
Next All Book
End Sub

"G4"ここの指定を操作用のシートに入力すると開いている全てのブックがG4に、となるようにしたいです。

毎回表示させたい列を変更するためにマクロを開くという作業を何とかしたいなと思い、質問させていただきました!

分かりづらい説明で申し訳ありませんが、よろしくお願いします。

A 回答 (2件)

こんばんは


>VBA全く分かりませんが、ご教示いただきたいです!
であれば説明は難しいですね(基礎知識が必要なので多分理解が出来ない)

操作用のブックを1つ用意し、
その一番左にあるシートにボタンを作ります(ActiveXコントロールのコマンドボタン)
参考
https://shingyouryu.xyz/vba-button/

ボタンを右クリック⇒「コードの表示」をクリックして
VBEを開きます
Private Sub CommandButton1_Click()
'カーソルのある位置
End Sub

カーソルのある位置のところに
ご質問のコードを改修したコード 下記をコピペ
(ご質問コードにはタイプミスがあるようですのでコピペでどうぞ)

Dim AllBook As Workbook
Dim strTarget As String
On Error Resume Next
strTarget = Range("A1") '入力セル
If Not Evaluate("ISREF(" & strTarget & ")") Then Exit Sub
For Each AllBook In Workbooks
AllBook.Activate
Range(strTarget).Select
With ActiveWindow
.ScrollRow = ActiveCell.Row
.ScrollColumn = ActiveCell.Column
End With
Next AllBook

使用方法
ボタンを設置したシートのA1セルに セルアドレス (例:G3)を入力しボタンを押下します
(セルアドレスとして実行できない値を入力すると何も起こりません
解らないとの事なので簡単なエラー処理を入れました)

入力セルを変更したい場合は
strTarget = Range("A1") '入力セルの A1を入力したいセルに変更します

例: strTarget = Range("B2")  B2セルが入力セルになります

追記、
処理の内容自体が大きな問題を起こす様なものでないと判断しましたが
>VBA全く分かりませんが、ご教示いただきたいです!
この様な場合は、同僚や身近にいる方に聞くことを強くお勧めします
QAサイトなどでご質問されても基礎知識が無ければ、理解する事は難しく
更に困る事態が起こる可能性があります(ご質問の誤解や解釈の相違などで)

今回回答した内容についても身近の方に聞くか、それが難しいようであれば
検索サイトなどでVBAの基礎知識や内容を検索して使うようにしてください
    • good
    • 1
この回答へのお礼

お礼が遅くなり申し訳ありません。
無事、解決いたしました!
とても分かりやすく解答していただきありがとうございました。

お礼日時:2022/07/26 18:53

こんにちは。



セルではなく、Inputbox 関数を使用してみては?

Sub スクロール()

  'ユーザーからの入力を受け付ける Inputbox 関数での例
  Dim cell_address As String
  Do
    On Error Resume Next
    cell_address = InputBox("セルのアドレスを入力(例)A4", "スクロール")
    If cell_address = "" Then
      '空白または[X]、[キャンセル]クリック時は終了
      Exit Sub
    Else
      '有効なアドレスかチェックし、不正値なら再入力
      cell_address = Range(cell_address).Address
      If Err.Number = 0 Then
        Exit Do
      End If
    End If
    Err.Clear
  Loop
  
  On Error GoTo 0
  Dim book As Workbook
  For Each book In Workbooks
    book.Activate
    Range(cell_address).Select
    With ActiveWindow
      .ScrollRow = ActiveCell.Row
      .ScrollColumn = ActiveCell.Column
    End With
  Next

End Sub

#以下余談

一部変数名に違和感がありましたので変更しました。
なお、#1様に習って簡易なエラー処理をしましたが、

 > Not Evaluate("ISREF(" & strTarget & ")")

はいいですね。勉強になりました。
    • good
    • 0
この回答へのお礼

お礼が遅くなり申し訳ありません。
色々な方法があるんですね!とても勉強になりました!!
先に回答頂いた方の方法で既に解決しましたが時間がある時にこちらの方法でも試してみたいと思います!ありがとうございました。

お礼日時:2022/07/26 18:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!