トップページtech
1002コメント349KB

Excel VBA 質問スレ Part37 [転載禁止]©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2015/06/10(水) 16:18:49.84ID:T4wZlTyk
ExcelのVBAに関する質問スレです

★1 質問テンプレ(雛形)は用意しませんが、OSとExcelのバージョンは必ず書きましょう。

★2 ExcelのVBA以外の部分に関する質問はNGです。
   但し、VBA無しでも出来ることだが、あえてVBAでやりたいって物に関してはOK。

★3 ExcelのVBE(Visual Basic Editor)を使うとしても、VBAの分野以外に関してはスレ違いです。

 VBAとは、『Visual Basic for Applications』の略で
  Application
  ├Workbooks
  |└Workbook
  |  ├Worksheets
  |  |└Worksheet
 というApplication以下のオブジェクトを、VB言語で操作するものを指します。
 例えExcel付属のVBE(Visual Basic Editor)を利用しようとも、このApplication以下のブックやシート、
 セルやオブジェクト等を操作するもの以外はVBA分野の話ではないので、ここでは聞かないでください。

★4 とりあえず、Excelのインスタンスを作らずにVB6で出来ることは全てスレ違いだと思ってください。

★5 レベルはどうあれ、ここはプログラマ用の板スレです。プログラマとは、自分でプログラムを組み、
   コードを書く人の事なので、自分でやるきは全く無く、丸投げしようって人はお断りです。
   ヒントを貰えばあとは自力でなんとかしますって人のみどうぞ。

★6 わからなければとりあえず「マクロの記録」(Alt, T, M, R)

前スレ:Excel VBA 質問スレ Part36
http://peace.2ch.net/test/read.cgi/tech/1420790342/

関連スレ:VBAなんでも質問スレ
http://toro.2ch.net/test/read.cgi/tech/1342087380/
0342デフォルトの名無しさん2015/12/05(土) 18:32:25.42ID:CzuIJRwA
コピペばかりしてると小保方さんのようになるぞ。
0343デフォルトの名無しさん2015/12/05(土) 18:46:42.30ID:1QMYHCHR
クリップボードのTLSみたいなのがあれば解決したんだろうな
0344デフォルトの名無しさん2015/12/05(土) 20:07:34.63ID:JOC1LVGS
なんだ、クリップボードに入れるとクリップボード上のデータを他プロセスから盗み見られる可能性を心配している
セキュリティのプロフェッショナルかと思ったら違うのかよ。
0345デフォルトの名無しさん2015/12/05(土) 21:47:02.20ID:MOG2PmhH
とりあえずPaste前にClipboardFormatsで中身を確認することにしました
これでテキスト編集ぐらいは並行してできそうです
0346デフォルトの名無しさん2015/12/06(日) 00:02:07.83ID:Rb3lVfqw
それ何も解決できてない気がする
クリップボードが壊れたら時間かかるマクロをまた最初からやり直しじゃん

Range.Copy Destination:= の形式で作業シートにデータを移せば、
クリップボードは使わなくて済むしこっちのが高速だぜ
0347デフォルトの名無しさん2015/12/06(日) 00:16:20.37ID:6uUtXQvE
>>346
なんでクリップボード使ったり作業シート使ったりしないといけないのか理解できない初心者です
0348デフォルトの名無しさん2015/12/06(日) 00:21:40.57ID:Rb3lVfqw
時間がかかって、書式もまとめて扱いたいケースって、ネットから大量のデータを持って来て整形とかじゃない?
よく聞くのは株とか競馬とかの過去データを集めて分析
0349デフォルトの名無しさん2015/12/06(日) 09:46:42.00ID:F0HE3LOZ
利用者が設定した書式も含めて集約したいとか普通にあるだろ
0350デフォルトの名無しさん2015/12/06(日) 10:10:20.93ID:Rb3lVfqw
集約 (コピペ) だけなら、待ちきれなくて別のこと始めちゃうほど時間かからんと思うけど
0351デフォルトの名無しさん2015/12/06(日) 16:12:40.62ID:F0HE3LOZ
>>350
>>341
0352デフォルトの名無しさん2015/12/07(月) 08:30:41.03ID:7geCXLnk
>>341
だとしたら、作り方がゴミなだけ
0353デフォルトの名無しさん2015/12/07(月) 20:54:13.56ID:6inzLqq+
Call BeepAPI (2000,1000) では1000ミリ秒音がなりますが、
音の鳴っている1000ミリ秒間は他の処理は行っていないようです。

音は鳴らしたいのですがマクロパフォーマンスはなるべく落としたくないのですが
いい方法はありませんか?
0354デフォルトの名無しさん2015/12/08(火) 14:32:07.79ID:HJc+axyd
音を鳴らしてなにしたいのかな?
それによって選択肢がかわるとおもうけど
BGM的なものなら
waveファイルの再生(PlaySound)で非同期再生すれば?
0355デフォルトの名無しさん2015/12/08(火) 15:58:27.45ID:/lRPavxe
>>354
普通そっち使うわな。
0356デフォルトの名無しさん2015/12/08(火) 22:55:21.52ID:/XNexRBf
>>354
非同期、PlaySoundでググったらなんか良さげです。
これを試してみます。ありがとうございました。
0357デフォルトの名無しさん2015/12/10(木) 00:27:25.68ID:ydUpcr2T
やっぱいまだにPlaySoundなのか
いまどきのPlaySoundの上位互換みたいなのないのかいなー
0358デフォルトの名無しさん2015/12/10(木) 00:42:30.86ID:7o1Slt65
音を鳴らすのって色々方法はあるみたいよ
mciSendString とか
DirextXを使って鳴らす とか
あと以前ぐぐってたら wavファイルをシートに貼り付けておいて
それを鳴らすってのもあったな
0359デフォルトの名無しさん2016/01/03(日) 07:48:49.80ID:UgdGt6Fz
つ midiのAPI
0360デフォルトの名無しさん2016/01/04(月) 16:13:34.36ID:bUPZv6XS
入力用にdataという名前のシートがあり、そのB5からD10までの範囲には
必ず入力しないといけないという仕様だとして、

シート data から他のシートに変えようとした時にその範囲に未入力があれば
入力漏れがあるとメッセージを出して変更出来ないようにしたいんですが、、、
(勿論データの型チェックもするとして)
Worksheet_Deactivate()でどう書けば良いんですかね
0361デフォルトの名無しさん2016/01/04(月) 17:19:10.97ID:ZAkNRCkU
>>360
Private Sub Worksheet_Deactivate()
Const CellArea As String = "B5:D10"
Dim BlankCell As Range
 
  If WorksheetFunction.CountBlank(Range(CellArea)) > 0 Then
    Set BlankCell = Range(CellArea).SpecialCells(xlCellTypeBlanks)
    MsgBox BlankCell.Address(0, 0) & "セルが未入力です。", vbCritical
    Worksheets("data").Select
  End If
End Sub
0362デフォルトの名無しさん2016/01/04(月) 17:48:54.42ID:bUPZv6XS
>>361
早速に教えていただきありがとう御座います
空白セルも表示されて判りやすいです。感謝m(_ _)m
0363デフォルトの名無しさん2016/01/09(土) 05:16:51.46ID:qH2Ukpbo
空白をつめてセル範囲をコピーするにはどうすればいいですか?
0364デフォルトの名無しさん2016/01/09(土) 06:29:45.09ID:sD5C6F8w
どのセルが空白かどうかを調べるぐらいはできるだろ?
でコピーする範囲を特定したらお好きな場所にコピーするんだよ
それだけだよ
0365デフォルトの名無しさん2016/01/09(土) 09:54:10.70ID:eE0tOkYT
いいなー
すっげーテキトーで投げやりな回答
0366デフォルトの名無しさん2016/01/09(土) 10:27:15.00ID:3oYUMHkH
>>363
コピーってクリップボードにコピーしたいの?
何をコピーしたいの?値?
0367デフォルトの名無しさん2016/01/09(土) 13:29:45.71ID:HKBkINca
WIndows7 64bit
office2013のエクセルを使用しています。
異なるブックのセルに対してハイパーリンクを埋め込みたいと思っているのですがうまくいかず困ってしまっております
ヒントになりそうなことを教えていただけたらいいなと思っております。

作業しているブック.xls と 写真撮影.xlsxがあり
作業しているブックの中に書かれたVBAで写真撮影.xlsxにハイパーリンクを張りたいと思っています

touroku_num = "100234321"

Workbooks("写真撮影.xlsx").Worksheets("Sheet1").Cells(1, 7) = touroku_num
では問題なく値を異なるブックのセルに転記することができました


Workbooks("写真撮影.xlsx").Worksheets("Sheet1").Hyperlinks.Add Anchor:=Workbooks("写真撮影.xlsx").Worksheets("Sheet1").Cells(1,7), Address:="http://www.google.co.jp";, TextToDisplay:=touroku_num


でハイパーリンクの設定ができると思ったのですが
実行エラー1004:アプリケーション定義またはオブジェクト定義のエラーですと表示されてしまします
異なるブックのセルに対してハイパーリンクを埋め込む書き方を教えていただけないでしょうか?
よろしくお願いいたします
0368デフォルトの名無しさん2016/01/09(土) 15:24:20.55ID:FJlRsUE7
>>367
俺も Excel2013 だけど エラーにならず 動くな

エラーの場所 他の場所じゃないの?  それか質問の為に>>367のコード書き換えた?
0369デフォルトの名無しさん2016/01/09(土) 16:34:08.03ID:cTuaLdfs
>>367
その2つのブックをどこかにアップしてみて
コード見てあげるから
0370デフォルトの名無しさん2016/01/09(土) 16:48:11.41ID:HKBkINca
>>367です
申し訳ありません、、、
写真撮影.xlsxが共有モードになっていたためハイパーリンクが晴れないようでした
=HYPERLINK("","")で対処してみようとおもいます
0371デフォルトの名無しさん2016/01/16(土) 09:43:18.80ID:9UHyvoL/
excel2002 XPを使用しています。
エクセル内部に
microsoft webbrowserを配置し、
@web検索や検索結果の表示自動化
A画像ファイルをD&Dで素早く取り込む
用途で使用したいと思っています。

職場での作業改善で作りたいと思っているのですが
最近IEは最新版しかセキュリティー対策しないとニュースで見ました。
ウェブ検索はwebbrowserも同様で使わない方が良いのでしょうか?

エクセル内部にD&Dで画像を入れる事ができるフォームは他にないでしょうか?

宜しくお願いします。
0372デフォルトの名無しさん2016/01/16(土) 11:04:52.52ID:LOKjQJ+L
>>371
Excel2002もXPも使わないほうがいい
0373デフォルトの名無しさん2016/01/16(土) 13:52:15.21ID:9UHyvoL/
>>372
レスありがとうございます。

職場のXPは外部からの不審な接続を遮断する装置?や
ログを監視している人がいるので
これらは新しい物にして貰えないです。
すみません、アドバイスありがとうございます。
0374デフォルトの名無しさん2016/01/16(土) 15:22:34.77ID:x5xZZ1m2
>>373
監視するのはいいけど、サポート切れ製品を外部接続環境での使用を認めている時点で、ザルセキュリティ企業確定だけど。
作業改善とやらを行う前にやるべきことがあると思うよ。
そもそも、検索で拾ってきた画像をエクセルに貼り付けて、何に使うんだ?
社内だけでの利用であっても、著作権者が商用利用可としているもの以外は、違法だぞ。
0375デフォルトの名無しさん2016/01/16(土) 16:05:31.27ID:LOKjQJ+L
>>373
そこの職場がそれでいいって言ってるなら、
ここでセキュリティについて聞いてもなんの意味もないよね?
周りにだけは迷惑かけないように、会社のルールに則ってご自由になさってください
0376デフォルトの名無しさん2016/01/18(月) 10:44:44.35ID:i4s8voPU
>>373
セキュリティを気にしているのなら、既に無法地帯だから気にする必要ないよ
0377デフォルトの名無しさん2016/01/18(月) 17:35:39.61ID:Snzsj2Zm
銀行のATMやスーパーのレジもいまだにXPなんだよね。
0378デフォルトの名無しさん2016/01/18(月) 17:39:59.80ID:FdwQhZix
>>377
詳しいんですね
0379デフォルトの名無しさん2016/01/18(月) 17:55:17.30ID:M94/HkrH
ファイアウォールでホワイトリスト縛りでもやってるんでしょ

…といいたいところだが普通に検索して自由に接続できるのかしら
0380デフォルトの名無しさん2016/01/18(月) 21:00:55.45ID:S6LQNh+S
用途によってはNT4.1とか普通に現役でしょ・・・・・・というのも俺が11年前に卒業した大学。
0381デフォルトの名無しさん2016/01/18(月) 21:03:18.71ID:S6LQNh+S
4.1じゃない4.0だ。
ていうか4.1ってあったっけ。
0382デフォルトの名無しさん2016/01/18(月) 21:39:17.70ID:E8u5NtKZ
>>377
当然知っていると思うけど、埋め込み版は別料金でサポート可だから。
0383デフォルトの名無しさん2016/01/18(月) 21:54:58.81ID:OjosQr+8
空港ですらwin3.1使ってる現代だし
0384デフォルトの名無しさん2016/01/31(日) 01:04:44.97ID:0EFpaxr4
いまさらながら=キーを一発で入力できるようにする方法を教えてください。よろしくお願いいたします。
0385デフォルトの名無しさん2016/01/31(日) 01:18:24.70ID:0EFpaxr4
頼む!!早く教えてくれ!!!!!
0386デフォルトの名無しさん2016/01/31(日) 01:28:48.16ID:waIKWgfV
それはVBAの話か?
それともワークシートに関数式を入れる時のはなしか
0387デフォルトの名無しさん2016/01/31(日) 01:42:01.92ID:0EFpaxr4
Do Until 行 > 100
行 = 行 + 1

>>386
もちろVBAの話でございます。
0388デフォルトの名無しさん2016/01/31(日) 10:52:31.29ID:XdM4wcMk
>>384
sendkeys
0389デフォルトの名無しさん2016/01/31(日) 12:36:14.27ID:oGNCocg8
sendkeysで全角の=っていけたっけ
0390デフォルトの名無しさん2016/01/31(日) 13:36:49.88ID:gYgCgtHy
悩んでる間に「=」キー付きのテンキー買ってきた方がアタマいいと思う
全角? 全角の=なんて、Wordでしか使いみち無いんじゃねーの?
ファンクションに割り当てるとか、キー配列変更アプリとか手立てはごまんとあるし
VBAで割り振っても行けるだろうけど、ローカライズはローカライズに過ぎなくて
ヨソで戸惑うことになるぐらいなら、物理的に用意しとくほうがマシだと思う
0391デフォルトの名無しさん2016/01/31(日) 13:37:03.30ID:fJmO8CE1
キーと文字は別じゃないか?
0392デフォルトの名無しさん2016/01/31(日) 17:21:20.64ID:u2Y3oBPR
そもそも
「=キー」を「一発」で「入力」って言ってるんだが
どうなってて何がしたいのか俺には意味がわからんな
0393デフォルトの名無しさん2016/01/31(日) 21:51:55.48ID:Ta8sObxJ
USキーボードだと「=」はShift側ではないね。
0394デフォルトの名無しさん2016/02/01(月) 00:11:45.34ID:OtGEIpWo
キーをスワップするフリーのソフトを使えば一発やろ
古典的な方法やな
0395デフォルトの名無しさん2016/02/01(月) 00:25:34.67ID:SvGDW8bi
俺は1ストロークと解釈したけど
要するにShiftを押すのが面倒
0396デフォルトの名無しさん2016/02/01(月) 00:26:27.15ID:SvGDW8bi
>>390
俺の知ってるテンキーには=が付いてなかった
0397デフォルトの名無しさん2016/02/01(月) 00:37:29.76ID:NSgxTlaf
VBA以外の話題のほうがレスがたくさんついて嬉しい
0398デフォルトの名無しさん2016/02/01(月) 00:57:30.69ID:OtGEIpWo
キースワップじゃなかったな
キーボードマクロ
http://www.vector.co.jp/magazine/softnews/121113/images/n12111311b.gif
こういうので一発でできるんじゃないの 試してないけど
0399デフォルトの名無しさん2016/02/02(火) 10:32:53.40ID:OPpL3JBW
ハマってしまいました、cell とoffsetとloopの関係が解明できません。
エクセルデータから一行ずつhtmlファイルを作成するということをしたいです。
minitemplatorを使っています。
試しに3行でつくってみるとファイル名は変わるのですが、
set変数の箇所が一行目のままかわりません。
↓こんなVBAにしてあります

Private Const START_CELL = "T3"
Public Sub PushButton()
'
Dim Cell As Range
Dim Temp As MiniTemplator
Set Temp = New MiniTemplator

Temp.ReadTemplateFromFile ThisWorkbook.Path & "\h00_0.html"
Set Cell = Range(START_CELL)

Do While Cell.Row <= ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
Temp.SetVariable "TITLE", Cell.Offset(0, 1).Value
Temp.SetVariable "CHAPTER", Cell.Offset(0, 2).Value
Temp.SetVariable "PREVCHAPTER", Cell.Offset(0, 3).Value
Temp.SetVariable "PREVPAGE", Cell.Offset(0, 4).Value
Temp.SetVariable "INDEX", Cell.Offset(0, 5).Value
Temp.SetVariable "NEXTPAGE", Cell.Offset(0, 6).Value
Temp.SetVariable "NEXTCHAPTER", Cell.Offset(0, 7).Value
Temp.AddBlock "htmls"
Temp.GenerateOutputToFile ThisWorkbook.Path & "\" & Cell & ".html"
Set Cell = Cell.Offset(1, 0)
Loop
End Sub

loopじゃなくてcntを足しながらじゃないとcellが移動しないのでしょうか?
0400デフォルトの名無しさん2016/02/02(火) 11:06:39.36ID:IlCfFCb1
>>399
Temp.GenerateOutputToFile ThisWorkbook.Path & "\" & Cell.Row & ".html"
0401デフォルトの名無しさん2016/02/02(火) 11:06:55.94ID:dkxIxmVG
>Temp.GenerateOutputToFile ThisWorkbook.Path & "\" & Cell & ".html"
でファイル名が変わっているなら、Cellは移動してるでしょ
0402デフォルトの名無しさん2016/02/02(火) 11:54:05.94ID:jGhzxxHj
>>400,401
ありがとう、cellは移動してるんだろうなあ。
エクセルのほうが確認してもデータはちゃんとそれぞれ違うものが入っている。
minitemplatorのほうで
temp.SetVariableのコマンドが新しいセルを代入していないのかな?どないしよw
素人がVBAでhtml一括出力なんて難しいのかな?くそう
手打ち変換で400ファイルはいやだ、変更できないしなあ
0403デフォルトの名無しさん2016/02/02(火) 12:00:40.43ID:jGhzxxHj
すみません、ちなみに
for i=1 to 3 で setvariable Cell.offset(i-1 , 1)〜  Next i
でやっても次の行の値は入ってませんでした。
Cell.Row でやったらシート全体の400行分を出力されたw
0404デフォルトの名無しさん2016/02/02(火) 13:09:44.34ID:IlCfFCb1
>>403
せいかい
Do While Cell.Row <= ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
Temp.ReadTemplateFromFile ThisWorkbook.Path & "\h00_0.html"

まちがい
Temp.ReadTemplateFromFile ThisWorkbook.Path & "\h00_0.html"
Do While Cell.Row <= ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
0405デフォルトの名無しさん2016/02/02(火) 14:52:30.00ID:+59vq7Tg
>>404
ふぁああああなたが神か。
何年やってたらそんな間違いが正解がわかるのか!
ありがとう。心の底からありがとう
tempReadはloopのなかなのかあ、、なるほどねぇえええありがとう1
0406デフォルトの名無しさん2016/02/02(火) 14:58:27.58ID:ml14fhOB
>>399
セルは移動してるから、minitemplatorとやらの問題

ちょっとしらべてみたけど
ループの頭にResetData 入れれば良いんじゃないか
>This method can be used to produce another HTML page with the same template.
って書いてあるぞ
ちゃんとドキュメント読め
0407デフォルトの名無しさん2016/02/02(火) 15:12:46.05ID:IlCfFCb1
読み込んだテンプレートを直接書き替えて出力するんだな
だから一度使ってしまうとタグが消えて書き替える場所がわからなくなってしまう

テンプレートファイルが見つからない時はちゃんとエラーメッセージを出すのに、
タグが見つからない場合はスルーするんだな
ここでエラーを出す仕様だったら2回目で置換に失敗するからすぐに解決できただろうに
なんか不親切というか出来の悪いライブラリだな
タグの入力ミスがあっても気付かないじゃないか
0408デフォルトの名無しさん2016/02/02(火) 19:34:19.67ID:WkrnCzmR
>>407
当たり前でしょ
ある項目の表示をやめるときにテンプレートとソースの両方の変更が必要になるライブラリなんて使いたくないわ
0409デフォルトの名無しさん2016/02/02(火) 20:27:42.19ID:IlCfFCb1
>>408
これって単純に文字列の置換をワンタッチでやってくれるだけだよ?
項目とかそういう単位とは無関係
0410デフォルトの名無しさん2016/02/02(火) 21:12:08.01ID:ebu6ZgQL
>>409
> 項目とかそういう単位とは無関係
minitemplator はよく知らんが、例えば
> Temp.SetVariable "CHAPTER", Cell.Offset(0, 2).Value
で置き換える部分のこと言ってるってわからんか?
0411デフォルトの名無しさん2016/02/02(火) 23:11:50.38ID:IlCfFCb1
>>410
話にならん
minitemplatorのドキュメントをちゃんと読んで機能を把握してからレスしてくれ

こっちは、「ある項目の表示をやめる」にはテンプレートとソースの両方を変更しなきゃならんという
タコ仕様だから文句言ってんのに
0412デフォルトの名無しさん2016/02/03(水) 04:09:39.88ID:xm/Odt/1
タグが見つからなかったらスルーするだけなら
テンプレートだけ直せば良いような気がするんだが

それが美しいか、エラー出すのが美しいのかは美学の問題だから知らんが
0413デフォルトの名無しさん2016/02/03(水) 08:30:17.06ID:ycDP2Q2/
>>412
> タグが見つからなかったらスルーするだけなら

と言う仕様は

> テンプレートだけ直せば良いような気がするんだが

のためにやってる

他のテンプレートエンジンもたいていそう言う仕様
ID:IlCfFCb1 は何か勘違いしてるか、引っ込みがつかなくなってる模様
0414デフォルトの名無しさん2016/02/04(木) 13:00:05.72ID:AIFo7uDS
初めて質問させていただきます。
ご教示お願いいたします。

sheet1(以下のマクロでは
0415デフォルトの名無しさん2016/02/04(木) 13:17:26.70ID:hf8MWHqG
あわてなくても


いいんだよ
0416デフォルトの名無しさん2016/02/04(木) 14:47:38.48ID:AIFo7uDS
初めて質問させていただきます。
ご教示お願いいたします。

sheet1(以下のマクロでは"sum")のあるセルを更新した際に、
マクロが起動するようにしたいのですが上手くいきません。
よろしくお願いいたします。

マクロそのものは動作確認済みです。
sheet("x")はsheet2のことです。


Private Sub Worksheet_Change(ByVal Target As Range)
' If (Target.Row = 2) And (Target.Column >= 3 And _
' Target.Column <= 5) Then

If Intersect(Target, Range("B3:B5")) Is Nothing Then
Exit Sub
Else
Dim x As Long, y As Long, i As Variant

Sheets("x").Select
x = Range("D2").Value
Cells(x, 2).Select
Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(5, 22)).Copy
Sheets("sum").Select
Range("B8").Select
ActiveSheet.Paste

End If

End Sub
0417デフォルトの名無しさん2016/02/04(木) 15:46:32.36ID:VvZVruxG
>>416
Application.EnableEvents = False
0418デフォルトの名無しさん2016/02/04(木) 16:30:22.51ID:35TD0RG8
>>416
イベント操作はok
copyの元と先はどうでせう?

Private Sub Worksheet_Change(ByVal Target As Range)

If Intersect(Target, Range(Cells(3, 2), Cells(5, 2))) Is Nothing Then
Exit Sub

Else
x = Cells(2, 4)
Worksheets("x").Range(Cells(x, 3), Cells(x + 5, 24)).Copy Worksheets("sum").Cells(8, 2)
End If

End Sub
0419デフォルトの名無しさん2016/02/04(木) 16:36:47.91ID:35TD0RG8
x=worksheets("x").cells(2,4) だった、、
0420デフォルトの名無しさん2016/02/04(木) 16:52:02.75ID:AIFo7uDS
>>417
ご教示ありがとうございます。
先ほどのマクロで間違いがありました。
条件の部分が先ほどの条件ではなく、下記になります。
If (Target.Row = 4) And (Target.Column = 3) Then..
Application.EnableEvents = False
行いましたが、変更しませんでした。
0421デフォルトの名無しさん2016/02/04(木) 16:53:28.63ID:AIFo7uDS
>>418,419
ご教示ありがとうございます。
copy元は問題ありません。
下記のマクロのDimからActiveSheet.Pasteまでは、標準モジュールで実行すると
シートXには反映されます。
ただ、セルの値を変えて標準モジュールの実行という2stepの2step目を省略したい
のですがうまくいきません。

Private Sub Worksheet_Change(ByVal Target As Range)
' Application.EnableEvents = False

If (Target.Row = 4) And (Target.Column = 3) Then

Dim x As Long
' Sheets("X").Select
' x = Range("D2").Value
' Cells(x, 2).Select
' Range(ActiveCell.Offset(0, 1), ActiveCell.Offset(5, 22)).Copy
' Sheets("sum").Select
' Range("B8").Select
' ActiveSheet.Paste

Worksheets("X").x = Cells(2, 4)
Worksheets("X").Range(Cells(x, 3), Cells(x + 5, 24)).Copy Worksheets("sum").Cells(8, 2)

End If
End Sub
0422デフォルトの名無しさん2016/02/04(木) 16:57:03.95ID:35TD0RG8
>If (Target.Row = 4) And (Target.Column = 3) Then

↑はdoubleclickなどのイベント操作で、おいらもやってみたが素通りする
0423デフォルトの名無しさん2016/02/04(木) 17:38:37.00ID:AIFo7uDS
>> 422
返信ありがとうございます。
条件のところは以下のように変更しました。
 If Intersect(Target, Range("D3")) Is Nothing Then
Exit Sub
 Else

しかし、うまくいきません。

コピー元はwebクリエを利用してますが、更新は行っていないため
ただのデータシートだと考えています。
0424デフォルトの名無しさん2016/02/04(木) 18:47:44.82ID:PFzCzh/c
>>423
>  If Intersect(Target, Range("D3")) Is Nothing Then
ここにブレークポイントかけて、Target.Adaress の値見てみなよ
0425デフォルトの名無しさん2016/02/11(木) 16:37:42.26ID:42PuBDmO
質問です。
スペースキーを押した時に"space"と表示したいのですが、すぐ消えてしまいます。


Public Declare Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) As Long

Sub get_key()
Do
If GetAsyncKeyState(32) <> 0 Then '32=20h(space)
MsgBox "space"
Else
MsgBox "not_space"
End If

Application.Wait [Now() + "0:00:02"]
Loop
End Sub

よろしくご教授願います。
0426デフォルトの名無しさん2016/02/11(木) 17:08:14.33ID:vxbPXQEr
s/MsgBox/Debug.Print/
0427デフォルトの名無しさん2016/02/11(木) 17:43:02.01ID:VlMP9H51
>>425
で、質問は?
0428デフォルトの名無しさん2016/02/11(木) 18:17:27.97ID:42PuBDmO
>>427
spaceと表示した時のmsgboxがアテンションするまで待機するにはどうしたら?
0429デフォルトの名無しさん2016/02/11(木) 18:41:38.00ID:MrYtynOP
なんかあれだな犬が棒をくわえたまま
ドアから出られなくなって
どうやったらでれるのって聞いてるみたいな
0430デフォルトの名無しさん2016/02/11(木) 19:20:25.95ID:vxbPXQEr
ところで>>425の[]括弧って何か意味あるのかい
VBで[これ]が出てくるとなんだか警戒してしまうよ
0431デフォルトの名無しさん2016/02/11(木) 19:33:11.95ID:42PuBDmO
>>430
型が違うから"["と"]"で括りました。
(+ 秒以下も指定できる、ということで)
0432デフォルトの名無しさん2016/02/13(土) 17:26:11.98ID:D9w2zaJd
>>429
横移動
0433デフォルトの名無しさん2016/02/14(日) 17:30:57.28ID:W3kUmQbm
元は全く同じブックをLANネットワークにつながった数十台の各PCへ複製して
そのファイルを各PCで開き、実行中のブックの特定のセル、
たとえばシート1のa1セルを実行中のPCとは別の1台のPCから
一斉に書き換える方法はありますか?!
0434デフォルトの名無しさん2016/02/14(日) 18:10:30.12ID:76sHC0LF
>>433
不可能ではないけど、PCのリモート操作までVBAでやるのは流石に無理があるかと
どちらにしてもあなたのスキルでは無理なので、不可能だと思っておいて問題ないと思います
0435デフォルトの名無しさん2016/02/14(日) 18:53:22.85ID:33hAgmw5
セルの幅や行の高さがいろいろな人が触ってばらばらになってしまったシートを
全セル標準値に戻してそろえるにはどうすればいいのでしょうか?
0436デフォルトの名無しさん2016/02/14(日) 19:13:37.67ID:MGHNtECJ
Cells.RowHeight = ActiveSheet.StandardHeight
Cells.ColumnWidth = ActiveSheet.StandardWidth
0437デフォルトの名無しさん2016/02/14(日) 19:23:47.28ID:0n9Q+x/K
>>435
'標準値セット例
セル高 = 18.75: セル巾 = 8.38

Cells.RowHeight = セル高
Cells.ColumnWidth = セル巾

で、いいんじゃないかな?
0438デフォルトの名無しさん2016/02/14(日) 19:29:20.10ID:9DC2KLdY
>>433
クラウド使えばいいんじゃね?
0439デフォルトの名無しさん2016/02/14(日) 19:48:40.04ID:Bsnhcx6p
>>433
そもそも複製した時点で、別のPCのファイルだから

特定の環境下でのやりようはあるけど
別のPCのファイルを勝手に書き換えるとか
別のPCで動いてるアプリケーションを勝手に調べて操作するとか
ウィルス作れっていってるようなもんだぞ

PCごとに独自の値入れたいなら、そのエクセル表開いたときに、自分で値をセットさせろよ
04404352016/02/14(日) 20:12:33.78ID:n+eEHjjo
>>436
>>437
綺麗さっぱりうまくいきました。ありがとうございました。
0441デフォルトの名無しさん2016/02/14(日) 20:31:52.43ID:JWs7OI3x
>>433
>>439
悪く言えばデータ改ざん
よく言えば高速データ修正、もしくはリアルタイムデーター反映。
■ このスレッドは過去ログ倉庫に格納されています