- ベストアンサー
エクセルマクロの質問。値の変更のイベントについて
- エクセルマクロの質問。値の変更のイベントについて
- 商品受注表で商品マスターのデータを自動入力するためのエクセルマクロの作成方法について質問です。
- また、注文総数と各社の受注数を手入力したときに、合計とチェックの計算が自動的に行われるようにする方法も教えていただきたいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- Excel マクロ
マクロで一部分だけ範囲選択をかけたいのですが、 A列から指定行までと1行目の最右列までを範囲選択をしたいのですができるのですか? 出来ましたら、コードを教えてください。 コードの記述は下のとおりです。 Range("A1").Select Range(Selection, Selection.End(xlDown)).Select a1 = Range("xfd1").End(xlToLeft).Select Endcolumn = Application.WorksheetFunction.Max(a1)
- ベストアンサー
- Excel(エクセル)
- InputBoxの値で検索して転記するマクロ
1.InputBoxを3回表示させます。 2.ユーザーに入力してもらいます。 入力できるのは半角英数字のみでそれ以外は エラーメッセージを出したいです。 3.1回目は18桁か22桁以外の場合、 2回目と3回目は4桁以外の場合はMsgBoxを表示して 再入力を促します。 4.InputBoxに入力された値の3個を連結した値で Sheet2のA列を検索して 合致したらその行のG列の値を見ます。 5.G列に"済"とあったら MsgBoxを表示して 中止するか継続するか判断します。 6.継続した場合 その該当行の各列の値をSheet1にそれぞれ転記します。 Sheet2の該当行のB列→Sheet1のセルB3 Sheet2の該当行のC列→Sheet1のセルC3 Sheet2の該当行のD列→Sheet1のセルD3 Sheet2の該当行のE列→Sheet1のセルE3 Sheet2の該当行のF列→Sheet1のセルF3 7.かつSheet2の該当行のG列に 済 と転記します。 すでに済が記入されている場合は上書です。 以下のように作成しましたがエラーで動かなくて動作確認が出来ません。 どう直せばいいのか教えてください。 イレギュラー時の対応処理が必要だとも思うのですが動作しない為 思いつきません。 記述が滅茶苦茶なのですがこれが限界です。申し訳ありません。 Sub 表示板作成() Dim 検索値1 Dim 検索値2 Dim 検索値3 Dim 検索値4 Dim 判定値 Dim 判断 Dim 記録 Dim 確認 検索値4 = 検索値1&検索値2&検索値3 Do 検索値1 = Application.InputBox("型番を入力してください") If Len(検索値) < 18 Then MsgBox "18桁未満です。再入力しますか?" Loop Else Exit Do '検索値2と3も上記と同じ記述をここへ入れる '(現在省略) End If 判定値 = Application.WorksheetFunction.VLookup(検索値4.Value, Worksheets("Sheet2").Range("A2:G10000"), 7, 0) If 判定値 = "済" Then 判断 = MsgBox("発行済みです。再度データ取得しますか?", vbYesNo) Else Select Case 判断 Case vbNo Exit Sub Case vbYes Range("B3").Value = Application.WorksheetFunction.VLookup(検索値4.Value, Worksheets("Sheet2").Range("A2:G10000"), 2, 0) Range("B4").Value = Application.WorksheetFunction.VLookup(検索値4.Value, Worksheets("Sheet2").Range("A2:G10000"), 3, 0) Range("B5").Value = Application.WorksheetFunction.VLookup(検索値4.Value, Worksheets("Sheet2").Range("A2:G10000"), 4, 0) Range("B6").Value = Application.WorksheetFunction.VLookup(検索値4.Value, Worksheets("Sheet2").Range("A2:G10000"), 5, 0) Range("B7").Value = Application.WorksheetFunction.VLookup(検索値4.Value, Worksheets("Sheet2").Range("A2:G10000"), 6, 0) End Select End If 記録 = Application.WorksheetFunction.VLookup(検索値4.Value, Worksheets("Sheet2").Range("A2:G10000"), 7, 0) 記録.Value = "済" 確認 = MsgBox("これは●●用です。いいですか?", vbYesNo) Select Case 確認 Case vbNo Exit Sub Case vbYes Call 印刷 End Select End Sub
- ベストアンサー
- オフィス系ソフト
- エクセルマクロ offsetの使い方
Sub tess() With Worksheets("Sheet1") Cells(1,11)=Application.WorksheetFunction.Max(Range("A1:A10")) End With End Sub 上記でA1~A10のうちの最大値1つがA12に表示されます。 ここで上記コードに手を加えて、例えばA12にA8の”下のセル1つの値”を表示したいのですが、 Cells(1,11)=offset.(-1, 0).Application.WorksheetFunction.Max(Range("A1:A10")) と”offset(-1, 0)” を加えても動きません。WorksheetFunctionを加えても動きません。 offsetを入れる位置と使い方がわかりません。是非よろしくお願いいたします。(OS:WindowsXP、Excel2003)
- ベストアンサー
- Windows XP
- 【マクロ】値貼り付けに変更するには…?
当方Excel2003です。 ○フォルダ内に入力用のブック(複数)とまとめ用ブック(一つ)が存在し ○すべてのブックにはシートが一つしかなく、タイトル行の位置はまとめブック含めすべて同じ構成である ○入力用ブックのシート名は「入力」、まとめ用ブックのシート名は「まとめ」である 前提で、入力用ブックのデータ入力域をまとめ用ブックに順次コピーをしようと作成中のものですが、 以下の構文 Set c = .Range("B" & .Rows.Count).End(xlUp).Offset(1) あるいは With .Worksheets(入力).Range("B3:H3" & Range("H65532").End(xlUp).Row).Copy Destination:=c の部分について コピー貼り付け(そのまま)ではなく、 「値のみの貼り付け」に変更するには? どういうふうに変更したら良いのか どなたかご教示いただければ幸いです。 よろしくお願いいたします。 Sub 連続貼り付け() Dim sFile As String Dim c As Range Dim myPAth As String Application.ScreenUpdating = False sFile = Dir(ThisWorkbook.Path & "\*.xls", vbNormal) myPAth = ThisWorkbook.Path Do While 0 < Len(sFile) With ThisWorkbook.Worksheets("まとめ") Set c = .Range("B" & .Rows.Count).End(xlUp).Offset(1) End With Select Case sFile Case ThisWorkbook.Name: Case Else With Workbooks.Open(Filename:=myPAth & "\" & sFile, ReadOnly:=True) With .Worksheets(入力) .Range("B3:H3" & Range("H65532").End(xlUp).Row).Copy Destination:=c End With .Close SaveChanges:=False End With End Select sFile = Dir() Set c = Nothing Loop Application.ScreenUpdating = True End Sub
- ベストアンサー
- その他MS Office製品
- エクセルのマクロで結合セルに値を貼り付けたい
お世話になります。 マクロ初心者で本やネットで色々調べたのですが分からないため 教えていただけますと幸いです。 Sheet1にはB1:B3、B4:B6…と3行縦に結合された表があり、 Sheet2のA列には単独セルに商品の名前が入っております。 膨大な量のため、Sheet2のA列に入っている情報を Sheet1の縦に結合されたセルに一つずつマクロで転記したいと 考えております。 Range("B1:B100").Value = Range("A1:A100").Value のように記載すると、2個飛ばしで入力されてしまうので、 結合されている分飛ばされないで一つずつ転記したいのですが どのようにしたら良いでしょうか。
- ベストアンサー
- オフィス系ソフト
- マクロをすっきりさせたい・・・
いつもお世話になっております。 下記、マクロを組んだのですが、 簡潔にまとめるには、どうしたら良いでしょうか・・・ 宜しくお願い致します。 Set 範囲 = Workbooks("A.xls").Worksheets("マスター").Range("A2:G4000") ThisWorkbook.Activate 列番号 = 7 検索値 = (Worksheets("B").Range("B24")) Range("D14").Value = WorksheetFunction.VLookup(検索値, 範囲, 列番号, False) Set 範囲 = Workbooks("A.xls").Worksheets("マスター").Range("A2:G4000") ThisWorkbook.Activate 列番号 = 7 検索値 = (Worksheets("B").Range("B25")) Range("D15").Value = WorksheetFunction.VLookup(検索値, 範囲, 列番号, False) Set 範囲 = Workbooks("A.xls").Worksheets("マスター").Range("A2:G4000") ThisWorkbook.Activate 列番号 = 7 検索値 = (Worksheets("B").Range("B26")) Range("D16").Value = WorksheetFunction.VLookup(検索値, 範囲, 列番号, False)
- ベストアンサー
- オフィス系ソフト
- エクセルで簡単なマクロを組んだのですが…。
連続印刷を行う簡単なマクロを組んだのですが、指定行を変更しても1行目からまた印刷されてしまうのですがどうしてでしょうか?ちなみにこんなマクロです。 'リストを1行1枚の伝票形式で印刷するマクロ Sub 個票発行() Worksheets("個票").Activate Dim 個票カウンタ As Integer For 個票カウンタ = 1 To _ Application.WorksheetFunction.CountA(Worksheets("一覧表").Range("A1:A88")) Range("B1") = 個票カウンタ 印刷 Next 個票カウンタ End Sub よろしくお願いいたします。マクロ初心者です。
- ベストアンサー
- オフィス系ソフト
- エクセルの特定のセルの値が変化したらマクロを自動実行させたい。
エクセルの特定のセルの値が変化したらマクロを自動実行させたい。 エクセルにてシート1のB5に英数字を入力すると シート2のA列を検索し同じ値があるとその行のB列にある値をH6に表示をします。 【例】 シート1のB5に「A5684」と入力 シート2 A B 1:A5682 パイン 2:A5683 リンゴ 3:A5684 バナナ シート1のH6に「バナナ」と表示される シート2のA列にない場合はメッセージボックスで「データがありません」と表示します。 またシート3のA1に数字を入れておき、以下のマクロ、 'Sheet3から印刷すべき連番を獲得します。 Worksheets("Sheet3").Select Range("A1").Select 番号 = ActiveCell 連番 = "A" & Application.WorksheetFunction.Rept("0", 5 - Len(番号)) & 番号 'Sheet3の番号セル「B1」を更新します 番号 = 番号 + 1 ActiveCell.FormulaR1C1 = 番号 'Sheet1のセル「H7」欄に連番を表示します。 Worksheets("シート3").Select Range("B1").Select ActiveCell.FormulaR1C1 = 連番 Worksheets("シート1").Select Range("H6").Select '調べたいセルを記入 If IsError(ActiveCell.Value) Then errval = ActiveCell.Value Select Case errval Case CVErr(xlErrDiv0) MsgBox "#DIV/0! エラー" Case CVErr(xlErrNA) If vbOK = MsgBox(" データがありません") Then Exit Sub End Select End If Sheets("シート1").PrintOut Copies:=1 Range("B5").Select Selection.ClearContents '消去 Range("B5").Select End Sub でシート1のH7に(=シート3!B1)として 印刷ごとに1、2、3、と連番を入れています。 フォームで作成したボタンを押すとH6とH7の値が印刷されます。 そしてB5の値がDeleteされ(よってH6は#N/Aとなる) B5にカーソルが行って入力待ち状態になるようにしてあります。 これで、シート1のB5の値が変化又はH6が変化したら 印刷ボタンを押して印刷ではなく自動印刷されるように出来ますか? Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = B And Target.Row = 5 Then を使いましたが 「コンパイルエラー」とか Targetの所が色つきになって「End Sub」が必要です。 となってうまく出来ません。 お願いします。
- ベストアンサー
- オフィス系ソフト
- マクロ記述の意味
下記のようなマクロがかかれているのですが 記述の意味がわかりません。 教えてください。 Dim h On Error Resume Next Sheets("滞留在庫表").Select With Application.WorksheetFunction For h = 2 To Range("C9999").End(xlUp).Row Cells(h, "V") = "****" Cells(h, "V") = .VLookup(.Replace(String(18, "?"), 8, 1, Mid(Cells(h, "C"), 8, 1)), _ Sheets("表示再設定マスタ").Range("A5:B22"), 2, False) Next h End With
- ベストアンサー
- Visual Basic
- エクセルマクロについて
最終行の1つ下の行に100000と入力したいですが Range("b65536").Select Selection.End(xlUp).Select ActiveCell.Offset(0, 1).Value = 100000 としてもうまく行きません Selection.End(xlUp).Select この部分だけで なんとかなるのでしょうか よろしくお願い致します
- ベストアンサー
- オフィス系ソフト
お礼
mimeu様、回答ありがとうございました。 Worksheet_Change イベントを使ってみたら自動化できました。 感激です! しかし・・・ 商品マスターにないコードを入れた場合の処理が上手くできませんでした・・(文字数は一定ではないのです) しかし、とてもよいヒントをいただけましたので、少し自分でがんばってみます。 お礼が遅くなり申し訳ございませんでした。 とても参考になりました。