![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
教えて下さい。
ファイル(エクセルブック)を数個開いています。そのうち基本となるファイル(便宜上基本ファイルとします)は常に開いていて、後の数個の作業ファイルを開きます。(作業ファイルはその都度入れ替わり固定のファイルではありません)
基本ファイルを、アクティブな状態でエクセルVBAマクロを走らせます。
そのマクロ実行中に、『ある作業ファイルの任意のセル(任意のセル)をクリックして、そのファイル名とシート名とセルのアドレスとそのセルの値を取得』して、基本ファイルの任意のセル(例えば基本ファイルのsheet1のセルA2~D2に)に記入したいのです。
分かりにくい文で申し訳ないですが、特に上の『 』内の部分です。
どのようにマクロを記述すればいいのか分からないので、教えて下さい。宜しくお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
あー・・案の定やっちまった(;´Д⊂)
シート名が正しく記録されないですね。。
ワークシートのダブルクリックイベントの中で下記の部分を
差し替えます。
(誤)
' // ダブルクリックされたセルの情報を記録
With mSh
lRow = .Cells(Rows.Count, "A").End(xlUp).Row + 1
.Cells(lRow, "A").Value = ActiveWorkbook.FullName
.Cells(lRow, "B").Value = ActiveSheet.Name
.Cells(lRow, "C").Value = ActiveCell.Address
.Cells(lRow, "D").Value = ActiveCell.Value
End With
↓↓↓↓↓
(正)
' // ダブルクリックされたセルの情報を記録
With mSh
lRow = .Cells(Rows.Count, "A").End(xlUp).Row + 1
.Cells(lRow, "A").Value = Sh.Parent.FullName
.Cells(lRow, "B").Value = Sh.Name
.Cells(lRow, "C").Value = Target.Address
.Cells(lRow, "D").Value = Target.Value
End With
感動しました!
ありがとうございます。早速実行し、確認できました。
私が考えていた目的の結果も得られました。
参考にさせていただきます。
No.2
- 回答日時:
こんにちは。
基本ファイルの ThisWorkbook モジュールにコピペして下さい。
その後、ブックを保存してから開きなおすとツールバーが生成
されてます。
ツールバーの「セル情報の記録」ボタンをクリックした後、セルを
適当に DB クリックすると基本ファイルに記録します。
なお、基本ファイルのセルは記録しません。ほかブックのみです。
勢いで作ったのでテストは全然してませんが。
Option Explicit
Private WithEvents xlApp As Application
Private WithEvents Cbb As CommandBarButton
Private mSh As Worksheet
' // 作業用ツールバーの名前
Private Const TOOLBAR_NAME As String = "MyToolBar"
' // レコード記録シート名
Private Const RECSHEET_NAME As String = "Record"
' // ブックのオープンイベント
Private Sub Workbook_Open()
Set xlApp = Application
RETRY:
On Error GoTo ERR_NOEXIST_RECSHEET
Set mSh = ThisWorkbook.Worksheets(RECSHEET_NAME)
On Error GoTo 0
Call AddMyToolBar
TERMINATE:
Exit Sub
ERR_NOEXIST_RECSHEET:
With ThisWorkbook.Worksheets.Add(Before:=Sheets(1))
.Name = RECSHEET_NAME
.Range("A1:D1").Value = Array("Book", "Sheet", "Address", "Value")
End With
MsgBox "[ " & RECSHEET_NAME & " ] シートを作成しました。", _
vbInformation
Err.Clear
Resume RETRY
End Sub
' // ブックのクローズイベント
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Set mSh = Nothing
Set xlApp = Nothing
Call DelMyToolBar
End Sub
' // 作業用ツールバーの追加
Private Sub AddMyToolBar()
Dim Cmb As CommandBar
Call DelMyToolBar
Set Cmb = xlApp.CommandBars.Add(Name:=TOOLBAR_NAME, _
Position:=msoBarTop, _
Temporary:=True)
Set Cbb = Cmb.Controls.Add(Type:=msoControlButton)
With Cbb
.Caption = "セル情報の記録"
.Style = msoButtonIconAndCaption
.FaceId = 184
End With
Cmb.Visible = True
Set Cmb = Nothing
End Sub
' // 作業用ツールバーの削除
Private Sub DelMyToolBar()
On Error Resume Next
Set Cbb = Nothing
xlApp.CommandBars(TOOLBAR_NAME).Delete
On Error GoTo 0
End Sub
' // 作業用ツールバーのボタンクリックイベント
Private Sub Cbb_Click( _
ByVal Ctrl As Office.CommandBarButton, _
CancelDefault As Boolean _
)
With Cbb
'// ボタンの On/Off 状態を切り替え
.State = Not CBool(.State)
'// ボタンの On/Off 状態でアイコンを切り替え
If CBool(.State) Then
.FaceId = 228 ' // FaceID:228 ■マーク
Else
.FaceId = 184 ' // FaceID:184 ●マーク
xlApp.StatusBar = ""
End If
End With
End Sub
' // ワークシートのダブルクリックイベント
Private Sub xlApp_SheetBeforeDoubleClick( _
ByVal Sh As Object, _
ByVal Target As Range, _
Cancel As Boolean _
)
' // 終了条件:: 作業用ツールバーのボタンが Off なら何もしない
If CBool(Cbb.State) = False Then Exit Sub
' // 終了条件:: ThisWorkbook なら何もしない
If Sh.Parent Is ThisWorkbook Then Exit Sub
Dim lRow As Long
On Error GoTo ERR_HANDLER
' // 編集モードを解除
Cancel = True
' // ダブルクリックされたセルの情報を記録
With mSh
lRow = .Cells(Rows.Count, "A").End(xlUp).Row + 1
.Cells(lRow, "A").Value = ActiveWorkbook.FullName
.Cells(lRow, "B").Value = ActiveSheet.Name
.Cells(lRow, "C").Value = ActiveCell.Address
.Cells(lRow, "D").Value = ActiveCell.Value
End With
' // 記録したことをユーザーに通知(ステータスバーで)
xlApp.StatusBar = "Record: " _
& ActiveWorkbook.Name & "/" _
& ActiveSheet.Name & "/" _
& ActiveCell.Address
TERMINATE:
Exit Sub
ERR_HANDLER:
MsgBox Err.Description, vbCritical
Resume TERMINATE
End Sub
No.1
- 回答日時:
こんにちは。
『ある作業ファイルの任意のセル(任意のセル)をクリックして、
--クリックして、というのは、事実上はできません。ショートカットあたりかな?
セルは、通常の作業で[左]クリックも[右]クリックも作業としてありますから、[左]クリックは完全に使えないし、[右]クリックは、その機能をつぶさないとできません。
そのファイル名とシート名とセルのアドレスとそのセルの値を取得』
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
でも、この範囲だけですと、『リンク貼り付け』の機能だと思います。
それを、何かひとつの操作でしたいというのなら、記録マクロを加工して、ショートカットやツール・コマンドボタンなどにしてあげれば、出来上がるはずです。(ただし、Ctrl + C のショートカット・コピーに関しては、割り当てることは、一般的にはできません。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
- Visual Basic(VBA) エクセルのマクロについて教えてください マクロを実行して 作業フォルダの中にある PDFファイル名を 3 2023/07/01 15:16
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/01/12 16:58
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/02/21 11:19
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) セルの値からファイルを複数作りたい 2 2022/10/06 12:42
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2022/08/04 13:56
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/20 10:00
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 12:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
貼り付けで複数セルに貼り付けたい
-
エクセル 足して割る
-
【エクセル】IF関数 Aまたは...
-
Excelでのコメント表示位置
-
EXCEL VBA セルに既に入...
-
エクセルの足し算で、小数点以...
-
枠に収まらない文字を非表示に...
-
Excel2003 の『コメント』の編...
-
エクセルで指定したセルのどれ...
-
エクセルで休憩時間を引く時と...
-
Excel データ入力に応じて自動...
-
Excelの関数で、性別が男なら『...
-
エクセルVBAでの「値貼り付け、...
-
EXEL:入力中のセルの数式を非...
-
エクセルのセルの枠を超えて文...
-
Excelで数式内の文字色を一部だ...
-
対象セル内(複数)が埋まった...
-
アニメの原画について
-
ミセルとエマルション
-
毎日の入力後に平均値を出した...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル 足して割る
-
【エクセル】IF関数 Aまたは...
-
エクセルで指定したセルのどれ...
-
Excelで数式内の文字色を一部だ...
-
Excelでのコメント表示位置
-
貼り付けで複数セルに貼り付けたい
-
対象セル内(複数)が埋まった...
-
セルをクリック⇒そのセルに入力...
-
【Excel】 セルの色での判断は...
-
エクセルの一つのセルに複数の...
-
EXCEL VBA セルに既に入...
-
エクセル “13ヶ月”を“1年1ヶ月...
-
エクセル オートフィルタで絞...
-
エクセルのセルの枠を超えて文...
-
excelのCOUNTIF関数で、『範囲=...
-
(Excel)数字記入セルの数値の後...
-
枠に収まらない文字を非表示に...
-
Excel2003 の『コメント』の編...
-
Excel 例A(1+9) のように番地の...
-
複数のセルのいずれかに数字が...
おすすめ情報