![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
No.1ベストアンサー
- 回答日時:
こんにちわ。
以前私もあなたと同じことをやりたくてマイクロソフトのサポートセンターへ問い合わせたことがありますが、外部参照という機能を使わない限りブックを開かずにセルを参照することはできないそうです。
ですから、あなた様が書かれたコード以外書く方法はないと思います。
また、ブックのセルの値を訂正するには、そのブックを開かない限り訂正することができないそうです。
私でよろしければ、またサンプルマクロを作ってみたいと思います。ご希望の節は、あなた様がどの様なことをおやりになりたいのかお知らせ下さい。
お手数をおかけいたしますが、よろしくお願いいたします。
この回答への補足
度々の回答ありがとうございます。
そうでしたか、無理だったんですね。
今まで1台のPCで売上管理を行っていたのですが、その商品マスタとなるデータを
他のPC(LAN経由)と共有して、一方のPCを発注管理用としたかったのです。
このような事はエクセルでは、無理な使用法でしょうか。
No.4
- 回答日時:
こんにちわ。
ちょっと次の操作をしてみて下さい。
1.現在ファイルが保存してあるPCでファイルを開く。
2.ツールメニューバーからツール→ブックの共有を順にクリックし、ブックの共有ダイアログボックスを開く
3.編集タブをクリックし、その中の複数のユーザーが同時に編集する。をチェックしてOKボタンをクリックする。
4.保存を確認するメッセージが表示されるのでOKボタンをクリックする。
もしこの方法でよろしければ、詳細につきましてはヘルプを参照して下さい。
1.ツールメニューバーからヘルプ→マイクロソフトヘルプを順にクリック。
2.質問タブをクリックし、ブックの共有と入力し、OKボタンをクリック。
3.複数のユーザーが同じブックで作業する方法をダブルクリック。
もし、違っていた場合は、お許し下さい。
回答ありがとうございます。
共有ブックという機能を、全く知りませんでした。
試してみます。
ちょっと、質問の表題と異なる内容になってきましたので、締め切ります。
No.3
- 回答日時:
こんばんわ。
私は、1台のPCでしか操作をしたことがないので、ネットワークのことに関しては全くの無知です。でも、何かあなた様がおやりになりたいことは、できる方法があるように思います。
そこで提案なのですが、マイクロソフトのサポートセンターに問い合わせてみたらいかがでしょうか。Office製品は、無償サーポートという特典がついております。電話番号をお知らせいたします。
03(5354)4500 です。
私が答えられれば答えたいのですが、ネットワークに関しては解りませんのでお許し下さい。
情報ありがとうございます。
電話してみたのですが、OfficeXPはVBAが絡む質問は有料との事でした。
また、こちらが質問して、「それは無理です。」で終わっても1件と数えるそうなので、そこでやめてしまいました。
また、別の形で質問を出すかもしれませんが、よろしくお願い致します。
No.2
- 回答日時:
こんばんわ。
前回私の作ったサンプルマクロの内容がお解りにならないということですので、この場をお借りして説明をさせていただきたいと思います。Private Sub Workbook_Open()
このイベントは、このブック(商品台帳)が開いたときに走るイベントです。
Dim myBook As Workbook
Dim myWbn As String
For Each myBook In Workbooks
現在開いているブックの名前をすべてチェックします。
開いているブックの数だけ繰り返されます。
myWbn = myBook.Name
ブックの名前を変数に代入します。
If myBook.Name = "商品コード.xls" Then Exit Sub
商品台帳が開いていたら処理を終了させます。
Next
商品台帳が閉じていた時のみ以下のコードが実行されます。
Workbooks.Open ("C:\My Documents\商品コード.xls")
Workbooks("商品台帳.xls").Activate
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
このイベントはシートに変化が起きたときに走るイベントです。
・セルに値を入力し、エンターキー等でフォーカスを移した時。
・セルの値を削除し、エンターキー等でフォーカスを移した時
・行選択をして行を削除した時。範囲選択をして選択された行を削除した時。
このような動作が行われた時、すべて走ります。
Dim myRow As Integer
myRow = Target.Row
If Target.Address = Range("A" & myRow).Address _
Or Target.Address = Range("B" & myRow).Address Then
target.rowは、行選択をした時先頭行の行番号・範囲選択をした時も先頭の行番号・セル選択の時もそのセルの行番号を返しています。
target.addressは行選択をした時$○:$△・範囲選択の時例えば$A$3:$H$10・セル選択の時例えば$B$3という値を返しています。
今回はA列とB列で一つのセルの値が変化した時のみマクロを走らせたいので、このように書きます。
Set myWsn = Workbooks("商品コード.xls").Worksheets(1)
myWsnがWorkbooks("商品コード.xls").Worksheets(1)の代わりとして使えるように、setステートメントを使ってmyWsnに代入しています。
myCell = myWsn.Range("A1").CurrentRegion.SpecialCells(xlCellTypeLastCell).Address
CurrentRegionは、データの入力されている範囲を参照しています。
SpecialCells(xlCellTypeLastCell)は上の範囲のデータの入っている最終セルを参照しています。
つまり、myCellに商品コードにデータの入力されている最終セルのセル番地を代入しているのです。
Set myRange = myWsn.Range("A2:" & myCell).Find(Target.Value, lookat:=xlWhole)
target.valueは、商品台帳に入力された商品コードを表しています。
つまり、商品コードのA2から入力された最終行の範囲の中に入力された商品コードがあるかどうか探し、あればレンジオブジェクトをなければNothingを
変数に返します。
Application.EnableEvents = False
If myRange Is Nothing Then
入力された商品コード・商品名がなかった時の処理
If Target.Address = Range("A" & myRow).Address Then
入力された商品コードがなかった時の処理
myWsn.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Value = Target.Value
Rangeオブジェクトの表し方は2通りあります。A5を例にするとRange("A5")という方法とCells(5,1)という方法です。Range("A5")の5を変数で表す時は、Range("A" & 変数)となります。
Cells(Rows.Count,1)は、A列の最終行を表しています。
Cells(Rows.Count,1).End(xlup)は、A列の最終行から上方向へ入力されている最終セルを参照しています。
Offsetは、セル番地を移動する時に使います。表し方は、Offset(行,列)です。B2を基準にA1はoffset(-1,-1),B1はoffset(-1,0),C1はoffset(-1,1),C2はoffset(0,1),C3はoffset(1,1),B3はOffset(1,0),A3はOffset(1,-1),A2はOffset(0,-1)と表します。
つまり、この式の意味は、商品コードのA列に入力されている最終行の1つ下のセルに商品台帳に入力された商品コードを入力せよということになります。
Else
入力された商品名がなかった時の処理
myWsn.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Value = Target.Value
End If
Else
商品台帳に入力された商品コードがあったときの処理
Target.Offset(0, 1).Value = myRange.Offset(0, 1).Value
Target.Offset(0, 1).Columns.EntireColumn.AutoFit
End If
Application.EnableEvents = True
End If
End Sub
まだ解らないことがありましたら、遠慮なくお知らせ下さい。
それから、私がVBAを勉強するのに役に立った本をご紹介させていただきます。技術評論社から出ている大村あつしさんが書いた簡単プログラミングExcle2000VBAという本です。基礎編・関数偏・応用編の3部作になっています。これはとっても解りやすく書かれています。その他に辞書としてメソッドやプロパティを調べるのに使っている本は、ローカスという出版社から出ている逆引きExcel2000VBA偏です。VBAが持っているすべての機能やプロパティ・メソッド等が記載されています。この4冊があれば、十分です。
お互いにこれからも頑張っていきましょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/04/21 08:59
- Excel(エクセル) エクセルの数式について ブック内の別シートの値の含まれたセルの個数を集計したい 全シート一覧のシート 1 2022/07/21 19:28
- Visual Basic(VBA) VBAコードで質問があります 2 2022/10/20 15:27
- Visual Basic(VBA) エクセルVBA エクセルを開いた後に編集可能な状態にするには? 2 2023/06/14 11:58
- Excel(エクセル) IFERROR、SMALL関数について 2 2022/08/22 23:40
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Excel(エクセル) エクセル バーコード作成で他のシートを参照するには? 2 2023/05/03 16:57
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) VBAの参照先のファイル名をセルに書いて代入したい 2 2022/04/04 13:42
- Visual Basic(VBA) Excel VBA マクロ ある列の最終行迄を参照し、別の列の空白セルに値を入力したいです 2 2023/03/05 02:44
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでファイルの最終更新...
-
Excelに詳しい方! B列が「日...
-
F9キーについて。
-
Excelファイルが開けません
-
シフト表をエクセルで作るとき...
-
Excel関数について教えてくださ...
-
Excel 小さくなったスクロール...
-
計算能力
-
excel2013 MonthDays 関数が使...
-
スプレッドシートの関数につい...
-
Excel 2019 [オプション]の[リボンのユ...
-
Excelのピボットグラフの作り方...
-
エクセルで 自動的に◯や数字を...
-
【EXCEL】画像の黄色部分の抽出...
-
特定の文字列を含む、住所を抽...
-
EXCELの散布図で日付が1900年に...
-
【マクロ】2回実行したら、エ...
-
Excelで表を作ったところに文字...
-
マイクロソフトのPADを使ってい...
-
Excel分数の表示について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
半角カタカナをヘボン式ローマ...
-
(マクロ)vlookupの元データを同...
-
エクセルで上位バイトのセルと...
-
exselの質問です
-
Excel 大小比較演算子による「...
-
Excel VBについての質問です。
-
エクセルの問題です。絶対値の...
-
非表示列の再表示に失敗
-
職場の人から聞かれており、こ...
-
Excel関数-文字列で自動作成さ...
-
Excelデータをコピペして、ペー...
-
ユーザー定義関数をアドイン登...
-
【マクロ】for next構文について
-
エクセルの日付を編集する
-
【マクロ】VLOOKUPにて参照元に...
-
exselで最小数で並び替える関数
-
libre 表計算ソフトの計算がう...
-
エクセルで表
-
エクセルの表で1年間の曜日を...
-
西暦和暦
おすすめ情報