Excel VBA 質問スレ Part50 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん 転載ダメ©2ch.net (ワッチョイ 7e6d-ffY6)
垢版 |
2017/08/27(日) 12:40:17.57ID:LjjEWylk0
!extend:checked:vvvvv:1000:512

スレ立ての際は一行目に
!extend:checked:vvvvv:1000:512
と入れてスレ立てして下さい

ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK

※関連スレ
VBAなんでも質問スレ Part2
http://mevius.2ch.net/test/read.cgi/tech/1432173164/
Access VBA 質問スレ Part1
http://mevius.2ch.net/test/read.cgi/tech/1328536426/
Excel総合相談所 126
https://mevius.2ch.net/test/read.cgi/bsoft/1496487719/

※前スレ
Excel VBA 質問スレ Part49©2ch.net
http://mevius.2ch.net/test/read.cgi/tech/1498410914/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2017/09/16(土) 09:10:57.56ID:ZdfhdKJM0
シートンさん、涙
2017/09/16(土) 11:39:45.69ID:NmFgsGO20
>>201
父をたずねて三千里の旅に出るよ...


昆虫記
2017/09/16(土) 17:35:52.97ID:ZtR64OGap
excel2010使ってます。

apiを使ってアプリケーション外の任意の座標のピクセル情報を監視していますが、視覚的に監視している場所がわからないので、当該場所にbitmapを最前面に描画したいのですが、良い方法はないでしょうか?
あるいは、マウスのカーソルをその位置に描画する。とかも考えています。
205デフォルトの名無しさん (オッペケ Sr4d-Ec1/)
垢版 |
2017/09/16(土) 18:35:05.61ID:uv+MHauzr
>>204
愚問だけど
なぜにVBAなんだ?
2017/09/16(土) 19:17:26.63ID:gf/ZkNkm0
>>204
WIndow作ってWM_PAINTで描画(GDI/GDI+)
Excelで直接やらなくてもいい気がするけど
2017/09/16(土) 21:10:59.05ID:XK5pYCg9a
>>206
昔、そういうプログラム書いてたな。
CreateCompatibleDCとか。

GDI+はステータスバーの数字を取得する為に使ったことがある。
よくあるウインドウハンドルから取得する方法やUIAutomation使う方法で取得出来なかったんで直接Bitbltかなんかで描画してるとしか思えなかった時に。
2017/09/17(日) 15:05:48.02ID:QbcXsmvT0
vbaでpdfをこのようにバイナリ変換?して仕事で使うサイトにpostしたいのですがどうすれば変換できますか?
https://imgur.com/iztKsA6.jpg (普通のブラウザで送信した際の通信データを出力したもの)
ググった結果出てきたバイナリ変換?は2種類試しましたが↓変換はされるのですが形式が違うのか上手くいきませんでした(文字化けの感じも違いました)

strfilenameにはpdfのフルパスが入ります
Function GetFile2(strFileName As String) As String
Dim strFile As String
Dim nFile
' Grap the file
nFile = FreeFile
' Open strFileName For Binary As #nFile
Open strFileName For Binary As #nFile
strFile = String(LOF(nFile), " ")
Get #nFile, , strFile
Close #nFile
GetFile = strFile
End Function

Function GetFile(strFileName As String) As String
Dim FileContents() As Byte, FileNumber As Integer
ReDim FileContents(FileLen(strFileName) - 1)
FileNumber = FreeFile
Open strFileName For Binary As FileNumber
Get FileNumber, , FileContents
Close FileNumber
GetFile = StrConv(FileContents, vbUnicode)
End Function
2017/09/17(日) 15:23:31.58ID:EJ9y/eYt0
>>208
pdfは元々バイナリファイル
それをテキストエディタで開けばその画像みたいになる
エディタで開く時のエンコーディングが違えば文字化けの見た目も変わる

postするときになんで変換しないといけないの?
2017/09/17(日) 15:37:36.74ID:QbcXsmvT0
>>209
普段のブラウザでpdfを投稿した際のpostデータを解析したらpostしているデータの中でpdfを>>208の画像の形で投稿していたので
excelで投稿する際も自分のpcにあるpdfをテキスト状に?変換してpostするものだと思いました
自分としてもファイルのフルパスだけ指定して投稿できたら楽だとは思うのですが・・・
211デフォルトの名無しさん (ワッチョイ 136c-XDX8)
垢版 |
2017/09/17(日) 18:33:42.58ID:QbcXsmvT0
そしてこれが>>208のマクロでpdfを変換してvbaから投稿した時のpostしているデータです
https://i.imgur.com/0LlxHf3.png
明らかに文字化けの雰囲気が違うこれだと投稿したpdfを開こうとしても「画像データに不足があります」と出てpdfが開けません
postデータは同じツールで表示していますのでvbaでの変換の方法に問題があるのかと思ってます
>>208の画像がこの画像と違ってどういう形式?なのか分かれば調べようもあると思うのですがいかがでしょうか
2017/09/17(日) 19:10:29.54ID:qW/WD7mR0
バイナリ変換とか変なことをするからややこしくなっている
データの解析なんてせんでいい
ファイルは素直にファイルのまま扱えばok

http://www.excel.studio-kazu.jp/kw/20140404154224.html
で、ここ見ておもったんだけど、htmlファイル作ってform用意して、submitすればいいだけじゃない?
ファイルが何個もあるとめんどくさいけど
213デフォルトの名無しさん (ワッチョイ 136c-XDX8)
垢版 |
2017/09/17(日) 21:01:40.83ID:QbcXsmvT0
>>212
前にそちらのサイトも参考にさせて頂いて、投稿はできたのですがpdfが開けなくて、
送信データももっとひどい文字化けになってしまい諦めてました
https://imgur.com/p1huKGY.jpg
unicodeで送信しているのを調整する必要があると書かれていたのですがそれが原因でしょうか・・・

ちなみに自分の使い方としてはそのサイトのようにグループウェアのキャビネットに投稿する形では無く、
仕事で使っているサイトのフォームで投稿する際に添付ファイルとしてpdfを付けるのが目的なのですが
下の方に書いてあるのはSet objIE = CreateObject("Internetexplorer.Application") 的なIEに直接vbaでsubmitさせるメソッドの事でしょうか?

今のところ、投稿する際にプルダウンや入力フォームで様々な値を入力しなければならなくて、
添付ファイルが無い状態での投稿は問題無く行えるようになったのですが
添付ファイルだけはどうにも壊れてしまうというのが現状なので何とかpdfもこのままpostできないかなぁ・・・というのが現状です

説明が下手で申し訳ないのですがどなたかアドバイス頂けたらと思います
2017/09/18(月) 11:37:33.30ID:d9P11nJN0
セルB4から始めて、右に8列‘’○‘’を順番に書き込んでからB5に下がってまた8列書き込む。それを10行繰り返すにはどういうコードになります?
2017/09/18(月) 12:09:05.81ID:Y2wXgXiBx
>>214
Forで二重ループ
Cells(5, 2)から始めて必要な列数だけ○を書き込む処理を10行分行うだけ
2017/09/18(月) 12:10:08.02ID:Y2wXgXiBx
>>215
Cells(5, 2)から始めて→Cells(4, 2)から始めて
2017/09/18(月) 12:28:31.10ID:XMy/3GFW0
ネットワーク上のフォルダにファイルを保存する時、
初回時のみ若干保存に時間がかかります。
一度実行したあとにすぐ実行すると、
既にネットワーク接続が確立しているからなのか、比較的早く保存できます。
保存は普通にsaveasで、UNCパスで保存しているのですが、
この初回保存時に時間がかからずに保存できる方法ないでしょうか。
2017/09/18(月) 12:39:51.48ID:QSt8wYFod
>>214
「セルB4から始めて、右に8列‘’○‘’を順番に書き込んでからB5に下がってまた8列書き込む。それを10行繰り返す」コード。
2017/09/18(月) 13:39:45.60ID:d9P11nJN0
>>215
>>218
ありがとうございます。頑張ってやってみます。
2017/09/18(月) 15:00:22.35ID:7Xxpypu9a
>>217
VBAの問題じゃなくてネットワークやSMBプロトコルの問題じゃないかなあ。
或いは名前解決問題も含んでいるとか。
2017/09/18(月) 15:03:30.32ID:7Xxpypu9a
>>219
全部"○"なの?
Range(B4:I13).Value="○"
じゃ駄目なの?
2017/09/18(月) 15:33:37.57ID:iDSQnxIm0
http://imgur.com/MSCp7vw.jpg

シート2で選択した人の時間データをシート1からシート2の各セルにコピペしたいです

イベントプロシージャで名前変更時にマクロ起動は出来ました
名前検索&シートを跨いだコピペがどうしても出来ないのでご助力下さい
2017/09/18(月) 16:32:44.21ID:tGO6qMv20
>>222
Accessでデータ管理してSQLで取り出すのが一番苦労がないと思うんだが。
2017/09/18(月) 17:38:30.84ID:zFeh6Anl0
>>222
普通にVLOOKUPで引っ張ってくれば
マクロは必要ないのではなかろうか。

どうしてもVBAでやりたいなら
WorksheetFunction.Matchで検索してみよう。
シート間コピペはRangeの前にワークシートオブジェクトを指定すればできます。
範囲でやる場合はValueを書かないとだめです。
Worksheets("シート2").Range("*:*").Value = Worksheets("シート1").Range("*:*").Value
実際には決め打ちじゃなくてCellsで検索結果に応じて可変にすればよいでしょう。
2017/09/18(月) 18:28:54.10ID:gz3Qfpmld
>>221
実際には別シートの値をみて条件付けてYESなら右に一個ずつ値を引っ張りたいだけです。
2017/09/18(月) 20:17:48.27ID:iDSQnxIm0
>>222ですがコピペ記述できました助言ありがとうございました

Sub

Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim name As String
Dim r As Variant

  Set ws1 = Worksheets("シート1")
  Set ws2 = Worksheets("シート2")
  name = Worksheets("シート2").Range("*").Value
  r = Application.WorksheetFunction.Match(name, Worksheets("シート1").Columns("a"), 0)
  
  Application.ScreenUpdating = False

  ws1.Activate
  ws1.Cells(r, 4).Select
  Selection.Resize(1,6).Select
  Selection.Copy
  ws2.Range("a6:a11").PasteSpecial (xlPasteValues)

  Application.ScreenUpdating = True

End Sub

シート切り替え時の画面ちらつきを消すために見よう見まねでScreenUpdatingを入れました
期待通りの動きをしてくれてますがもっと上手い記述を参考程度に教えていただきたいです

VLOOKUPだと直接セルに入力する場合があってその時困るのでVBAでやってみようと思った次第です
ACCESSは諸事情で使えません
2017/09/18(月) 20:45:41.88ID:d9P11nJN0
この小汚いコードなんとかなりませんか?
https://i.imgur.com/PH6sTKr.jpg
2017/09/18(月) 20:58:13.91ID:jDUrs+BF0
>>227
まず写真じゃなくてプリントスクリーンで
2017/09/18(月) 21:06:56.54ID:zFeh6Anl0
>>226
たぶんマクロ記録を改造しているんだと思いますが
Select、Activateはする必要なく
転記処理は
ws2.Range("a6:f6").Value = ws1.Range(ws1.Cells(r,4),ws1.Cells(r,9)).Value
この1行だけでいけるはず。
=の右辺と左辺が同じ大きさの範囲である必要あり。
範囲は実際のシートのに書き換えてお試しを。
2017/09/18(月) 21:26:16.39ID:d9P11nJN0
>>228
パソコンのネットがゴミ過ぎてパソコンからは書き込めないんです...
2017/09/18(月) 21:38:27.20ID:zFeh6Anl0
>>227
応用シートを変数に突っ込む
WithにRange指定まで突っ込む
RangeをCellsにして列参照を変数にする
オフセットの数値を変数にする
これでループで変数をインクリメントしていけばスッキリしそう。
2017/09/18(月) 21:41:20.89ID:tGO6qMv20
>>227
Sub foo()
Str_NowRng = FindRange.Offset(0, 1).Address
Str_ShuName = FindRange.Offset(0, 1).Value
Set 基礎 = Worksheets("基礎")
Set 応用 = Worksheets("応用")
i = 4
Do While Str_ShuName = "A"
For j = 1 To 5
応用.Cells(i, j + 1).Value = 基礎.Range(Str_NowRng).Offset(0, j).Value
If j = 3 Then 応用.Cells(i, j + 1).Value = 応用.Cells(i, j + 1).Value + Val(MSUN)
Next
With 基礎.Range(Str_NowRng).Offset(1, 0)
Str_ShuName = .Value
Str_NowRng = .Address
End With
Loop
End Sub

設計が腐ってる臭いがするので、小手先直したところで意味ないと思うけど。
2017/09/18(月) 21:46:33.83ID:iDSQnxIm0
>>229
うおおおおおお
その1行だけで動きました
ありがとうございます

マクロ記録ではなくググった記述の真似ですが検索が下手だったみたいです
2017/09/18(月) 21:49:23.00ID:m1CRg0zL0
userform2のcaptionをそのままuserform8のcaptionに代入使用しています。
型が一致しませんのエラーが出ます。
先ほどまで問題なく動いていたのですが、突然出るようになりました。
UserForm8.Caption = UserForm2.Caption

Dim FormName as string
FormName = UserForm2.Caption
Userform8.Caption = FormName

でもエラーが出てしまいます・・・。
2017/09/18(月) 21:59:25.32ID:jDUrs+BF0
>>234
何でそんなことやってるか知らんけど…

標準モジュールに書いたら動いた
Sub foo()
UserForm1.Caption = UserForm2.Caption
End Sub

とりあえずイミディエイトウィンドウやウオッチ士気で、
UserForm2.Caption
に何が入ってるか見てみたら?
2017/09/18(月) 22:04:09.39ID:d9P11nJN0
Str_NowRng=FindRange.Offset(0,1).address
Str_ShuName=FindRange.Offset(0,1).Value
With Worksheets(〃基礎〃)
i=4

Do While Str_ShuName=〃A〃
Worksheets(〃応用〃).Range(〃B〃&i).Value=.Range(〃Str_NowRng〃).Offset(0,1).Value
Worksheets(〃応用〃).Range(〃C〃&i).Value=.Range(〃Str_NowRng〃).Offset(0,2).Value
Worksheets(〃応用〃).Range(〃D〃&i).Value=.Range(〃Str_NowRng〃).Offset(0,3).Value+val(MSun).Value
Worksheets(〃応用〃).Range(〃E〃&i).Value=.Range(〃Str_NowRng〃).Offset(0,4).Value
Worksheets(〃応用〃).Range(〃F〃&i).Value=.Range(〃Str_NowRng〃).Offset(0,5).Value

Str_Name=.Range(〃Str_NowRng〃).Offset(1,0).Value
Str_NowRng=Range(Str_NowRng).Offset(1,0).address
i=i+1

Loop

i=14
Do While Str_ShuName=〃B〃
中身同じ
Loop

i=32
Do While Str_ShuName=〃C〃
中身同じ
Loop
こんな感じです。
パソコン見ながら打ったので間違って打ってたらごめんなさい。
2017/09/18(月) 22:04:38.56ID:jDUrs+BF0
〃応用〃
なんかかわいい
2017/09/18(月) 22:05:45.55ID:jDUrs+BF0
>>236
とりあえず>>232以上の回答はないと思うぞ
2017/09/18(月) 22:09:21.04ID:d9P11nJN0
>>232
ありがとうございます。すごい助かります。感謝です!
2017/09/18(月) 22:09:42.61ID:d9P11nJN0
>>238
はい。ありがとうございました。
2017/09/18(月) 22:09:56.31ID:m1CRg0zL0
>>235 ありがとうございます。 他のユーザーフォームではできましたので、USERFROM8自体がおかしくなっている?
直前にエクセルが動作停止しました。その際に壊れてしまい、USERFORM8のオブジェクト名を理解できていないようです。
そんなことはありますでしょうか?
2017/09/18(月) 22:13:12.43ID:jDUrs+BF0
>>241
さーねぇ。まぁあるかないかならあると思うけど、安易に答えは出さないけど、
どうでもいいマクロならさっさとuserform8消して新しく作り直すほうがいいかもな
2017/09/18(月) 22:25:10.48ID:SpW0zo9eH
>>226
>>229の言う通り

ws1.Activate
ws1.Cells(r, 4).Select
Selection.Resize(1,6).Select
Selection.Copy
ws2.Range("a6:a11").PasteSpecial (xlPasteValues)



ws1.Cells(r, 4).Resize(1,6).Copy
ws2.Range("a6:a11").PasteSpecial xlPasteValues

でOK。
1行ずつ意味を考えて上達して行こう。
ところで、PasteSpecialの後ってカッコ無しでスペースだよね。
2017/09/18(月) 22:34:50.16ID:xepoeGeEa
>>227
インデント統一してる?
俺は4つ(標準)にしてるけど、少しでもズレてる所があると気持ち悪い。
こういうコード貰ったらCtrl + A押して、
Shift + Tabを連続20回ぐらい押してしまう。
んで、全ての行のインデント振り直す。

それから、2つのシート使ってるようだけど自分ならそれぞれを変数に入れるな。
1つはWith使ってるから良いとして、もう1つだけでも変数に入れる。
まあ、自分の場合は基本的にブックから省略しないのでWithや変数に入れないと長くなるんだわ。

それからDo While〜Loopの中だけど、Offsetとiの併用してるのは何で?
全部iで書き直したら?
そうすればStr_ShuNameとかStr_NowRngとか必要無くなるよ。
Str_ShuNameの場所もi使って1つずつ下がって行くんでしょ。
Do Whileの条件もi使って表したらStr_ShuNameへの代入も必要無いよね。

それから、Range("B" & i ).Valueって記述だけど、RangeじゃなくてCells使えば列方向もj使って繰り返しが使えるよね。
まあ、真ん中だけ少し違うから恩恵少ないけど。
2017/09/18(月) 22:45:05.41ID:jDUrs+BF0
>>244
sublimnetextとか使ってみてはどうだろう
コピペするだけであら不思議、自動インデント
https://i.imgur.com/rexlwm0.png

VBEと連携できたら便利なんだけど、残念ながらできない
2017/09/18(月) 23:05:45.45ID:xepoeGeEa
>>245
自動でやるならmougでsmart indenter紹介してたな。
多分連携できるはず。
2017/09/18(月) 23:28:32.94ID:jDUrs+BF0
>>246
うお、こんな便利なもんあったのか
ありがとう早速試してみる
2017/09/18(月) 23:32:57.67ID:2tW0i3mn0
>>221
それはテクニック。質問者は
「セルB4から始めて、右に8列‘’○‘’を順番に書き込んでからB5に下がってまた8列書き込む。それを10行繰り返す」方法を訊いている。
2017/09/19(火) 08:03:42.97ID:S/ELy/wxd
学習指導要領的なアレ
2017/09/19(火) 08:41:07.80ID:TQtJdwms0
>>248
でも二重ループでセルを回すとか、実際にはやらない、というかむしろやっちゃいけないようなこと質問されてもね
2017/09/19(火) 09:07:55.93ID:llsJeX6S0
>>250
やっちゃいけないってなんだよw
foreach in rangeって言いたいんだろうけど、excelは行列の削除があるから二重ループでいいだろう
セルじゃなければforeachでいいけどな
2017/09/19(火) 11:43:23.74ID:3hwVeuBP0
列数 = 8
行数 = 10
Range("B4").Resize(列数, 行数).Value = "○"
2017/09/19(火) 12:11:26.47ID:JjVbyw/1a
>>248
初心者は設計に問題がある場合が多いわけで。
真面目に回答してもすったもんだして結局>>221が採用されることも多い。
質問の仕方もダメダメな場合が多いから、回答も段々きつくなる。

>>251
すべきじゃ無いのはむしろセル回す方だと思うが。
配列からの一括挿入にすべきだろ。
254デフォルトの名無しさん (オッペケ Sr4d-ZzG1)
垢版 |
2017/09/19(火) 12:22:40.32ID:hROBZ5mLr
問題もクソもこういう場合質問者はループを回したいなど微塵も思ってない
無知ゆえに質問の仕方がぎこちないだけだ
教えたがりならそれくらい察しろよ
2017/09/19(火) 12:37:00.77ID:k/2scTwdd
二重ループってのもある種のテクニックだから、そのやり方を訊いているのかも知れん。for nextでカウンタiとjを使って...とか。
そうでないなら、例えば、同様の効果を得る処理時間の短い方法を知りたいなどと訊くべし。
2017/09/19(火) 12:58:00.95ID:JjVbyw/1a
>>254
それを察したから>>221を書いたんだろ。
したら>>248の突っ込みが入って今に至ると。

それと初心者の場合、無知なんじゃ無くて自分で色々試してみるということをしないが故ということも多い。
動く結果を欲しがり、動く仕組みを自分のものにしない。

質問でRange("K15:O20")などと出てくるだけでガッカリ。
その範囲は今問題になってるお前の表そのものだろと。
結局貰ったコードそのままコピペして使うんだろうなと想像ついちまう。
2017/09/19(火) 13:16:12.83ID:GpDcdeuu0
「何をどうすればいいのか見当がつかない」というのは根本を理解していないが故だしな。

それにVBAはだいたいネット検索すれば解決策が載ってるんで(凡例が少ないという事はあるけど)、
自分で解決してから「こういう方法以外にどのような解法があるか」と聞いてくるのが一番正常なのかもしれないね。
2017/09/19(火) 14:10:03.77ID:S/ELy/wxd
初心者がいるってことは新規参入者がいるってことなので、考えようによってはありがたいことだ。
259デフォルトの名無しさん (ワッチョイ 398b-MDSF)
垢版 |
2017/09/19(火) 21:47:07.38ID:r8s5qxxU0
つべこべ文句言ってねえでお前らなんかに質問してくれるだけ有り難いと思えよ
260デフォルトの名無しさん (スプッッ Sdf3-uHQa)
垢版 |
2017/09/19(火) 23:27:39.48ID:44Sr5E9Ld
ここはVBAの作成依頼もOKですか?
2017/09/19(火) 23:28:15.16ID:llsJeX6S0
>>260
内容による
とりあえず内容書いてみればok
262デフォルトの名無しさん (スプッッ Sdf3-uHQa)
垢版 |
2017/09/19(火) 23:38:49.19ID:44Sr5E9Ld
>>261
B2〜B40までのセルをダブルクリックすると検索ボックスが出てきてE2〜E25までのデータを検索出来るようにしたいです(実際のデータは1500個くらいありますが)
検索ボックスにaと入力するとaを含むデータがリスト化されて出てきて、そのリストをダブルクリックするとBの列にそのデータが貼り付けされる
っていうのを作りたいです
http://imgur.com/gMJqp1I.jpg
2017/09/19(火) 23:46:09.19ID:awnco+f70
なんで(R1C1形式じゃなくて)A1形式なんだろうなぁ。あれ(A1形式)って感覚的に分かるの?
264デフォルトの名無しさん (ワッチョイ 398b-ZzG1)
垢版 |
2017/09/19(火) 23:54:26.79ID:r8s5qxxU0
バカはいつも突然やってくる
2017/09/19(火) 23:54:28.98ID:llsJeX6S0
>>262
とりあえず写真じゃなくスクリーンショットで頼む
モアレになって鬱陶しい

要するにE列を文字列で絞り込んでB列に貼り付けたいってことね

で、考えた
・openイベントでuseformをExcelとは別に動くようにshowする。要するに常時表示させる検索ウィンドウ。モーダルか、モーダレスか忘れた。
・テキストボックスに入力するとB列が次々と変化
1500ぐらいならリアルタイムで変化させても余裕だろう

誰も作って無かったら明日の夜作るよ
2017/09/19(火) 23:55:49.42ID:llsJeX6S0
>>263
分からん。全然分からん。
ただ既存のシートにマクロでclearcontentsする時はA1形式にする事はよくある
2017/09/19(火) 23:56:24.26ID:GpDcdeuu0
>>262
GUIいじりはエクセルVBAの守備範囲外だからやめたほうがいい。

リボンを改造して専用のボタンを用意する方法があるので、
そこからフォームを呼び出してツールであるかのように見せるのが限界。
268デフォルトの名無しさん (スプッッ Sdf3-uHQa)
垢版 |
2017/09/20(水) 00:01:43.09ID:+p3KI42td
>>265
ありがとうございます
スクショは今は撮れませんが明日できれば撮ります
2017/09/20(水) 00:23:48.32ID:mkPuPLWs0
デジカメでモニターを撮影するのだって広義のスクショなんだけど
むしろ初期はカメラをモニターの前に置くしか方法がない場合が大多数だった
2017/09/20(水) 00:33:24.59ID:rbLHucI/0
変な作り話しなくても、会社とか学校のPCとかで内部データ持ち出せない場合は、
そういう風にするしかないって擁護すればいいんじゃないの。(その場合でも画面の写真撮るのは拙いけど)
2017/09/20(水) 08:10:47.54ID:pHDT776b0
>>262
出来たわ
テキストボックスに入力するとB列で絞込表示
1500件ぐらいなら多分軽い
https://www.dotup.org/uploda/www.dotup.org1370604.zip.html
2017/09/20(水) 19:48:21.95ID:WlNCuA1ya
>>262
B列のダブルクリックとか設計がよろしくないね。
検索ボックスってのはフォームと推測。
B列への入力ってのは検索したリストの中から選択したものを入力ってことと推測。

以下のようなものを作成してみた。
・[アドイン]リボンの[E列データ作成]を押すとE列に10万行のランダムデータ作成
・[アドイン]リボンの[E列から検索]を押すと検索用フォームを表示
・検索用フォームでテキストボックスに入力してEnterキー押下するとリストボックスに検索結果表示
・リストボックスでダブルクリックするとB列に選択されたセルにダブルクリックした文字列を入力

https://pastebin.com/ye8PZecY
273デフォルトの名無しさん (スプッッ Sdf3-wsdZ)
垢版 |
2017/09/20(水) 20:37:33.76ID:JB1iCPlvd
>>265,267,271,272
みなさんありがとうございました
色々コピペですがおかげで何とか出来ました
274デフォルトの名無しさん (ワッチョイ 398b-MDSF)
垢版 |
2017/09/20(水) 21:25:43.55ID:6Jeed1fg0
>>272
設計がよろしくないねwwww

しゃしゃんな無能w
おめーの設計()の方がよっぽどよろしくないわw

煽りじゃなくてマジもんのクソだっつーのそのUI
しかもコードは小学生の初めてのプログラミングレベルだぞお前
2017/09/20(水) 21:37:54.27ID:sWNWre39x
>>274
スゲー承認しました
276デフォルトの名無しさん (スプッッ Sdf3-wsdZ)
垢版 |
2017/09/20(水) 22:21:19.53ID:JB1iCPlvd
ちなみにこんなのが出来ました

B5をダブルクリックすると画像のように検索フォームが出て来る
フォームにabと入力してエンター押すとabを含んだリストが出て来る
http://imgur.com/qzmxOJp.jpg

リストのabdをダブルクリックするとB5にabdが貼り付けされて検索フォームが閉じる
http://imgur.com/jVKEH0a.jpg

↓を参考にしてみたけどRowSourceに値をセットするっていうのがよくわからなかったから空欄にした
http://infith.com/system/excel/vba_form_find/

VBAというかプログラミング初めてなので勉強になりました
みなさまありがとう
2017/09/20(水) 22:31:46.25ID:pHDT776b0
>>276
乙。よー頑張った
こういう報告は嬉しいもんやね
2017/09/20(水) 23:02:00.90ID:1NkuNAa7a
>>274
初心者の人?
今回の質問自体が簡単な部類だけど、それでも俺の書いたコードが非難されるようなものかどうかも区別つかないの?

批判にも具体的な指摘が全く無いし。
2017/09/20(水) 23:22:24.26ID:rbLHucI/0
>>278
以前から居る病気の人だから構わないであげて
VBAのコードが読めないのに何故かこのスレに張り付いてんのよ
2017/09/20(水) 23:30:23.54ID:1NkuNAa7a
>>276
そこのサイトのコードだと毎回下記手順になるんだけどそれでOK?

セルダブルクリック
テキストボックス入力
リストボックスダブルクリック
以下繰り返し

間違って別のセルダブルクリックしたらフォーム閉じなきゃならんし、
連続して入力していくならフォームはモードレスにしてリストボックスのダブルクリックで閉じないようにした方が良い。

セルダブルクリックの中の
frm_Kamoku.Show

frm_Kamoku.Show vbModeless
に変更して
リストボックスダブルクリックの中の
Unload Me
をコメントアウトするだけ。

フォーム表示中にリストボックスダブルクリックで入力するセルが選択できるようになる。
フォームの終了はxボタンで。
281デフォルトの名無しさん (ワッチョイ 398b-MDSF)
垢版 |
2017/09/20(水) 23:31:16.68ID:6Jeed1fg0
>>278
初心者の人?wwwwwww

いやw初心者はお前だからw
何をどう勘違いしたらこうもマヌケな発言が出来るのかねw

そもそもお前のクズコードなんぞ批評の土台にすら登っとらんわ
のぼせ上がんのもいい加減にしろクズ
2017/09/21(木) 00:04:37.10ID:OcnLMsdka
>>281
例えばね、>>276のリンク先の人のコ−ドを見ればすぐに、そこそこ書けると分かるのよ。
書ける人ってのはコード見ればその人の力量がすぐ分かるもんなんだ。

>>276のリンク先の人がそこそこ以上かどうかは扱っている内容が初心者向けだから分からないけど一定以上のレベルにあることは分かる。

残念だが、君はとっても恥ずかしい人だ。
というかね、煽るだけで具体的な内容が無い。
どこが悪いか全く言及出来てないのが笑える。
2017/09/21(木) 00:07:50.25ID:GdqtYoiF0
こんな華やかなコメントアウトって使う?
'*********:*********:*********:
' このプログラムはaでbです
'*********:*********:*********:
2017/09/21(木) 00:11:10.32ID:vjoJajys0
>>276
自分がよく使う、なんちゃってインクリメンタルサーチコードを差し上げよう。
一文字打つごとに検索結果が絞り込まれるよ。
検索ボックスのChangeイベントにコピペしてオブジェクト名は書き換えて試してみてね。
数百件ならラグもないはず。

Private Sub TextBox1_Change()

Dim ce As Range
Dim ws As Worksheet
Set ws = Worksheets("対象シート")

If TextBox1.Text = "" Then Exit Sub

With ListBox1 ’検索結果を表示するリストボックス

.Clear

For Each ce In ws.Range("検索するセル範囲")
If StrConv(UCase(ce.Text), vbNarrow) Like "*" & StrConv(UCase(TextBox1.Text), vbNarrow) & "*" Then
.AddItem ce.Text
End If
Next

End With
End Sub
2017/09/21(木) 00:26:32.97ID:OcnLMsdka
>>283
???
使う人もいるでしょ。
俺も使う時あるし。
こんなのも使うな

' /////////////////////////////////////////////////////////////////////////////////////
' //#名称 Auto_Open
' //
' //#概要 ブックを開いたときの処理(Excelの特殊関数)
' //
' //#引数 なし
' //
' //#戻値 なし
' //
' //#解説
' //
' //#履歴 2017/09/21
' // Coded by Hogeta Hogeo
' //
' /////////////////////////////////////////////////////////////////////////////////////
2017/09/21(木) 00:34:34.85ID:OcnLMsdka
>>276
>>280に書いた内容だけど、よく考えたらB列以外にも入力されちまうわ。
元々の処理ではフォーム表示で入力セル固定だけど>>280では固定じゃ無くすので。

リストボックスダブルクリックの処理でアクティブセルに入力するようになってると思うけど、>>280を試すならアクティブセルの列がBの時だけ入力するようにしないといかんね。
287デフォルトの名無しさん (ワッチョイ af8b-lQLN)
垢版 |
2017/09/21(木) 06:16:04.60ID:dREmj5Qv0
>>282
朝から笑わせてもらったw
なぜお前らはそこまで勘違い出来るのか?
勘違いこそが教えたがりクンになれる素養なのか?
大体分かってたけどw

まあお前らが勝手に勘違いしてるだけならいいが
他人に嘘を教えようとしたら盛大に告発させてもらうわw
2017/09/21(木) 07:36:17.84ID:JiFdzG0np
ここまで具体的な指摘なし
2017/09/21(木) 07:48:27.04ID:GdqtYoiF0
>>285
あぁ、そういう風に使うのか、ありがとう
2017/09/21(木) 08:27:55.66ID:Fp/Plhwox
>>281
スゲー承認しました
2017/09/21(木) 08:28:32.33ID:Fp/Plhwox
>>287
スゲー承認しました
2017/09/21(木) 17:33:45.86ID:w3PiJp4aa
>>287
どこが悪いのか指摘出来ないというのが苦しいね。
批判出来るということは悪い所がわかるということの筈なんだけどな。
悪い所が分かる程の能力は無いけど、取りあえず煽ってみましたってところかな。

ところで君は自分の書いたコード晒したこと有るのかね?
君が俺より出来るなら>>204に答えてあげなよ。
>>204の質問って、ここでは高度な内容になる筈だからさ。

ま、無理だろうけど。
293デフォルトの名無しさん (スプッッ Sd4a-Ir9i)
垢版 |
2017/09/21(木) 17:40:03.03ID:3c3Fmrq2d
>>276です
皆さんありがとうございます
質問なんですが
http://infith.com/system/excel/vba_form_find/
によると
RowSourceに"科目マスタ!A2:A" & wLastGyouを入れないといけなのでしょうか?
プロパティのRowSourceに値を入れようとしてもエラーが出ます
2017/09/21(木) 18:42:41.24ID:w3PiJp4aa
>>293
そもそも、どうしてRowSourceにこだわってんの?
君のやりたいことでは必要無いと思ってたんだが。

RowSourceってのは融通が効かないから自分は基本使わないんだが、エラーになってるとしたらRowSourceとAddItemが共存出来ると思ってるとかかな。
RowSourceはシートの指定範囲のデータをリストにするもので、そこに追加やそこから削除は出来ない。
指定範囲のデータだけでリストは完結することになる。
そこでそのリンク先でも絞り込みの前に.RowSource=""を入れてる。
2017/09/21(木) 18:48:44.67ID:w3PiJp4aa
>>293
RowSourceプロパティに事前に値入れてもエラーにはならんよ。
シート名!A1:A10
とか入れてみなよ。
変数は使えないのは分かるよね。
動く前なんだし。
296デフォルトの名無しさん (ワッチョイ af8b-lQLN)
垢版 |
2017/09/21(木) 22:35:38.87ID:dREmj5Qv0
>>292
批判wwwwww

批評の土台にすら登ってないと何度言えばw
自分の無知無能に蓋をして見たいものしか見てないんだよお前らは
勇気を出して一度自分の無能と真剣に向きあってみ?

頭が悪くても少しは世界が変わるから…何も変わらんかもしれんけどなw
2017/09/21(木) 22:38:43.69ID:JiFdzG0np
依然として具体的な指摘なし
2017/09/21(木) 23:08:08.58ID:u5EL98RNa
>>296
何だ、何も言えるだけの技術的要素を持ってない人か。
具体的な指摘も一切出来ないし、わざわざ>>204の話を振ってやっても何をどうすれば良いかも思い付かないんだろう。

ちなみに俺は3〜4パターンは思い付いてる。
例えば、ビットマップ描画じゃなくても透明ウィンドウに円形リージョン使った輪っかウィンドウ表示するとか。
リージョン使わなくても透明ウィンドウだけで同じようなの作るとか。

ま、何言ってるか分からないだろうけど。
299デフォルトの名無しさん (ワッチョイ af8b-lQLN)
垢版 |
2017/09/21(木) 23:45:26.82ID:dREmj5Qv0
>>298
技術的要素wwwwwww

とことん笑わせてくれるなお前w
相手にされてないのに必死にアピールして虚しくならないのかバカという人種はw
これがお前らの大好きな承認欲求ってやつだろw

他人に認められたかったらまず自分の無知無能を自覚しろよ
話はそこからだ、そうすれば少しは周りも認めてくれるんじゃね?

…あ、バカが居る…てなw
2017/09/21(木) 23:55:14.64ID:u5EL98RNa
>>299
小学生でもお前のレベルは低いと言うことは出来る。
本当に自分の方がレベルが上かを示さなくて良いならな。

それがお前だ。
技術的要素無しであの葡萄は酸っぱいと言ってるキツネのようだ。
2017/09/21(木) 23:57:08.45ID:u5EL98RNa
本当に、何言ってるか理解出来ないから、振った話には一切言及出来ない。
こういう所でレベルが透けるんだよなあ。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況