No.1ベストアンサー
- 回答日時:
こんにちわ。
以前私もあなたと同じことをやりたくてマイクロソフトのサポートセンターへ問い合わせたことがありますが、外部参照という機能を使わない限りブックを開かずにセルを参照することはできないそうです。
ですから、あなた様が書かれたコード以外書く方法はないと思います。
また、ブックのセルの値を訂正するには、そのブックを開かない限り訂正することができないそうです。
私でよろしければ、またサンプルマクロを作ってみたいと思います。ご希望の節は、あなた様がどの様なことをおやりになりたいのかお知らせ下さい。
お手数をおかけいたしますが、よろしくお願いいたします。
この回答への補足
度々の回答ありがとうございます。
そうでしたか、無理だったんですね。
今まで1台のPCで売上管理を行っていたのですが、その商品マスタとなるデータを
他のPC(LAN経由)と共有して、一方のPCを発注管理用としたかったのです。
このような事はエクセルでは、無理な使用法でしょうか。
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冊があれば、十分です。
お互いにこれからも頑張っていきましょう。
No.3
- 回答日時:
こんばんわ。
私は、1台のPCでしか操作をしたことがないので、ネットワークのことに関しては全くの無知です。でも、何かあなた様がおやりになりたいことは、できる方法があるように思います。
そこで提案なのですが、マイクロソフトのサポートセンターに問い合わせてみたらいかがでしょうか。Office製品は、無償サーポートという特典がついております。電話番号をお知らせいたします。
03(5354)4500 です。
私が答えられれば答えたいのですが、ネットワークに関しては解りませんのでお許し下さい。
情報ありがとうございます。
電話してみたのですが、OfficeXPはVBAが絡む質問は有料との事でした。
また、こちらが質問して、「それは無理です。」で終わっても1件と数えるそうなので、そこでやめてしまいました。
また、別の形で質問を出すかもしれませんが、よろしくお願い致します。
No.4
- 回答日時:
こんにちわ。
ちょっと次の操作をしてみて下さい。
1.現在ファイルが保存してあるPCでファイルを開く。
2.ツールメニューバーからツール→ブックの共有を順にクリックし、ブックの共有ダイアログボックスを開く
3.編集タブをクリックし、その中の複数のユーザーが同時に編集する。をチェックしてOKボタンをクリックする。
4.保存を確認するメッセージが表示されるのでOKボタンをクリックする。
もしこの方法でよろしければ、詳細につきましてはヘルプを参照して下さい。
1.ツールメニューバーからヘルプ→マイクロソフトヘルプを順にクリック。
2.質問タブをクリックし、ブックの共有と入力し、OKボタンをクリック。
3.複数のユーザーが同じブックで作業する方法をダブルクリック。
もし、違っていた場合は、お許し下さい。
回答ありがとうございます。
共有ブックという機能を、全く知りませんでした。
試してみます。
ちょっと、質問の表題と異なる内容になってきましたので、締め切ります。
お探しの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のチェックボックスの使い...
-
エクセル 白黒印刷で白線を印刷...
-
LOOKUP関数を使えばいいのでし...
-
エクセルのセルに同じ大きさの...
-
エクセルの関数について教えて...
-
時間によってファイル名が変わ...
-
Excelのpivotについて質問です
-
excelの不要な行の削除ができな...
-
Excelで、決まった行を繰り返し...
-
WPS OFFICEでの縦書きについて
-
UNIQUE関数が使えないバージョ...
-
エクセルの条件付き書式につい...
-
エクセルで「-0.0」と表示さ...
-
Aというブックの1というシート...
-
VBA Private Sub Worksheet_Cha...
-
【マクロ】ファイル名の変更に...
-
【マクロ】エクセルにかいてあ...
-
excel で二つのどちらかを選ぶ
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報