- ベストアンサー
マクロ 行挿入で数式も反映する方法
マクロのフォームを使ってデータ入力・行の挿入を登録したのですが、 シートに入力した計算式が反映されません。 insertRow = Range("登録品目データ").Rows.Count Range("登録品目データ").Rows(insertRow).Insert Shift:=xlDown Range("登録品目データ").Cells(insertRow, 1) = ModelNameBox.Text Range("登録品目データ").Cells(insertRow, 2) = PartNumberBox.Text Range("登録品目データ").Cells(insertRow, 3) = PartNameBox.Text Range("登録品目データ").Cells(insertRow, 4) = StockingPriceBox.Text Range("登録品目データ").Cells(insertRow, 5) = PackingAmountBox.Text Sheets("品目一覧").Protect Unload AddCommodityDlg End Sub 上記Box5に入力したデータを元に、VLOOKUP関数で別のシートの情報を 反映させる式を入力しているのですが、フォームを使って情報入力し、 最下行に挿入すると計算式が反映されません。 どうすればいいか教えて下さい。 宜しくお願いします。
- みんなの回答 (6)
- 専門家の回答
関連するQ&A
- フォームの内容をセルの最上行に挿入したいのですが、やり方が分かりません。
VBAの初心者ですが、ご指導よろしくお願い致します。 ユーザーフォームの内容を最下行に行を挿入し、そこに転記するのは 出来たのですが、最上行に挿入し転記する方法が分かりません。 最下行への挿入はこの様なコードですが、一応動作しております。 Private Sub CommandButton1_Click() Dim insertRow As Long insertRow = Range("コード表").Rows.Count Range("コード表").Rows(insertRow).Insert Shift:=xlDown Range("コード表").Cells(insertRow, 1) = TextBox4 Range("コード表").Cells(insertRow, 2) = ComboBox2 Range("コード表").Cells(insertRow, 3) = ComboBox3 Range("コード表").Cells(insertRow, 5) = ComboBox4 End Sub よろしくお願い致します。
- 締切済み
- オフィス系ソフト
- マクロ最終行挿入
下記のような表があって表の最終行に行を挿入したい場合にこのようなマクロを組んでみたのですが、思ったような動きをしてくれません。 アドバイスを頂けたらありがたいです。またこの場合名前の定義などを使う必要はあるのでしょうか。どうかよろしくお願いします。 A B C D E F 1 商品一覧 2 品名 売値 原価 利益 3 たい 1000 800 200 4 ひらめ 1200 800 400 5 かれい 1050 1200 -150 6 さわら 300 150 150 ※ ここに行を挿入したい※ Sub 行挿入() '表の最下行に行を挿入 Dim n As Long n = Range("商品一覧").Rows.Count Range("商品一覧").Cells(n, 1).EntireRow.Insert End Sub
- ベストアンサー
- オフィス系ソフト
- エクセル
下記のようなマクロを作成しましたが、実行するとエラーメッセージ(コンパイルエラー SubまたはFunctionが定義されていません)が表示され止ってしまいます。 解決方法を御指導お願い致します。 Private Sub CommandButton2_Click() '得意先登録ダイアログで登録ボタンをクリック時実行 Dim check As Long '重複の有無(=0:重複せず,>0:重複) Dim insertRow As Long '挿入行位置 '入力必須項目のチェック If koudo.Text = "" Then MsgBox MsgBox "得意先コードを入力してください", vbExclamation, "入力エラー" koudo.SetFocus Exit Sub End If If syamei.Text = "" Then MsgBox "得意先名を入力してください", vbExclamation, "入力エラー" syamei.SetFocus Exit Sub End If '重複チェック On Error Resume Next check = 0 check = WorksheetFunction.Match(clnt(koudo.Text), Range("得意先一覧").Columns(2), 0) On Error GoTo 0 If check > 0 Then MsgBox "この得意先コードは、すでに入力されています", vbExclamation, "入力エラー" koudo.SetFocus Exit Sub End If Sheets("得意先マスター").Unprotect With Range("得意先一覧") '最下行に一行挿入する insertRow = .Rows.Count .Rows(insertRow).Insert Shift:=xlDown 'データをセルに入力する .Cells(insertRow, 1) = tourokubi.Text .Cells(insertRow, 2) = koudo.Text .Cells(insertRow, 3) = syamei.Text .Cells(insertRow, 4) = huri.Text End With Sheets("得意先マスター").Protect Unload 得意先登録ダイアログ End Sub
- ベストアンサー
- オフィス系ソフト
- テキストボックスから、複数のシートに転記する方法・・・
初心者でございます。 テキストボックスに入力したデータを、データベースに行を挿入してその行の各セルへ転記する方法として、以下の方法をとっています。 Private Sub 登録Button1_Click() Dim rowscount As Long rowscount = Range("データ範囲").Rows.Count Range("データ範囲").Cells(rowscount, 1).EntireRow.Insert Range("データ範囲").Cells(rowscount, 2) = TextBox1.Text このテキストボックスに入力したデータを別の2つのシートへも転記したいのですが、どのように複数の転記先を指定してよいかわかりません。どうかご教授お願いいたします。(Excel2003を使用しております)
- 締切済み
- Visual Basic
- マクロで全てのシートで条件を満たすシートに行を挿入するにはどうしたらいいですか
マクロ初心者です。自分でも作ってみたのですが、なかなか思うようにいかず困っています。 book内のシート3つ目から最後のシートで、条件に一致するシートの特定位置に行を挿入するということがしたいのですが。 条件とは、1列目の最後の行に「合計」と記入されていれば、行を4行挿入し、上の書式をコピーするというものです。 下記に記しているマクロは、シートを指定した場合には動くのですが、これにシートをnとして、FOR...Nextを付け加えてシートを順番に参照させようとしても、うまくいきません。 Sub 行挿入sample3() With Sheets("10007") For i = 7 To .Cells(Rows.Count, 1).End(xlUp).Row If .Cells(i + 1, 1) = "" Then Exit For ElseIf .Cells(i + 1, 1) = "合計" Then Range(Cells(i + 1, 1), Cells(i + 4, 1)).Select Selection.EntireRow.Insert Range(Cells(i, 1), Cells(i, 3)).Select Selection.Copy Range(Cells(i + 1, 1), Cells(i + 4, 3)).PasteSpecial xlPasteFormats End If Next i End With End Sub 知識をお持ちの方、教えていただけるととても助かります。よろしくお願いします。
- ベストアンサー
- Visual Basic
- sheet1上のマクロでsheet2に画面を切り替えずに行を挿入させたい
Excel2002ユーザーです。 sheet1上で実行するマクロで、画面を切り替えることなく、 いわば水面下でsheet2の行1に空行を挿入させ、常に最新のデータ(Sheet1上にあるセルの値)を書き込んでいく、 ということをしたいのです。 古いデータは順次、下に送られる形です。 まずデータの書き込み以前に、挿入ができないのです。 sheet1上のマクロで、 Worksheets("sheet2").Rows("1:1").Select Selection.Insert Shift:=xlDown と書き込みましたがダメでした。 (実行時エラー'1004': RangeクラスのSelectメソッドが失敗しました) Sheets("sheet2").Select Rows("1:1").Select Selection.Insert Shift:=xlDown の場合、行挿入はOKですが、sheet2に画面が切り替わってしまいます。 常にsheet1の画面を表示させたままにしてこのようなことを行いたいのですが、 良きアイデア、アドバイスがありましたら御教授ください。 よろしくお願い致します。
- ベストアンサー
- オフィス系ソフト
- 【マクロ】任意の行の下へ行の挿入&選択
セルA3:DS750の表があります。 1行=1顧客として使用していますが、度々表に行を挿入して顧客を追加しています。 その為、以下のマクロを作ってみたのですが、最後に【挿入した行をActiveにする】事ができません。 ★挿入位置は、都度変わります。 ★一度に行う挿入行数は1行(多くても3行)の為、マクロは1行追加で作成しています。(行数の指定までは力量により出来ませんでした・・) ★1行目にサンプルを(非表示で)置いて、それを任意の行へ挿入させています。 1行目のサンプルを非表示のまま貼り付けると、挿入した行も非表示になってしまったので、一度再表示させてから処理させています。 サンプル行には、条件書式、数式などがところどころ入っています。 処理の最後に【'行を指定して挿入】と同じ行をActiveにする方法が知りたいです。 記録マクロをいじっただけなので見づらいと思いますが、よろしくお願い致します。 -------------------------------- Sub 挿入() '1行目を再表示 Rows("1:1").Select Selection.EntireRow.Hidden = False '1行目をcopy Rows("1:1").Select Selection.Copy '行を指定して挿入 InsertRow = InputBox("何行目の下に挿入しますか?") + 1 Cells(InsertRow, 1).Insert Shift:=xlDown '1行目を非表示 Rows("1:1").Select Selection.EntireRow.Hidden = True '挿入した行をactiveにする ・・・ end Sub -------------------------------- マクロが根本的におかしかったらすみません。。 アプローチ方法が他にある場合にもご指摘いただけると助かります。
- ベストアンサー
- オフィス系ソフト
- 行をコピーして挿入する際のコピー時点滅をなくしたい
マクロを勉強し始めたばかりの超初心者ですが、 質問させてください。 添付資料のように飲食店でのクレジットカード支払いの明細書を作成中です。 表のように、カード使用件数が一日に1件ではなく、実際には件数はバラバラです。 予め入力用の行を用意しておくのはスペースが邪魔で消去したりも面倒なので コマンドボタンを利用し、実際にカードを使用した件数に合わせて行を挿入し、入力してゆくようにしました。(コードはネットでなんとか拾ってきました。) 挿入する行は予め入力規則を入れてある、空白の行(ここでは画像には入ってませんが、2行目)をコピーして挿入するようになってます。 以下のマクロを使ってコピー→挿入は出来るのですが、 コピーする際に出てくる点滅が視覚的に邪魔で気になります。 もし消せるようであれば教えてください。 Private Sub CommandButton1_Click() Rows("2:2").Select Selection.Copy insertRow = InputBox("何行目の下に挿入しますか?") + 1 Cells(insertRow, 1).Insert shift:=xlDown Application.CutCopyMode = False Rows(insertRow).Select End Sub ※Application.CutCopyMode = False で、点滅が消えるとかなんとか。。。。見かけて入れてみたのですが、 点滅は変わらず・・・・そもそも用語をそこまでまだ知らないのが問題なのですが。。。 お手数おかけしますが、分かる方おられましたらご教授の程よろしくお願いいたしますm(__)m
- ベストアンサー
- その他MS Office製品
- EXCEL(VBA)で1行おきに行を選択する方法
こんにちは。VBAは苦手なので教えてください。 EXCELのsheet1にあるリストに、下記マクロで1行おきに 空白行を挿入しました。 Sub test1() '隔行で空白行を挿入 Dim rw As Long 'セル For rw = Range("A1").End(xlDown).Row To 2 Step -1 Rows(rw).Insert Next End Sub 同じファイルのSheet2の1行目<Rows("1:1")>に、計算式が入力されています。 マクロで挿入した空白行全てを選択し、そこへSheet2の1行目のコピーを 貼り付けたいです。 ぜひ、良い方法を教えてください。
- ベストアンサー
- オフィス系ソフト
- データ数が可変の場合の合計式
データ数が可変の場合の合計式について御指導お願い致します 様式(11行目から時系列で入力) H列に摘要を入力 K列に日毎の売上金額を入力 ← 11行目から時系列で入力し空欄なし L列に入金額を入力 ← 入金時入力の為空欄あり ユーザーフォームで作成した入力フォームで入力し、登録時一行挿入しています '最下行に一行挿入する insertRow = .Rows.Count .Rows(insertRow).Insert Shift:=xlDown 閉め日に下記のように行ないたく御指導お願い致します。 明細の次の行の各列に下記表示をしたい H列 → 合計と表示したい K列 → 明細の合計を表示したい L列 → 入金の合計を表示したい 宜しく御願いいたします。
- ベストアンサー
- オフィス系ソフト
補足
ご回答ありがとうございます。 色々説明不足で申し訳ありません。 VLOOKUP関数は下記のように入力しています。 =IF(F4="","",VLOOKUP(F4,登録ケース一覧,5,FALSE)) ご指摘の通り、VLOOKUP関数で名前-定義を使用していますが、上記“登録ケース一覧”もデータを増やしていく為、 名前-定義はできれば使用したいのです。 また、名前-定義を使用せず、下記に変更しても反映されませんでした。 =IF(F4="","",VLOOKUP(F4,梱包容器一覧!A3:E17,5,FALSE)) どうすればいのでしょうか。。。