VlookUpを使わないで表記 -その2-


エクセルを使っていて・・良く使うのがVlookUpですが・・
どうしても表計算関数が動くので遅い!
ファイル自体が重くなる・・という事があります。

VlookUpを使わないで商品を表記させる為には・・

エクセルを使っていて・・良く使うのがVlookUpですが・・
どうしても表計算関数が動くので遅い!
ファイル自体が重くなる・・という事があります。

VlookUpを使わないで商品を表記させる為には・・

1.わざと計算方法を手動に切り換えます。

2.手動にきりかえました。

3.VBAを開いて、VBAProjectの中のSheet1の中に
  Worksheet Changeのコマンドを記載します。

4.開き方は、エクセルを開いている時に、Alt + F11 のキーを同時に押すと開きます。
  このSheet1(Sheet1)をダブルクリックすると

5.こんな画面になる、そこで・・

6.以下の様にWorksheetを選ぶと

7.以下の様なSelectionChangeが開くので

8.SelectionChangeではなくChangeを選択。

9.Worksheet_SelectionChangeは使わないので、消去し Worksheet_Changeにコードを書きます。

10.以下の様にして

11.あとはコードを書き込む

 

12.コードは以下のとおり

‘—————————————————————

‘該当の列の値が変更された場合
Private Sub Worksheet_Change(ByVal Target As Range)

‘変数の宣言
Dim i As Long ‘ループの行カウント
Dim col As Long ‘ループの列カウント
Dim Sh1LastCol As Long ‘シート2の最終列
Dim Sh2LastRow As Long ‘シート2の最終行
Dim Sh2LastCol As Long ‘シート2の最終列

‘最終行と最終列の取得
Sh1LastCol = 11 ‘納品書の最終列は11列目
Sh2LastRow = Sheets(“Sheet2”).Cells(Rows.Count, 2).End(xlUp).Row
Sh2LastCol = Sheets(“Sheet2”).Cells(3, Columns.Count).End(xlToLeft).Column

Select Case Target.Column ‘変更された列が
Case 3 ‘3列目(すなわちCの列)の場合で
Select Case Target.Value
Case “” ‘空白の場合
For col = 4 To Sh1LastCol ‘列番号が2列目から最終列までの間ループする
Cells(Target.Row, col) = “” ‘4列目からの値を消去
Next col
Case Else ‘空白で無い場合
‘ループの開始
For i = 3 To Sh2LastRow ‘シート2の3行目から最終行までの間で

Select Case Sheets(“Sheet2”).Cells(i, 2) ‘シート2の2列目のコードが
Case Right(“0000000000000” & Target.Value, 13) ‘シート1の変更された該当セルの値だったら

‘列の値を書き込む
For col = 2 To Sh2LastCol ‘列番号が2列目から最終列までの間ループする

Select Case col ‘列の番号が
Case 3: Cells(Target.Row, 4) = Sheets(“Sheet2”).Cells(i, col) ‘Sheet2の3列目 すなわち 商品名を Sheet1の4列目に書き込む
Case 4: Cells(Target.Row, 5) = Sheets(“Sheet2”).Cells(i, col) ‘Sheet2の4列目 すなわち 入り数を Sheet1の5列目に書き込む
Case 5
Case 6: Cells(Target.Row, 9) = Sheets(“Sheet2”).Cells(i, col) ‘Sheet2の6列目 すなわち 売価を Sheet1の9列目に書き込む
Case 7
Case 8: Cells(Target.Row, 11) = Sheets(“Sheet2”).Cells(i, col) ‘Sheet2の8列目 すなわち 税区分を Sheet1の11列目に書き込む
End Select

Next col ‘列の処理のループここまで
Cells(Target.Row + 1, Target.Column).Select ‘次の行をSelect する
Exit For ‘該当する行での処理がおわったらループを抜ける
End Select

Next i ‘行の処理のループここまで

End Select
End Select
End Sub

‘————————————————————–

こんなかんじですね。

 

あと・・・
エクセルの場合は・・・

コードなどを取り扱うとき・・勝手にセルを数値に変えたり
文字化けする事があるので・・・

もう一つこれを付け加えておきます。
 

‘————————————————————-

‘ワークシートがアクティブになったときに
‘文字化けを防ぐために書式を設定しておく
Private Sub Worksheet_Activate()
Columns(“C:C”).NumberFormatLocal = “@”
End Sub

‘————————————————————-

,

コメントを残す

メールアドレスが公開されることはありません。

2021年2月
1234567
891011121314
15161718192021
22232425262728
最近の記事
カテゴリ
月別アーカイブ