回答編集履歴

1

返信に対する文章追加

2017/01/13 08:26

投稿

BeatStar
BeatStar

スコア4958

test CHANGED
@@ -15,3 +15,151 @@
15
15
 
16
16
 
17
17
  関係性があいまいすぎてイメージできません。
18
+
19
+
20
+
21
+ 返信読みました。
22
+
23
+
24
+
25
+ 追記です。:
26
+
27
+
28
+
29
+ つまり、JAN付きデータ一覧 ( 本店が記録したデータ群、取り扱える商品一覧。 ) が入っている エクセルファイル ( ここでは JanStock.xls としておきます。 ) のシート1 を 各支店がチェックして在庫をチェックするための エクセルファイル ( ここでは Master.xls とします。 ) が読み取って、追加なり削除なり処理をする... という感じでしょうか?
30
+
31
+
32
+
33
+ もしそうなら、 ファイルの読み込み をするよりも、ActiveWorkbook... を使わずに Workbooks( ブック名 ) を使ってみては?
34
+
35
+
36
+
37
+ たとえば、
38
+
39
+
40
+
41
+ Master.xls の 標準モジュールか UserFormのモジュールかに書くとします。
42
+
43
+
44
+
45
+ ```VBA
46
+
47
+ Dim data As String
48
+
49
+
50
+
51
+ data = Workbooks( "JanStock.xls" ).Range("A1").Value
52
+
53
+
54
+
55
+ ```
56
+
57
+
58
+
59
+
60
+
61
+ のようにします。
62
+
63
+
64
+
65
+ ですが、これだと For文ではできません。 (できることはできるが、数値を文字列に変換しないといけない... )
66
+
67
+
68
+
69
+ ここで Rangeの代わりに Cells を使います。
70
+
71
+
72
+
73
+ Cells( 行番号, 列番号 )
74
+
75
+
76
+
77
+ という感じになります。
78
+
79
+
80
+
81
+
82
+
83
+ ```VBA
84
+
85
+ Dim data As String
86
+
87
+
88
+
89
+ ' "C1" のデータを取得
90
+
91
+ ' A=>1, B=>2, ... のため。
92
+
93
+ data = Cells( 3, 1 ).Value
94
+
95
+
96
+
97
+ ```
98
+
99
+
100
+
101
+ これでアクセスすれば For文でも使えます。
102
+
103
+
104
+
105
+ 例:
106
+
107
+
108
+
109
+ ```VBA
110
+
111
+ Dim i As Long
112
+
113
+
114
+
115
+ ' 1の列のセルで A1からA100 までの一列 に "OK" を印字する
116
+
117
+ For i = 1 To 100
118
+
119
+ Cells(i, 1).Value = "OK"
120
+
121
+ Next i
122
+
123
+ ```
124
+
125
+
126
+
127
+
128
+
129
+ みたいにできます。
130
+
131
+
132
+
133
+ 上記のものを組み合わせて
134
+
135
+
136
+
137
+ WorkBooks(ブック名).Shees(シート番号).Cells(行,列).Value
138
+
139
+
140
+
141
+ みたいにすれば別のブックのシートを操作することができますよ。
142
+
143
+
144
+
145
+ あと、Sheets( シート番号 ) でアクセスする場合は 数字で指定できます。
146
+
147
+
148
+
149
+ これとFor文を使って セルをチェックしていけばいいと思います。
150
+
151
+
152
+
153
+
154
+
155
+ 使っていないJANデータってありますが、これってアドレスを新規登録するときに サーバのデータベースに同じデータがある場合は使えない, ない場合はOKみたいな感じですよね?
156
+
157
+ それなら、上記のチェックで チェックすればいいのでは?
158
+
159
+ あるいは 考えるためのシート ( 一覧データ と 使っているデータから 割り出す みたいな。 ) とかを一時追加するっていう手もありますね。
160
+
161
+
162
+
163
+
164
+
165
+