ネットから人気爆発!邦楽アーティストの現代の形とは!?

Excel VBAの初心者です。
今回、マニュアル本を見ながら試行錯誤でマクロにチャレンジしています。
用語や説明が上手くできないかもしれませんがよろしくお願いします。

OSはWindows2000、Excelのバージョンは2000です。

sheet1をメニュー画面として、コマンドボタンをいくつか貼り付けて、そのシート名を表示したコマンドボタンをクリックすると別のシートに
飛ぶようにしています。

別のシートに飛んで、そこで作業を終えたら、今度はそのシート上に貼り付けた『メニューに戻る』コマンドボタンをクリックしてsheet1のメニュー画面に戻るようにマクロを組みました。

ところが、作業用のシートからメニューに戻ると前回クリックしたコマンドボタンが表示上消えてしまっています。
そのコマンドボタンがあった位置にカーソルを持って行ってクリックするとちゃんとコマンドボタンの動作をします。

同じような質問がないか検索してみましたら『コマンドボタン上の文字の表示がおかしくなる』という質問があって、下記コードを入れたら解決したそうなので、Sheet1に下記のようなコードを入れてみました。
でもダメでした。

Private Sub Worksheet_Activate()

Application.ScreenUpdating = False
ActiveWindow.ScrollRow = 100
ActiveWindow.ScrollRow = 1

End Sub

解決方法のご教授をお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

こんにちは。



> Application.ScreenUpdating = False
> ActiveWindow.ScrollRow = 100
> ActiveWindow.ScrollRow = 1

ワークシートには Redraw メソッドが無いので、その代用コード
だと思います。以前、一度同じような状況になって、

  Application.ScreenUpdating = True

では再描写してくれなかったため、同様のコードを書いたことが
あります。ScrollRow を使ったのか覚えてませんが、確かシート
をスクロールさせたような..?

で、回答ですが、再描写が目的なので ScreenUpdating = False
として画面更新を止めてしまっては意味がないですよ。それ以前
のコード実行中に画面更新を止めている可能性があるので、
コードの終了部で、

Application.ScreenUpdating = True
ActiveWindow.ScrollRow = 100
ActiveWindow.ScrollRow = 1

としてみては?
    • good
    • 1
この回答へのお礼

そうなんです!
メニューに戻った時に、メニューから目的のシートに飛ぶためにクリックしたコマンドボタンだけが画面上で消えてしまっているんです。
でもそのコマンドボタンのあった位置をクリックしてみると、ちゃんとそのコマンドボタンで指定してあるシートに再度飛ぶので、画面表示上だけの問題だと想像して再描画をさせたかったのです。

画面を再描画させる手段を探して見つけたコードが質問中に書いたコードだったのですが、ScreenUpdatingをFalseにしてしまったのが間違いでした。

Application.ScreenUpdating = True
に直してみたら消えてしまったコマンドボタンも表示されるようになりました。

本当にありがとうございました。

お礼日時:2008/08/27 10:50

状況がわかりません。

補足願います。

1.Sheet1の列名は左よりABCD… 行No.は上より12345…と並んでいますか

2.SHee1に配置した全てのボタンが消えますか

3.コントロールツールボックス内のデザインモードをクリックしてください。
ボタンが表示されましたか? ボタンの左上角で右クリック→プロパティーで 下から3行目のVisibleは true になっていますか

4.マクロのコードを掲示願います。
ツールメニュー→マクロ→マクロ→マクロ選択→編集で表示されます。
表示中 ’(シングルコーテーション)で始まる色付きの行は不要です。削除して残りをコピー&ペーストします。

追伸 コマンドボタンには2種のプロパティーがあるのをご存知ですか?
一つはボタン自身のプロパティーで 上記3で表示されるもので
今一つは、セルとボタンのかかわりを設定するもので、マクロボタンの左上角右クリック→コントロールの書式設定から入るものです。

この回答への補足

説明がつたなくて申し訳ありません。
補足です。

1.Sheet1の列名は左よりABCD… 行No.は上より12345…と並んでいます。

2.メニュー用のSHee1から他のシートに飛ばすためにクリックしたコマンドボタンのみ消えています。

3.Visibleは true になっています。

4.コードを提示します。

sheet1のコードは

Private Sub CommandButton1_Click()
Worksheets("見積書").Activate
End Sub

Private Sub CommandButton2_Click()
Worksheets("請求書").Activate
End Sub

Private Sub CommandButton3_Click()
Worksheets("売上集計表").Activate
End Sub

Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
ActiveWindow.ScrollRow = 100
ActiveWindow.ScrollRow = 1
End Sub

------------------------------------------

シート "見積書","請求書","売上集計表"ではそれぞれ

Private Sub CommandButton1_Click()
Worksheets("sheet1").Activate
End Sub

と入れています。
各シート上で各々いろいろな作業をさせているので他のコードもありますが、今回コマンドボタンが消えてしまうのは画面表示上だけの問題のようなので省略させていただきました。

プロパティーにつきましては、初心者なので本当によくわかっていないのですが、今回の問題でネットで検索して、ボタン自身のプロパティ上でAutoSizeをTrueをFalseに変更してみたり、コントロールの書式設定のプロパティタブのオブジェクトの位置関係を「セルに合わせて移動やサイズ変更をしない」に変更したり、いろいろといじってみました。
エクセルは本当に奥が深く、勉強しなければならない事がたくさんあると実感しました。

補足日時:2008/08/27 11:09
    • good
    • 0
この回答へのお礼

冒頭のコード
Application.ScreenUpdating = Falseを
Application.ScreenUpdating = Trueに直したら
コマンドボタンもきちんと表示されるようになりました。

ありがとうございました。

お礼日時:2008/08/27 11:31

こんばんは。



>コマンドボタンが表示上消えてしまっています。
>コマンドボタン上の文字の表示がおかしくなる

コマンドボタンの文字が消えるということと、

ActiveWindow.ScrollRow = 100
ActiveWindow.ScrollRow = 1

と、どうつながるのですか?位置が違う場合でも、そんなコードは使わないです。たぶん、意味が違うのでは?マクロでは、そんなコードは、めったに書かないです。

「コマンドボタンが表示上で消える」と聞けば、ワークシート上から、フレームアウトしているかもしれませんが、ともかく、見えなくなっていると解釈できます。そういう話でしょうか。質問が良く分かりません。

たぶん、表示の問題は、フォームのコマンドボタンに書いているのでは?
その編集部分(Caption)に空白が入っているからではありませんか。ベテランでも、うっかりする失敗です。コントロールツールは、プロパティ一覧で確認できますが、フォームは出来ません。

ただ、Excel 2000 クラスのマニュアル本には、フォームを使うとかは、あまりないはずです。Excel2000 では、既に、隠しオブジェクトになってしまっているので、入門レベルでは、ほんの少ししか触れられないはずです。

この回答への補足

説明がつたなくて申し訳ありません。
補足です。

メニューに貼り付けたコマンドボタンをクリックして別シートに飛ばして、またメニューに戻った時に前回クリックしたコマンドボタンのみ画面上で消えてしまうのです。
でも、そのコマンドボタンの配置されているはずの位置をクリックすると、ちゃんとコード上の動作はしてくれるので、画面の表示上だけの問題だと推測しました。


コマンドボタンの文字が消えるということとのつながりとしては、コマンドボタンの表示がおかしくなったのを、きちんと表示させ直したら問題解決したという回答を見て、画面を再描画させる手段として参考にできるかな?と思ったからです。

使用しているExcelは2000なのですが、最近勉強を始めたばかりなので、購入したマニュアル本(3冊)は、みなExcel2002,2003,2007対応版を使用しています。

補足日時:2008/08/27 11:21
    • good
    • 0
この回答へのお礼

冒頭のコード
Application.ScreenUpdating = Falseを
Application.ScreenUpdating = Trueに直したら
コマンドボタンもきちんと表示されるようになりました。

ありがとうございました。

お礼日時:2008/08/27 11:32

お役に立てずに申し訳ありません。


原因ははっきりと分かりませんが、入れてみたというコードに疑問があったので返信させて頂きます。
Application.ScreenUpdating = False
というのは画面の更新を止めるという処理になりますので、
そのあとの
ActiveWindow.ScrollRow = 100
ActiveWindow.ScrollRow = 1
のあと
Application.ScreenUpdating = True
という処理を入れるべきではないでしょうか。
    • good
    • 0
この回答へのお礼

冒頭のコード
Application.ScreenUpdating = Falseを
Application.ScreenUpdating = Trueに直したら
コマンドボタンもきちんと表示されるようになりました。

ありがとうございました。

お礼日時:2008/08/27 11:30

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcel2010でフォームコントロールボタンが。

工事台帳をEXCEL2010で作成しています。
シートには縦に3ページ分の入力フォームがあり、データ入力後に
印刷したいページをオプションボタンで選択後し、
印刷ボタン(フォームコントロール)を押すと
対象ページを印刷範囲設定して印刷、という作業を
マクロで行っています。

このマクロはExcel2003で作成し(ファイル形式は.xls)、
Excel2010で変換(.xlsm)して使用しています。

このファイルで印刷ボタンを押すと、印刷後にボタンが消えてしまうのです。
何か規則性があるとかといろいろ調べてみたところ、「オブジェクトの選択と表示」
で「Button」となっているものだけが消えます。他にも、「Comment」、「テキストボックス」、
「Option Button」、「Group Box」、「AutoShape」、「Text Box」というものもあります。

書類作成期限の都合でここ数か月はショートカットでマクロを実行していますが
なかなか調べる時間がとれずに解決に至りません。
何が原因かわかる方がいらっしゃいましたらお教えください。

工事台帳をEXCEL2010で作成しています。
シートには縦に3ページ分の入力フォームがあり、データ入力後に
印刷したいページをオプションボタンで選択後し、
印刷ボタン(フォームコントロール)を押すと
対象ページを印刷範囲設定して印刷、という作業を
マクロで行っています。

このマクロはExcel2003で作成し(ファイル形式は.xls)、
Excel2010で変換(.xlsm)して使用しています。

このファイルで印刷ボタンを押すと、印刷後にボタンが消えてしまうのです。
何か規則性があるとかといろいろ調べてみたところ、...続きを読む

Aベストアンサー

私は経験がないので詳しくはわからないのですが、ボタンは見かけ上消えているだけではないでしょうか?

印刷処理をした後、表示位置がずれているとか、ボタンがあった位置をクリックすると印刷動作をすることはないでしょうか?

印刷処理をした後再描画する処理を加えるとボタンが復活するようなことがあるみたいです。

参考URL:http://oshiete.goo.ne.jp/qa/4280164.html

QEXCELのコマンドボタンが消えてしまった。元に戻したいのですが。

Excel2002(2000でも)において、自分でツールバーに好みのコマンドボタン(絵の描いてあるボタンです)を追加・登録していたのですが、急に標準のボタンに戻ってしまいました(フリーズした後)。そのとたん、頻繁に使用していたボタンが消えてしまい、すごく使いずらくなってしまい困っています。もちろん最初から登録し直せばよいのですが、元に戻す方法はないのでしょうか?

ご存知の方がいらした際には是非ご教示ください。

使用しているのは、EXCEL2002と2000です。
OSはWinXP HOMEとWinXP PROです。
1台は家で使用。1台は会社のです。

Aベストアンサー

こんにちは。Wendy02です。

>C:\Documents and Settings\******\Application Data\Microsoft\Excel

そうなんです。そこしかないのです。また、トラブルが起きるのも、このExcel.xlbと、もう1つは、Personal.xls なんですね。(Personal.xls=個人用マクロブックはない人もいます)

ちなみに、Personal.xls は、二箇所

C:\Documents and Settings\<ログイン ユーザ名>\Application Data\Microsoft\Excel\Xlstart\

C:\Program Files\Microsoft Office\..\XLStart

必ず、調子の良いときにバックアップしてくださいね。(^^;

--------------------------
以下は、書いてある内容は、保証はしませんが、私の場合は、レイアウトの問題もありますので、ユーザー設定の新規のツールバーの上に、ボタンは乗せてあります。もう凝ったボタンを作るのはやめましたが、ツールバーだったら、適当なバックアップのブックにコピーできます。これで、元のメニューには戻したことはありませんが(たぶんできるはずですが)、何があったかさえ、忘れてしまうことがあるので、まったく、なくなってしまうことは避けられます。

こんにちは。Wendy02です。

>C:\Documents and Settings\******\Application Data\Microsoft\Excel

そうなんです。そこしかないのです。また、トラブルが起きるのも、このExcel.xlbと、もう1つは、Personal.xls なんですね。(Personal.xls=個人用マクロブックはない人もいます)

ちなみに、Personal.xls は、二箇所

C:\Documents and Settings\<ログイン ユーザ名>\Application Data\Microsoft\Excel\Xlstart\

C:\Program Files\Microsoft Office\..\XLStart

必ず、調子の良いときにバックア...続きを読む

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

QVBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。

マクロを含むエクセル(EXCEL2000)をHTMLのページからハイパーリンクで呼び出しています。そのエクセルでボタン操作に従い罫線やセルの着色を行っています。しかし、着色結果が更新されません。スクロールバー等で画面を移動すると正しく着色されています。このエクセルを通常に起動した場合は、問題なく動作するのですが、シート全体を更新する方法を教えて下さい。
各関数では、以下のスクリーンアップデータの処理を入れています。
Application.ScreenUpdating = False
    (処理)
Application.ScreenUpdating = False

Aベストアンサー

たぶん、EXCEL独特の問題だと思うのですが、HTML の場合、すでに色の部分を表面上で使用しているので、それでメモリが占有させているのではないかと私は思っています。

他にも、

 ActiveWorkbook.HTMLProject.RefreshDocument True

というのがありますね。
ホスト アプリケーション内のブックに含まれる HTML プロジェクトを更新する、というのがありますね。

Qエクセル:マクロ「Application.CutCopyMode = False」って?

エクセルのマクロを記録していると

「Application.CutCopyMode = False」

というものがよく出てきますが、これは何でしょう?
どういう意味のものかわかりません。
削除しても差し支えないのもでしょうか?

Aベストアンサー

「Application.CutCopyMode = False」の前で
セルのコピー、または切り取りを行っていると思います。
これは、その操作(セルのコピー、または切り取り)を無効にしているだけです。
------------
Range("A1").Select
Selection.Copy ← これを無効にしている
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
------------
上記の場合であれば、「Application.CutCopyMode = False」を削除しても問題ありませんが、
以下の場合、貼り付け処理でエラーになります。
------------
Range("A1").Select
Selection.Copy
Range("A2").Select
Application.CutCopyMode = False
ActiveSheet.Paste ← ココでエラー
------------
ご自分で、セルをコピーしてみると分かると思いますが、コピーした範囲が点線で点滅されます。
「Application.CutCopyMode = False」をすると、
その点滅がなくなります。

「Application.CutCopyMode = False」の前で
セルのコピー、または切り取りを行っていると思います。
これは、その操作(セルのコピー、または切り取り)を無効にしているだけです。
------------
Range("A1").Select
Selection.Copy ← これを無効にしている
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
------------
上記の場合であれば、「Application.CutCopyMode = False」を削除しても問題ありませんが、
以下の場合、貼り付け処理でエラーになります。
------------
...続きを読む

QDoEvents関数って何?

こんにちは。

VBAやプログラミングに詳しい皆様に
教えていただきたい質問があります。

cells(1,1)からcells(5000,1)までの値を消去するときに
処理の進行状況を表示するためにuserform上にプログレスバーを表示したいと思います。

そこで下記のようなコードを入力しました。

userform1.show
for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
next i
unload userform1

しかしこれだとuserformの背景が真っ白になってしまい
ラベルの文字も消えてしまいます。
そこで「EXCEL VBA パーフェクトマスター」という本を見たら

for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
DoEvents
next i
unload userform1
と入力すれば解決することがわかりました。

しかし「DoEvents」についてあまり詳しく書いていなかったのでDoEvents関数をヘルプで見ると、
「発生したイベントがオペレーティング システムによって処理されるように、プログラムで占有していた制御をオペレーティング システムに渡すフロー制御関数です。」

と書いてあるのですが正直、書いてあることがよくわかりません。

どなたかDoEvents関数について、
もう少しわかりやすく教えていただけませんか。
それから、最初に書いたコードで実行すると
ユーザーフォームの背景が真っ白になってしまう原因も
教えていただけませんか?

よろしくお願いいたします。

こんにちは。

VBAやプログラミングに詳しい皆様に
教えていただきたい質問があります。

cells(1,1)からcells(5000,1)までの値を消去するときに
処理の進行状況を表示するためにuserform上にプログレスバーを表示したいと思います。

そこで下記のようなコードを入力しました。

userform1.show
for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
next i
unload userform1

しかしこれだとuserformの背景が真っ白になってしまい
ラベルの文字も消えてしまいます。
そ...続きを読む

Aベストアンサー

簡単に言うと、
OS に制御を渡すってことです。(ヘルプそのまんま)
時間が掛かるループ処理などの場合、ループが終わるまで制御は独占されてしまいます。
ですのでループ中は OS や Excel そのものにも再描画をさせる暇さえ与えません。
途中に DoEvents を入れると制御が OS に渡るので、OS は溜まっていた処理をそこで行うことができます。
結果、フォームの再描画などが行われることになります。

注意点ですが、
Private Sub CommandButton1_Click()
  Dim i As Long

  For i = 1 To 50000
    DoEvents
    Cells(i,1) = ""
  Next i
End Sub

Private Sub CommandButton2_Click()
  MsgBox "hoge"
End Sub

っていうフォームのコードがあった場合、
DoEvents を入れることによって、ループ中にユーザーがCommandButton2 を押すことによって CommandButton2 のクリック イベントも動いちゃいます。
CommandButton1 のクリック イベントではループの前に
CommandButton1.Enabled = False
CommandButton2.Enabled = False
を書いてフォーム上の CommandButton を無効にしておき、ループが終わったら
CommandButton1.Enabled = True
CommandButton2.Enabled = True
と書いて CommandButton を有効に戻してください。

これを工夫すれば、CommandButton2 で CommandButton1 のループを途中キャンセルする処理もすることができます。

Private Canceled As Boolean

Private Sub CommandButton1_Click()

  CommandButton2.Enabled = False

  Dim i As Long
  For i = 1 To 50000
    DoEvents

    If Canceled = True Then
      MsgBox "キャンセルしました"
      Exit Sub
    End If

    Cells(i, 1).Value = ""
  Next i
End Sub

Private CommandButton2_Click()
  Canceled = True
End Sub



コードの行頭にあるスペースは見易さのために全角スペースで作成していますので、これをこのままコピペするとエラーになるかもしれません。
コピペするなら行頭の全角スペースを半角スペースに直してください。

簡単に言うと、
OS に制御を渡すってことです。(ヘルプそのまんま)
時間が掛かるループ処理などの場合、ループが終わるまで制御は独占されてしまいます。
ですのでループ中は OS や Excel そのものにも再描画をさせる暇さえ与えません。
途中に DoEvents を入れると制御が OS に渡るので、OS は溜まっていた処理をそこで行うことができます。
結果、フォームの再描画などが行われることになります。

注意点ですが、
Private Sub CommandButton1_Click()
  Dim i As Long

  For i = 1 To 50000
...続きを読む

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

Qエクセル VBA ユーザーフォームを閉じる

ユーザーフォームを開く時は
UserForm1.Showですが
閉じる時は?
UserForm1.Close
だとコンパイルエラーになります。
End
にするしかないですか?

Aベストアンサー

Unload Me とか Unload UserForm1 でユーザーフォームを閉じることができます。

QEXCEL VBAで計算値を四捨五入、切り上げ、切捨てする方法

ネットで探してみたのですが、計算結果を四捨五入して特定のセルを
返すにはどうしたらいいのでしょうか?

Sub hokangosa()

Dim ZPS As Double
Dim ZPOS As Double
Dim DMN As Double
MsgBox (" >>> 補間誤差自動計算 <<< ")
MsgBox (" >>> 初期値入力します <<< ")
ZPS = InputBox(">>> ステップを入力してください<<<")
ZPOS = Sheet1.Cells(22, 4).Value
DMN = ZPOS / ZPS
Sheet1.Cells(23, 6).Value = DMN
End Sub

ここでDMNの値を四捨五入したいです。

またこれとは別に切上げ、切捨ても教えていただけるとありがたいです。

Aベストアンサー

DMN = Application.WorksheetFunction.Round(ZPOS / ZPS, 0)
で、四捨五入
DMN = Application.RoundDown(ZPOS / ZPS, 0)
で切り捨て
DMN = Application.RoundUp(ZPOS / ZPS, 0)
で切り上げです。

引数で、対象桁を変更できます。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング