トップページtech
1001コメント417KB

Excel VBA 質問スレ Part33

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2013/10/17(木) 22:04:40.64
ExcelのVBAに関する質問スレです

                   ___
       ___      /____ヽ      ____
      /____\    | |´・ω・`| |    /___ヽ
      .l |´・ω・`|  ニX二 . ̄ ̄ ̄  二X二  |´・ω・`| l 俺たちに任せろ
      !、 ̄ ̄ ̄  ヽ   |       |    /    ̄ ̄ ̄/
       ヽ_/ヽ、  ヽ__)  \__/\_/.   /_/  ノヽ_/
             ̄                ̄ ̄

前スレ
Excel VBA 質問スレ Part32
http://toro.2ch.net/test/read.cgi/tech/1381151717/

このスレはコード書き込みOKです。
作成依頼もOKですが、作成依頼限定ではありません。

コードが嫌な人はこちらのスレへ
http://toro.2ch.net/test/read.cgi/tech/1381151995/l50
0756デフォルトの名無しさん2014/06/17(火) 18:58:25.63ID:Oy7I6t4I
>>754
こんな方法はどうだろうか?

3x1 の配列でTranspos問題でるなら

  ReDim Preserve TestArray(1 To 3, 1 To cnt + 1)

として 3x(cnt+1) の配列でReDimして Transposする

んで読み込む時は 配列の1次元目の最終データ
つまり
 TestArray(cnt+1, 1)
 TestArray(cnt+1, 2)
 TestArray(cnt+1, 3)
は無効データとして無視する
0757デフォルトの名無しさん2014/06/17(火) 21:32:49.72ID:l2MahTzn
>>754
Transposeの仕様っぽいから、1次元の配列になるのはどうしようもないんじゃない

そもそもWorksheetFunction.Transpose使う必然性がわからん
俺なら配列そのもの変換せずに、読む方で行列入れ替えて読むが
どうしても配列変換したければ自分で配列変換する関数作る
0758デフォルトの名無しさん2014/06/17(火) 23:57:50.59ID:SruwTgIk
スクロールロックキーを押してないのに
勝手にスクロールロックされるという怪現象に長年悩まされてます
これまでは発生頻度が低いから気にしてなかったのですが、
最近バーコードリーダーを接続したPCで頻繁に発生するようになりました

あまりにうざいので、VBAで対抗しようと考えて
まずは Call Application.OnKey("{SCROLLLOCK}", "") としてみたのですがダメでした
何か良い方法ないでしょうか

SCROLLLOCKのON/OFFを判定して、
ONならOFFにする方法なんて無いでしょうか
0759デフォルトの名無しさん2014/06/18(水) 00:03:23.37ID:EzL2wKEq
一番いいのは、VBAで対処なんて余計なこと考えずにそのPCをさっさと修理に出すことだな
0760デフォルトの名無しさん2014/06/18(水) 00:05:05.34ID:0b/GVhNi
>>752
どうもありがとうございました!
0761デフォルトの名無しさん2014/06/18(水) 00:47:57.54ID:+FU8wlvZ
>>758
「勝手にスクロールロック」でぐぐったらこんなん出た。
マウスのチルトホイールが悪さしてたらしい。
http://orbit.cocolog-nifty.com/supportdiary/2009/08/post-2f3e.html
07626622014/06/18(水) 07:46:00.29ID:SiDz/mVA
>>755>>756>>757 ありがとうございます。
Transposeの仕様であるなら仕方ないですね。
今はcnt=1かどうかの場合分けで対応しています。

>>756
提案ありがとうございます。なるほど、そのようにしてTransposeで1次元となることを避けることができるのですね。
参考になります。この方法ならコードの修正部分も少なさそうです。

>>757
仰るようにTransposeを使う必然性はありません。
今の知識がありゼロから作り始めるならTransposeは使わずに作ると思います。
昔の名残を活用するために必然性のないTransposeを使う羽目になってしまいました。
時間ができたら全部書き直したい気持ちはあるのですが。。。
0763デフォルトの名無しさん2014/06/18(水) 08:21:57.79ID:ahd+98VX
>>753w
0764デフォルトの名無しさん2014/06/18(水) 10:15:27.45ID:fAjoLlg4
>>759
>>761
PCもキーボードもマウス何回か換えてるし
EXCELも2000から2013にかけて何回か乗り換えてるから
違う原因と思うんですが
07657612014/06/18(水) 10:36:30.12ID:+FU8wlvZ
>>764
んじゃこっちはどう?

http://blog.livedoor.jp/sigh_too/archives/51273110.html

ctrl + c と間違えて Fn + c を押しちゃってた人の話
0766デフォルトの名無しさん2014/06/18(水) 10:39:53.19ID:+FU8wlvZ
スクロールロックの割り当てが
Fn + K とかの場合もあるって事で機種によって違うみたいね。
0767デフォルトの名無しさん2014/06/18(水) 12:31:44.62ID:k5Dh+D1T
>>764
ここでもそんな相談は見たことないし、検索でもほとんど出てこないので、
何か特別なソフトが原因じゃないのかなあ
一般人が使わないようなアプリが入っているとか、変なマクロが走っているとか

そのパソコンはあなた専用?それとも共用?
0768デフォルトの名無しさん2014/06/18(水) 12:35:01.13ID:k5Dh+D1T
>>764
いつもまったく気付かない?
一度でもスクロールロックされる瞬間を目撃したことはある?
その時、パソコンは使用中か放置中だったか
0769デフォルトの名無しさん2014/06/18(水) 17:42:06.75ID:fAjoLlg4
下の2件と同様です
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13105571298

http://okwave.jp/qa/q6865033.html

すばやく連続入力して一呼吸おいた後に、次の入力を始めようとして
あれ?と気付くことが多いような気がします
入力中に突然ロックされたことはないと思います
PCは基本的に自分専用です。

発生頻度は1〜2ヶ月に1回くらいでしょうか
バーコードリーダーの場合は接続して間もないですが、
1日に1〜2回は出ていそうです。
PS2接続です。
0770デフォルトの名無しさん2014/06/18(水) 19:27:12.46ID:x3SERBGR
質問です。
金額計算なんですが、例えばM列に1を入れるとK+Lの合計を0.5倍にして(何も入れないとK+Lの合計)N列に表示するっていう文を作りたいんですが、色々調べてもわかりません
よろしければ教えて下さい!
0771デフォルトの名無しさん2014/06/18(水) 19:46:58.78ID:EzL2wKEq
何がどう判らないのかが判らないし、シートがどうなってんのかも知らんけど

Dim i As Integer
Dim lastrow As Integer

For i = 1 To lastrow
If Cells(i, 13).Value = 1 Then
Cells(i, 14) = (Cells(i, 11) + Cells(i, 12)) * 0.5
Else
Cells(i, 14) = Cells(i, 11) + Cells(i, 12)
End If
Next
0772デフォルトの名無しさん2014/06/18(水) 19:48:50.42ID:/mM+tAme
選択された複数のセルで
重複するものは代表1つだけにして
その要素数の数だけ文字列型の配列変数を返り値とする関数を作りたいです。

コードをお願いします。
0773デフォルトの名無しさん2014/06/18(水) 20:01:04.29ID:ZRwyQinV
>>772
Selection.Uniquify
0774デフォルトの名無しさん2014/06/18(水) 20:38:45.97ID:/mM+tAme
>>773
こら。そんなのないぞ。
0775デフォルトの名無しさん2014/06/18(水) 21:22:12.13ID:+FU8wlvZ
なんか手を変え品を変え
同じ質問を繰り返している人がいるように思えるのは俺だけ?
Dictionaryとか自前で配列変数作るとかやりようはそれなりにあると思うけど。
0776デフォルトの名無しさん2014/06/18(水) 23:31:09.78ID:IQKBzqn4
宿題なんじゃね
0777デフォルトの名無しさん2014/06/19(木) 06:51:10.55ID:Wcq0Jv47
>>772
へい。
https://friendpaste.com/7AESsKfoWV1tNVQmlhrMgY
0778デフォルトの名無しさん2014/06/19(木) 07:19:42.28ID:NPfluINM
「関数を作りたい」に違和感。じゃあ勝手に作れよ
「関数が必要」とか「作って欲しい」って書け
0779デフォルトの名無しさん2014/06/19(木) 11:17:24.00ID:Oioydr8f
>>777
こら、VBAで使えないぞ。
本当にVBAの言語用なのか?
0780デフォルトの名無しさん2014/06/19(木) 11:33:56.90ID:YZPnLqDa
さっきまでボタン押してたら動いたマクロが押しても無反応になるのはなぜですか?無反応というのは、ボタンを押しても実行中にすらならないのです
停止もエラーも何もなく、ただ無反応
0781デフォルトの名無しさん2014/06/19(木) 11:39:54.47ID:w+8gDH2b
>>779
これはすごい恩知らずwww
間違いなくVBAで使えるぞ。
0782デフォルトの名無しさん2014/06/19(木) 11:52:02.14ID:w+8gDH2b
>>780
コードが書いてないからそれだけではなんとも分からないですよ。
あと、使ってるエクセルとOSのバージョンも書いてないし。
とりあえずステップインで実行してみてはどうですか?
0783デフォルトの名無しさん2014/06/19(木) 11:55:45.95ID:Oioydr8f
>>781
こら、ウソ言うな。
選択してMainを実行したら「インデックスが有効範囲にないぞ」というエラーが出る。
0784デフォルトの名無しさん2014/06/19(木) 12:09:33.27ID:w+8gDH2b
>>793
ためしに縦一列に文字だけ(数字は無視される)入れて、
その範囲を選択した状態でマクロ実行してみろよ
0785デフォルトの名無しさん2014/06/19(木) 12:13:22.03ID:w+8gDH2b
安価ミスった>>793じゃなくて>>783

ちょこっと手直しすると範囲が縦一列じゃなくて
数字も無視しないようになるけど
777さんに対してあまりにも無礼だからこれ以上は教えてやらない。
0786デフォルトの名無しさん2014/06/19(木) 13:25:10.11ID:Oioydr8f
>>785
そんなバグだらけじゃ使い物にならないじゃないか。
糞ボロ。ポンコツ。
0787デフォルトの名無しさん2014/06/19(木) 14:00:13.35ID:w+8gDH2b
だって初めに条件付けてないお前が悪いんだよ
だからあれはバグじゃなくて仕様
0788デフォルトの名無しさん2014/06/19(木) 14:00:36.50ID:8jNSzAvz
もう既に本人はいなくなっててなりすましの荒らしが暴れているだけ
解散
0789デフォルトの名無しさん2014/06/19(木) 14:26:30.45ID:z2Nts7io
>>782
すみませんなぜか再起動したら解決しました
0790デフォルトの名無しさん2014/06/19(木) 21:26:30.92ID:B42MAC9K
Endステートメントって使ってる人いますか?

Sub Test()
On Error Go To ErrorHandler

If hogeError Than
call EndProc
End If

call EndProc
ErrorHandler:
call EndProc
End Sub

Private Sub EndProc()
'インスタンスの破棄とかScreenUpdating =Trueとか
'プログラムの終了
End

End Sub

msdnとかだとEndステートメントはすぐに停止させる時だけ使えとかって書いてあるんだけど、この関数呼べば必ず綺麗に後処理できるから便利〜
と思ってたんだけどやっぱりダメなんすかね?
0791デフォルトの名無しさん2014/06/19(木) 21:49:00.62ID:zV78lioG
>>790
End使うとUnloadなしでフォームが閉じたりするから、綺麗に後処理できない
だから使うなって言われてる
0792デフォルトの名無しさん2014/06/19(木) 22:42:28.51ID:B42MAC9K
>>791
あ〜なるほど、そっかformのイベントエラーとかでEnd飛ばしちゃうとUnloadとかされないのか
やっぱりエラーは個別にやんなきゃダメっすね、ありがとうございました。
0793デフォルトの名無しさん2014/06/20(金) 19:07:25.47ID:zU8FIBtE
MsgBoxのようにメッセージを出したいんですが
そのメッセージはユーザがコピペできるようにしたいんです。
一番てっとり早い方法はなんでしょう?
0794デフォルトの名無しさん2014/06/20(金) 19:42:55.71ID:qdXxhrxP
>>793
メッセージボックスって普通コピー出来るんだが、VBAのはダメなんだっけ?
0795デフォルトの名無しさん2014/06/20(金) 19:46:15.80ID:zU8FIBtE
>>794
できないんですよ。
0796デフォルトの名無しさん2014/06/20(金) 19:47:17.20ID:zU8FIBtE
>>794
普通コピーできるって、その普通とはどういう環境?
0797デフォルトの名無しさん2014/06/20(金) 19:49:02.65ID:zU8FIBtE
おろどいた。
無理やりオボったらちゃんとコピペできてた。
0798デフォルトの名無しさん2014/06/20(金) 19:50:50.72ID:y3Z+Q6P/
オボったらってのはマウスでゴチャゴチャしたらって意味け?
0799デフォルトの名無しさん2014/06/20(金) 19:53:22.06ID:zU8FIBtE
オボカタさんのようにコピペしたのだ
0800デフォルトの名無しさん2014/06/20(金) 19:54:23.75ID:zU8FIBtE
でもちゃんと選択して色が変わってCtrl+Cでコピペできるような仕様にするにはどうすればいいですか?
0801デフォルトの名無しさん2014/06/20(金) 20:02:43.06ID:qdXxhrxP
いんぷっとぼっくす
0802デフォルトの名無しさん2014/06/20(金) 20:11:28.85ID:zU8FIBtE
インプットボックスをアウトプット用にできますか?
そもそもインプットボックスって名のとおりアウトプットじゃないじゃないですか?
だからインプットボックスについてるボタンなどをすべて無効化したい。
0803デフォルトの名無しさん2014/06/20(金) 20:22:09.60ID:ZokJyX4+
ユーザーフォームでMsgboxもどきみたいの作ればいいんじゃないの?
0804デフォルトの名無しさん2014/06/20(金) 20:28:58.52ID:qdXxhrxP
メッセージボックスのメッセージ部分が選択可能になったものありませんか?
これ以外認めないんだろ?最初からそう聞けばいいのに
0805デフォルトの名無しさん2014/06/20(金) 22:47:42.81ID:q4j+Bx57
>>802
全てのボタンを無効化したら閉じることも出来ないじゃん
0806デフォルトの名無しさん2014/06/20(金) 23:29:37.04ID:NSJkRCsB
ボタンがなければ閉じることも出来ない
そんな凝り固まった常識をぶち壊していきたい
0807デフォルトの名無しさん2014/06/21(土) 00:14:38.91ID:mfmIX+n9
ユーザーフォームにテキストボックス置いて編集禁止にしとけ
編集禁止でも選択とコピーは可能だから
テキストボックスの背景をグレーするとかでMsgBoxと区別つかんようにできるし
0808デフォルトの名無しさん2014/06/21(土) 00:18:27.48ID:JKn6FGb9
EXCEL2013で、検索ダイアログを表示させるボタンを作りたいんですけど、
下記のコードを使うと置換のタブが開かれた状態で表示されるので、
検索タブが開かれる状態でコードを登録する方法を教えて下さい。

CommandBars.FindControl(ID:=313).Execute
0809デフォルトの名無しさん2014/06/21(土) 01:00:45.34ID:cHoAUDWh
>>808
2013の資料が手元にないけど、2007なら
Application.CommandBars.FindControl(ID:=1849).Execute
0810デフォルトの名無しさん2014/06/21(土) 01:04:01.23ID:mfmIX+n9
>>808
ちょっと違うけど一応検索
Application.Dialogs(xlDialogFormulaFind).Show

ワークシートがアクティブになってれば
SendKeys("^F")
0811デフォルトの名無しさん2014/06/21(土) 13:03:36.05ID:BHEAfygD
>>809
2013でも使えました。ありがとうございます。
0812デフォルトの名無しさん2014/06/21(土) 13:05:15.05ID:BHEAfygD
>>810
こんな検索もあるんですね。参考になりました。有難うございます。
0813デフォルトの名無しさん2014/06/21(土) 14:15:51.51ID:62Gltl9i
>>758
758です。色々ぐぐって自己解決できたのでコード載せときます
オフにするところの2行の意味がよく分かりませんが
希望の動作ができたから良しとします
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Function GetKeyboardState Lib "user32" (pbKeyState As Byte) As Long

Private Sub Worksheet_Change(ByVal Target As Range)
Const VK_SCROLL = &H91
Const KEYEVENTF_EXTENDEDKEY = &H1
Const KEYEVENTF_KEYUP = &H2

Dim LockState As Boolean
Dim keys(0 To 255) As Byte

GetKeyboardState keys(0)
LockState = keys(VK_SCROLL)

'オンであれば強制的にオフ
If LockState = True Then
keybd_event VK_SCROLL, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
keybd_event VK_SCROLL, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
End If
End Sub
0814デフォルトの名無しさん2014/06/21(土) 15:51:17.12ID:MWnqmoLJ
Msgboxが表示された時にどのボタンにもフォーカスがない状態って出来ます?
はいやいいえになってると、Enter連打であっさりスルーされちゃうので

ぐぐっても「いいえ」に合わせるコードはでてきでも、
フォーカス無しのコードは出てこないし

msgbox("上書きしますか?",vbDefaultButton2+vbYesNo)

上のじゃないけど、ユーザーフォーム使うしかないんでしょうか?
0815デフォルトの名無しさん2014/06/21(土) 17:20:31.07ID:4JtY8OkT
どうせ見られないメッセージボックスなら出さない方がいいと思うよ
0816デフォルトの名無しさん2014/06/21(土) 18:03:25.68ID:Qjh9DMWW
> ユーザーフォーム使うしかないんでしょうか?
そりゃ当然だろ?

融通は利かないが、良く使われる用途なら簡素化できるってのが
MsgBoxを初めとする組込ダイアログなわけで
その仕様を外れたら自作になるのは、プログラムとしては当然のこと

MsgBoxではアレが出来ないコレが出来ないではなく、
本来なら全て自前でフォーム作らなければならないメッセージダイアログに置いて
特定の制限内の機能で事足りる場合はMsgBox関数で楽できるって考えるべき

つまりメッセージダイアログは、MsgBox基準ではなく自作基準で考えよう
0817デフォルトの名無しさん2014/06/21(土) 22:22:34.80ID:A7b0CBz5
>>814
おれスルーしたい時はESCだわ
0818デフォルトの名無しさん2014/06/21(土) 23:06:28.70ID:Ipr85krH
>>816
やはりそうですか…

今のところシートの中のVBA記述だけで作れていて
「シートコピーするだけで使えるマクロだから皆で使ってね」
って売り込みしたいので、ユーザーフォームは出来れば避けたかったのですが
まず開発タブを表示してVBEを開いて…とかだと多分みんな使ってくれない(汗

>>817
ESCやALT+F4は最初から無効みたいで、大丈夫でした

はい・いいえ・キャンセルを表示してフォーカスをキャンセルにして
キャンセル押したら再度Msgbox表示する方法で妥協を考えています。
ここを参考にしました。
http://www.excel.studio-kazu.jp/kw/20050314190246.html
0819デフォルトの名無しさん2014/06/22(日) 04:00:56.97ID:3PJ9Umqu
なぜそこまでしてフォームを自作することを敬遠するのか意味解らないw

MsgBox関数みたいに、メッセージの内容次第で幅も高さも可変で
いくつかのアイコン表示が出来たり、ボタンの数も種類も変えられたりするように作るなら面倒だけど
メッセージ内容もボタンも固定で、単にEnter連打で消えないようにするだけのものなら
1,2分もあれば作れるじゃん

ここで質問したりレスを読んだりするよりも短い時間で作れるものなのに
そんな簡単なことよりも、>>818の最後に書いてるような弊害を抱える方法で妥協するのは何故?
0820デフォルトの名無しさん2014/06/22(日) 08:34:28.55ID:icvg/MGo
変数がたくさん(100以上をイメージしてください)はいった配列変数があって
それを単純に昇順に並べるとき
VBAでわざわざ新シートつくってセルA1〜A100以降にわざわざ入力して
Excelのソート機能をわざわわざVBA呼び出して
そのあとわざわざ配列変数に入れなおすということをしています。
(この間ユーザに画面を見せないようApplication.Screenupdate = Falseにしています)

もっといい方法はありませんか?
やってること自体は単にアルゴリズムでいう「ソート」なので、新シート作ったりしないで、単に配列のソートをしたいだけなのですが。

ついでにExcel本来についている機能を利用するときそのコードがどうなって見れる方法とかありますか?
0821デフォルトの名無しさん2014/06/22(日) 08:35:41.60ID:icvg/MGo
とくに偉そうに説教してる>>819、なにかいい方法はないか?
0822デフォルトの名無しさん2014/06/22(日) 08:50:10.63ID:bqRgXzqb
excelのソート機能を呼び出すのが嫌なら自前でコードをごりごり書けば良い
配列のソートなんかいっくらでもサンプルがネットにある。
そうすれば、そのためにApplication.Screenupdate = Falseするのは回避出来る
0823デフォルトの名無しさん2014/06/22(日) 08:53:16.45ID:E7Bp6E2C
偉そうに説教してるという質問者が一番偉そうな件
0824桃白白 ◆9Jro6YFwm650 2014/06/22(日) 12:08:58.33ID:TaqxR0c4
>>820
(; ・`д・´)桃白白バブルソート実装しようか?
0825デフォルトの名無しさん2014/06/22(日) 12:09:12.69ID:HL9MA0On
>>820
>やってること自体は単にアルゴリズムでいう「ソート」なので、新シート作ったりしないで、単に配列のソートをしたいだけなのですが。
「ソート アルゴリズム」でググれ

ついでにExcel本来についている機能を利用するときそのコードがどうなって見れる方法とかありますか?
「メモリエディタ」でググれ
0826デフォルトの名無しさん2014/06/22(日) 12:42:39.60ID:LETTRPjp
質問者が偉そうと言うのには同意だが、

>>819
> なぜそこまでしてフォームを自作することを敬遠するのか意味解らないw

も相当頭悪そう
ちゃんと書かれてるやん
0827デフォルトの名無しさん2014/06/22(日) 12:46:42.79ID:rb15rihA
>>820
VBAにはソート機能がないので、ワークシートを使うかソートのプログラムを自分で作るのが定番
誰かが公開したやつをネットからコピペしてもいいし

それ以外には、Windowsのソート機能を使うという方法もあるけど、あんまり一般的じゃないしメリットも少ない
0828デフォルトの名無しさん2014/06/22(日) 14:14:21.42ID:28X7tRhT
そう言えばVBAってソート出来るObjectって使えるの無いんかな。
0829デフォルトの名無しさん2014/06/22(日) 14:15:56.96ID:ISsPU5R9
VBAにはソート関数が無いの?

PowerShellにもあるのに
0830デフォルトの名無しさん2014/06/22(日) 16:11:48.02ID:rb15rihA
>>828
いくらでもある
標準で入ってるのだとvbsとか.netの配列オブジェクトを使えばソートメソッドも付いてくるけど使うのがめんどくさい
0831デフォルトの名無しさん2014/06/22(日) 16:36:24.01ID:28X7tRhT
>>830
.Netの配列なんて標準でついてるんだ。
標準ってことはdllファイルとかにしなくても参照設定で普通に使えるってこと?
Ienumelableの実装とかどうなってるの?
0832デフォルトの名無しさん2014/06/22(日) 18:47:31.78ID:rb15rihA
>>831
CrerateObject以下略だけで使える
実装までは知らんけど、基本的な使い方はvbsの配列オブジェクトと似てる
0833デフォルトの名無しさん2014/06/22(日) 19:22:55.53ID:jr7Ep/EM
それって複数のマクロが各々異なるバージョンのアセンブリを利用する場合にも問題ない?
細かい話だが前から気になってるんだよ
0834デフォルトの名無しさん2014/06/22(日) 20:58:53.57ID:rb15rihA
もともと外部オブジェクトなんて保証外だわな
あくまでも自己責任で

半角文字のソート程度ならバージョンが違っても動作が変わることは少ないと思うけど、
あえてそこまでして使うメリットもあんまりないと思うんで、気になるならVBAでソートプロシージャを自作しとけ
速度が必要ならワークシート関数使った方がたぶん速い
0835デフォルトの名無しさん2014/06/22(日) 21:13:25.13ID:ut82qKlb
>>826
別にユーザーフォーム使ったところで、呼び出しをシートに書いておけば
「シートコピーするだけで使えるマクロだから皆で使ってね」
からは外れない故の慰問だろ?
0836デフォルトの名無しさん2014/06/22(日) 22:21:27.26ID:LETTRPjp
>>835
最初はいいとして、途中でユーザーフォームを変更するときは古いユーザーフォームを解放して新しいユーザーフォームをインポートしないとダメでしょ?
そのためには VBE から操作する必要あるし、そもそも最近のバージョンだと VBE 起動するための開発タブが表示されてなかったりしするので、一般ユーザーに説明するのは結構面倒だよ。
0837デフォルトの名無しさん2014/06/22(日) 22:40:03.01ID:waKqYOf3
ファイルを開くとwindows7のtaskbarにそのファイル
のアイコンが表示されますが、それを表示させない方法あり
ますか?ファイルを読み込んで、処理して、上書きする
自作プログラムを実行するとtaskbarがチラつくので、
それを防ぎたいのですが。理想的には画面に何の変化も
起こさずに一連の処理をしたいのです。
0838デフォルトの名無しさん2014/06/22(日) 23:09:10.40ID:jr7Ep/EM
>>836
メッセージボックスで済む程度のものを変更するとは思えんがな
0839デフォルトの名無しさん2014/06/22(日) 23:19:27.60ID:qKjZQIgF
>>837

>>554
0840デフォルトの名無しさん2014/06/22(日) 23:24:42.52ID:ut82qKlb
>>836
そこまで求めると、どっちにしろMsgBoxでは事足りないってことになるのでは?
0841デフォルトの名無しさん2014/06/23(月) 00:05:55.68ID:yjdH9XJr
普通はアドインつくるなり、プログラム用のエクセルからデータ用のエクセル開くなり
シートをコピーさせるなんて事すらやらさ無いように考えるものじゃないか
0842デフォルトの名無しさん2014/06/23(月) 00:19:12.81ID:3jaGUV4o
参照設定ってエクセル起動時に初期化されるの?
凄く不便なんですが
0843デフォルトの名無しさん2014/06/23(月) 05:40:10.13ID:PqswRIgE
>>838
ひょっとして、日頃から 〜とは思えん とか言いながらプログラム作ってるの? w
そもそもすでに運用してる人はどうすんの?
ちょっと考えればわかるでしょ。

>>840
言ってる意味がわからん。
俺が書いてるのは運用のやり方だよ?
0844デフォルトの名無しさん2014/06/23(月) 05:44:21.04ID:PqswRIgE
>>841
> シートをコピーさせるなんて

とか言いながら、アドインの導入はやらさせるんだよね?
ひょっとして、バカなの?
0845デフォルトの名無しさん2014/06/23(月) 07:19:07.68ID:PhFfpdUE
ブックではなくシートのコピーを想定してるって事は
作り手と使い手は同一のPCを使う状況なんだから
アドインの導入は、やらせるんではなく自分でやっておくわけでしょ

だから相手にはその負担は全く掛からない
0846デフォルトの名無しさん2014/06/23(月) 07:34:03.43ID:PqswRIgE
>>845
> 作り手と使い手は同一のPCを使う状況なんだから

>>818
> 「シートコピーするだけで使えるマクロだから皆で使ってね」
> って売り込みしたいので、ユーザーフォームは出来れば避けたかったのですが
0847デフォルトの名無しさん2014/06/23(月) 08:37:13.80ID:nXtrLFsL
最初にマクロ実行するときだけフォームのコードが生成されるようにしとけばいい
0848デフォルトの名無しさん2014/06/23(月) 08:43:58.27ID:hMj0GtJU
>>839
情報ありがとうございました。こんな便利な機能があったとは。
これでちらつきは防止できそうなのですが、ただ一つ困ったことは、
ユーザーがタスクバーに複数のxlsxファイルのアイコンを表示させて
置きたい場合、ShowWindowsInTaskbarをFalseに出来ません。
自作プログラムの実行前にFalseに設定して、実行後にTrueに
戻すと、プログラム実行中はちらつきませんが、その設定/再設定 自体がちらつきを
発生させてしまいました。
ということで、全く見えない非表示のワークブックを作成することは
出来ないでしょうか?あるいは何か別の良い方法ありませんか?
08498472014/06/23(月) 08:45:27.70ID:nXtrLFsL
>>818
> 「シートコピーするだけで使えるマクロだから皆で使ってね」
> って売り込みしたいので、ユーザーフォームは出来れば避けたかったのですが

これかな
http://blog.livedoor.jp/yorinaga/archives/51924953.html
https://www.moug.net/tech/exvba/0090027.html
0850デフォルトの名無しさん2014/06/23(月) 08:48:27.84ID:89oxU91p
>>843
>すでに運用
は?どこにも書いてないだろ?
0851デフォルトの名無しさん2014/06/23(月) 09:04:17.48ID:j+hyzfi+
別にフォーム使わなくてもさ、シートにオートシェイプ被せてからテキストボックスとボタンのっけて
ついでにフォーカス奪ったりしとけばいいんじゃねぇの
0852デフォルトの名無しさん2014/06/23(月) 09:25:36.13ID:89oxU91p
>>851
それ最後にメッセージボックス必要になるだろw
msgbox "メッセージを読み終わりましたか?"
0853デフォルトの名無しさん2014/06/23(月) 09:40:06.51ID:erXvHz+T
>>852
msgbox替わりの物をオートシェイプとボタンで作れって話でしょ
0854デフォルトの名無しさん2014/06/23(月) 10:07:28.30ID:N/NXR7eW
Msgboxのかわりに
メモ帳を開いてそこにメッセージを書くことってできませんか?

ユーザにはコピペしてもらう用途なのでそれが一番いいのですが。
0855デフォルトの名無しさん2014/06/23(月) 10:37:55.31ID:LmsmhY4T
>>850
ああ、すまん。
既に運用してるっつーのはなかったな。
まあ、運用途中で ぐらいに読み替えてくれ。
■ このスレッドは過去ログ倉庫に格納されています