- ベストアンサー
エクセルマクロ中の再計算について
A1 -> 11(初期値) A2 -> if(A1>10,1,2) 上記の様に表にデータが入っている場合に以下のマクロを実行した時に再計算されずにマクロの処理が進み遅くなって再計算が実行されるため正確なマクロが実行されないのですが、どうしたら確実に再計算を実行したあとにマクロが処理を継続するようにさせる事が出来るのでしょうか、よろしくお願いします。なお、実際のマクロ及び関数は違います。 Range("A1").value = 1 Calculate if Range("A2").value = 1 then msgbox "OK" endif end 以上の場合に『OK』メッセージが表示されるものと理解していますが、表示されずに終了してしまいます。
- みんなの回答 (20)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (19)
- papayuka
- ベストアンサー率45% (1388/3066)
- papayuka
- ベストアンサー率45% (1388/3066)
- sakenomo
- ベストアンサー率52% (35/67)
- papayuka
- ベストアンサー率45% (1388/3066)
- imogasi
- ベストアンサー率27% (4737/17068)
- ki-aaa
- ベストアンサー率49% (105/213)
- diashun
- ベストアンサー率38% (94/244)
- bear-3
- ベストアンサー率42% (26/61)
- ki-aaa
- ベストアンサー率49% (105/213)
- 1
- 2
関連するQ&A
- Excelのセルの比較について
Excelのマクロにてセルの比較を行っています。 A1に"123" A2をハイパーリンクに指定して"123"と表示しています。 表示形式はどちらも通貨で表示しています。 If Range(A1).Value <> Range(A2).Value Then MsgBox "同じではない" Else MsgBox "同じ" End If と比較しているのですが"同じではない"が表示されてしまいます。 試しに MsgBox Range(A1).Value と MsgBox Range(A2).Value を表示してみたところ、どちらも"123"と表示されました。 セルに表示されている値で比較するにはどうしたらいいのでしょうか?
- ベストアンサー
- オフィス系ソフト
- エクセルマクロでの計算について(2007)
エクセルマクロ初心者です。 試行錯誤しながら作成しています。 セルB1には直接計算式を入れており(=(480+(A1)*10)/480*I1) その結果次第(70以下)でセルC1に計算結果(=(75-B1)*.48)をいれて 70より大きければセルC1に"-"を入れたいのですが上手く計算してくれません。 この処理を約65個のセルにしようと思っています。(セルの列はバラバラです) どうすればよいかご教示ください。 ちなみに現在作成している文は Private Sub 計算_Click() Worksheets("sheet2").Select If Range("B1").Value <= 70 Then Range("C1").Formula = "=(75 - (B1)) * 0.48" Else: Range("C1").Value = "-" End If End Sub よろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
- エクセルVBA記述誤りの解決お願い
A1~A20のセルに入力データが一切無い場合に、入力を促すメッセージを表示させるマクロを作りましたが,「実行時エラー13 型が一致しません」のエラー表示が出ます。 デバックすると下記マクロの「If Range("A1:A20").Value = "" Then」の部分でストップしていました。 いろいろとやってみましたが、うまくゆきません。 If Range("A1:A20").Value = "" Then MsgBox ("参加マークーを入力ください") Exit Sub End If 記述上の誤りがあるようですので、ご教示いただけましたら幸いです。
- ベストアンサー
- オフィス系ソフト
- マクロif文での条件式について
マクロ初心者です。Excel2003を使用しています。 仕事上で使用しているエクセル表より、ある値以上の項目を抽出し、その値を用いて計算結果を出すためのマクロを作成いたしました。いろいろなサイトを参考にして自分なりに書いてみたのですが、どうしてもうまくいきません。 表は簡単なもので、以下のようなものです。 1 9 2 24 3 45 4 67 1列目は使用濃度、2列目は測定値です。この測定値が30より大になった項目を抽出し、計算式にその値を代入し計算結果として出したいのです。また、全ての測定値が30以下だった場合は、計算結果の欄に”<30”とのように表示をさせたいと考えています。 以下のようにマクロを書いてみました。 Sub Macro1() For i = 1 to 4 if Worksheets("sheet1").cells(i , 2).value <=30 then Range("A5")=0 '測定値が=<30だった場合は計算をしないので、フラグとして値を入力 Elseif Worksheets("sheet1").cells(i , 2).value > 30 then Range("A5")=Cells(i , 1) Range("B5")=Cells(i , 2) Exit for Endif if Worksheets("sheet1").Range("A5").value > 0 then Range("A6").Formula ="=(50-B5) / A5" Elseif Worksheets("sheet1").Range("A5").value = 0 then Range("A6") ="<30" Else Endif Next i End Sub >30だった項目の抽出まではできたのですが、計算値をだすところがどうしてもうまくいかず、A6セルにはどんな値でも”<30”と入力されてしまいます。 マクロの基本的なルールなどがまだまだ未熟なので、基本的な構文も書けていないと思います。 全然方向性が違うかもしれないので、そういった点も含めてご教示いただけたら幸いです。 分かりにくいかもしれませんが、どうぞよろしくお願いいたします。
- ベストアンサー
- その他([技術者向] コンピューター)
- Excelのマクロで質問です
セルに関数で文字が入った時にマクロを実行させる方法を教えて下さい。 今回行いたいのは、C9~C19セルにNGと表示された場合にメッセ―ジを表示したいです。 Private Sub Worksheet_Change(ByVal Target As Range) '変化のあったセルがA1セルか? If Intersect(Target, Range("C9:C19")) Is Nothing Then Exit Sub '条件判定:A1セルの値は 1 か? If Target.Value = "NG" Then MsgBox "NGです" End If End Sub このような場合C9~C19セルにNGと打ち込めばメッセ―ジが表示されるのですが あらかじめ、関数で =IF(M9="","",IF(Q9<M9,"OK","NG")) というような式がそれぞれのC9、C10、C11・・・・セルに入ってしまっています。 これだと、例えばC9セルにNGと表示されてもマクロは起動せず、メッセージが表示されません。 関数をマクロに盛り込むか、このままでもマクロが起動できるような書き方があるか 教えてください。 すみません。補足でQ9セルには =IF(I9="","",I9+"07:01")のような関数が 入力されています。
- ベストアンサー
- Excel(エクセル)
- エクセルのマクロについて
エクセルのマクロ実行についてですが、 例えば、 E1セルの値が1ならばこうする(マクロ名 E1セル1) E2セルの値が2ならばこうする(マクロ名 E1セル2) E3セルの値が3ならばこうする(マクロ名 E1セル3) というマクロを別々に作りました。 これをボタンで実行する時に、 If Range("E1").Value = 1 Then ElseIf Range("E1").Value = 2 Then 2行目には作ったマクロを全部貼り付けないといけないのでしょうか? それとも簡単にこの場合は、マクロ名E1セル1を実行するという命令することができるのでしょうか? できるのであれば、入力方法を教えてください。 質問が分かりにくいと思いますが、よろしくお願いします。
- ベストアンサー
- Windows XP
- エクセルのマクロを利用して
マクロ初心者でです。 いろんなサイトから引用させて頂き次のようなマクロを作成しました。 実行すると、日付と担当者氏名(A1)がファイル名となるものです。 そこで教えて頂きたいのですが、実行すると保存先がマイドキュメントに なるのですが、これを例えば「C:\日報」というフォルダが指定されるようにしたいのですが、 自分なりに、いろいろ試したのですが全くできません。 宜しくお願い致します。 Sub 名前をつけて保存() Dim SaveFileName As String, re As Variant With Sheets("sheet1").Range("A1") If .Value = "" Then MsgBox "名前が入力されていません", vbExclamation Exit Sub Else SaveFileName = Format(Now, "yyyymmdd") & "_" & .Value End If End With re = Application.GetSaveAsFilename(SaveFileName) If re = False Then MsgBox "保存を中止しました", vbExclamation Else MsgBox "日報をを保存しました", vbInformation End If End Sub
- ベストアンサー
- その他MS Office製品
- エクセルでセルに文字が入力されたらマクロを実行
前回どなたかが質問されて回答を見せてもらったら私のやりたいことと同じだったので実行してみましたが出来なかったのでもう一度質問をさせてください。 1.実行したのですが、なにも実行されません。 2.実行したらメッセジBOXだけは実行するのですが、後のコマンドが実行されずにエラーになります。 もう一度詳しく教えてください。 マクロ初心者ですよろしくお願いします。 1.【シートモジュールで条件判定し、マクロを起動する】 通常はこちらの方法が使われます。 Private Sub Worksheet_Change(ByVal Target As Range) '変化のあったセルがA1セルか? If Target.Address = "$A$1" Then '条件判定:A1セルの値は 1 か? If Target.Value = 1 Then MsgBox "A1セルは条件を満たしました" End If End If End Sub 2.【ワークシート上で条件判定し、マクロを起動する】 処理内容にもよっては不向きな場合もありますが、こんな方法も あります。 マクロを Sub ではなく、Function 、、つまり関数にしてしまいます。 Function TestMacro() '<-- Sub を Function に替える MsgBox "A1セルは条件を満たしました" TestMacro = "" '戻り値はなし End Function そして、ワークシートの B1 セルに次の式を入力します。()は必須 です。 =IF(A1=1,TestMacro(),"")
- ベストアンサー
- オフィス系ソフト
- エクセルのマクロのコード(?)を教えてください!
マクロ初心者……どころか今日初めて触った者です。 なんだか楽しかったので、エクセルでスペルクイズを作ってみようかなーといじっています。(`・ω・´) が、何も知らないので何も進みません(汗) スペルを打って、 合ってたら黒で「OK!」 間違ってたら赤で「Miss!」と表示させたいです。 それから、間違ってたらMiss!の右側のセルに正しい答えを表示したいです。 今判るのは、例えばdoctorが答えのときだと↓だけです…… If Range("c4").Value = "doctor" Then Range("d4").Value = "OK!" Else Range("d4").Value = "Miss!" End If Miss!の字を赤くする方法と e4セルに正答を表示させる方法を教えてください。 どこに何と書けばいいでしょうか? 入門者すぎる質問ですみません! どなたかよろしくお願いいたしますm(_ _)m
- ベストアンサー
- Visual Basic
- マクロの自動実行
Private Sub Worksheet_Calculate() Range("b1").Value = Range("b1").Value + Range("a1").Value End Sub このマクロをA1セルの数値が変わるたびに自動で実行するには どうすればいいでしょうか?
- 締切済み
- その他MS Office製品
補足
「Yahoo! eグループ」にて送信しました。 よろしくお願いします。