Excel VBA 質問スレ Part52
■ このスレッドは過去ログ倉庫に格納されています
スレ立ての際は一行目に
!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 VBA 質問スレ Part51
http://mevius.2ch.net/test/read.cgi/tech/1510107990/ Excel2010以降で、コンテキストメニュー追加するとき
commandbars().add
でコメントを右クリックした時のメニューは()の中は何になりますか? ひょっとして、無指定だと何のショートカットキーが表示されるか(「開く(O)」みたいなの)を聞きたいのではなく(表示されないやろ…てか試せばよくね?と思ってた)、
commandbarsの引数に何を指定すればVBAのエディタのコメントを右クリックしたときのコンテキストメニューに項目を追加できますか?っていう質問なのか?
何の質問をしているのかまったく分からなかったが、がんばって一番意味が通りそうな解釈をしてみた どなたか知恵をください
日本語IMEの変換候補がドロップダウンリストで出てくるアレを
区切り記号入れて(カンマがいいかな)
一つのセルに列挙できませんかね?
例えばA1に半角英で「yama」と入力したら
B1に「山,ヤマ,やま,耶麻,耶摩,八馬,矢間」みたいな >>211
できる
基本的にはImmGetCandidateListかImmGetConversionListを使う
IMEの制御はドロ沼だからあんまり完璧を求めないようにほどほどにな >>212
即レスありがと!
そこのリファレンス読んでくるわ! MACでエクセルを使用して、ボタンクリックでphpを実行させてデータを取得してエクセル
に出力する方法を教えて下さい。 ここはエクセルの質問スレちゃうの?、あほばっかだな。 10万件くらいのリストを作ってそれをある規則で並べかえたいんだけど、一番高速で行うにはどういう手法がありますか? お前がやらずに、出来る奴に
キチンと敬意と対価を払って
やってもらう
ノウとかハウとかは後で身に付けたらいい Ruby なら、VBA より速いし、そんなに難しくない Worksheet_SelectionChangeのコード中に、
If Target.Count=1 then Exit Sub
のところで今日急にオーバーフローのエラーが出るようになって
ちょっとググったらCountLargeというのがあることを知ってとりあえず解決したんだけど
一つのセルしか選択肢てないのに・・・
ウォッチ式にTargetを追加して確認したらTargetの中にItemはひとつしかないのにTarget.Countはオーバーフローってなんだこれ? コピー禁止
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.CutCopyMode = False
End Sub
コピー→別のファイル(Excelなど)に貼り付けが出来てしまう
コピー→マウスを動かすだけでキャンセルするようなVBAはないよね、、、。 >>209
コメントアウトのコメントじゃなくてセルに付与するコメントのことだぞ フォルダに大量に入ってる動画ファイルの名前と容量を抽出してエクセルファイルに出力したり出来ませんか? とりあえずファイル操作は全部FSO使っておけば何とでもなる ちょっと横からで申し訳ないです
>>233に似たようなことをFSOでフォルダ内のファイルを数万件取得していて、foreachで一つずつ配列にいれてるんだけどかなり時間がかかる。。一括で取得する方法とかありますかね? エロ動画フォルダに入ってるファイルサイズ取得して一致したらかたっぽを削除するマクロ作ったわ そんなもんフリーソフト落としてくるだけで出来るわ。
一覧表に起こしてアレコレしたいときに捗る >>233
エロ動画を大量に集めすぎてどこに何があるか微妙にすぐ見つけれなくなった俺と同じ悩みなんだろうか Function func(ByVal arg) As int
処理
End Function
Dim var As Function
var = address(func)
Call var(argument)
みたいに、関数へのポインタでコールするのはどう書くの。 >>244
Dim var As Object
Set var = Ref(func)
Call ByRef var(argument) PowerShell なら以下で、ファイル名・サイズを、カンマ区切りで表示できる
cd で、そのフォルダへ移動してから、
ls | %{ $_.Name + "," + $_.Length }
結果をファイルに出力するなら、
ls | %{ $_.Name + "," + $_.Length } > ファイル名
出力
test01.rb,341
test02.rb,216
test03.rb,453 結果をファイルに出力するなら、
ls | %{ $_.Name + "," + $_.Length } > ファイル名.csv でたwwwエクセルとcsvの区別がついてない奴wwwww ブックオープン時にフォームだけ開きたい場合ってどうしたらいい? クラス継承前提で設計してしまったのだが、どうしてくれるの。 >>252
ポリモーフィズムはImplementsがあるから、あとはどうにでも工夫できるやろ スーパークラス作ってそれをオーバーライドしてけば省力化できると思ったのかな? 正直VBAのクラスは他のObject指向言語に比べるとその辺見劣りするのは仕方ない。元々構造化言語だし。
そこをどうするかを考えて行くのが醍醐味でもあるんだけど
やっぱり移譲にも限界があって例えばフォームを継承してもっと機能を追加したり変更したりしたいとき、
.Net系であれば単純に継承してメソッドやプロパティを追加やオーバーライドすれば良いものが、
移譲の場合は全て呼出し口を設定しなければならなかったりするので
こういう場合は余り現実的とは言えない。
移譲や継承を使うのとはまた違った方法を考える必要があるんだけど
それを考えるのもまた醍醐味。 他に現実的な解法が無いからVBA使っているだけで、誰も好んで使っているわけではないんだけど、
かといって自分の無能を全てVBAのせいにしている発言を見るとイラッとするのは確か 完全に割り切って ByVal As Object または ByVal As Variant で委譲オンリー 間違えた
ByVal As Object または ByRef As Variant エクセルのマクロちょいちょいと組み立てて自動化させたら
ズルをするな、計算機でちゃんと計算して打ち込め
って怒られた
意味わかんねー パソコンが登場し始めた前世紀になら居ただろうけど、このご時世だと信じがたいわな その手の輩は
1.そんなもんを自動化したら
工数がへるから残業する理由が
なくなるだろ
2.人月商売なのに何で利益減らす行為するん
3.手作り、真心込めて、おもてなし
さて、どれ? >計算機でちゃんと計算して打ち込め
いや〜、そこまで言うなら計算機なんて信じず算盤で計算しろ
が正しいでしょ w 今の時代でも、碌にパソコン使えないくせに、やたらパソコンで作業したがるおじさん・若手はいるし
ああいう人たちが「下手にパソコン使わせると遅くなる」ってイメージを植え付けているのかもしれない
あとマクロ組む工程までいれると、さして時間短縮になっていない人とか 内製にせよ外注するにせよ他人にマクロ作ってもらうとなると時間も経費もかかるし、改修も容易じゃないからな
多少時間かかってもマクロを自分で組めた方が楽なのは間違いないけどね
管理職のくせにマクロの効用を理解できないような奴が、マクロ実装にかかる時間だけを見て手間がかかるからやめろとか言ってくることが結構あるからな 結構あるってことはみんなお前のマクロにはもう懲り懲りなんじゃないの? エクセルマクロだと正しいか間違ってるかの判断が(上司にとって)出来ない
上司が使えないプログラミング言語は禁止ねっていうのと同じ種類の問題だと思うよ マクロは自分用だとすごく便利
他人が作りっぱなしにしたマクロをだましだまし使うのは地獄 エラーハンドリング全然されず
Sheet の初期化(単なるクリア)も
人間がやらないとダメな仕様
のマクロに機能拡張しろってのが
あったけどとりあえず5分で
チンカスであることを強調した上でC#で作り直した思い出 自分だけでこっそり使うんならいざしらず、
他人に使ってもらいたいんなら
使ってもらえるような作り方&ドキュメント整備しろってことだな エクセルは説明書ページを簡単に添付できる(シート追加するだけ)のがいい
EXE形式だとreadme.txtやHELPなんて読んでもらえないしな
まぁ、エクセルで説明ページがあってもよまないやつがおおいから結局コメント機能使いまくりだったり
画面上に説明書いちゃうけど もっぱらpowershellやvbscriptで書いてる
元のワークブック汚さずに済むし >>281
ちなみにどう使い分けしてる?
powershell 使い始めたんだけど思うような動作しなくて、結局vbsでいいやってなっちゃう。 >>281
ちなみにどう使い分けしてる?
powershell 使い始めたんだけど思うような動作しなくて、結局vbsでいいやってなっちゃう。 デバッグ中に別シートに集計中なのに
元データのシートを破壊してしまって涙目
アクティブシートのカレントリージョンをクリアで綺麗サッパリ(´Д`) マクロはおめえのオモチャじゃねえんだよ
これに懲りたらスッパリとマクロから足を洗うんだな マクロは個人のオモチャでいいだろう
性能や信頼性は作り手による >>286
何開き直っとんねんお前もマクロいじるの禁止な 糞マクロでもいいじゃない
だって人間だもの
げいつ >>287
マクロは個人のものだと言っとるだろうが
他人に直接影響を及ぼさないんだから禁止もへったくれもない エクセルVBAのグラフの範囲指定Rows.Countで困っております。
お力添え頂きたくお願いしたいです。
A1からD600まで範囲指定して、K1からK600 までをVBAで範囲指定したいのですが、
なお601行目はすべて空白で、602行目には合計数が入っています。
600行目というのは日によって異なり入力値の最大数がばらばらです。
手動でやる際は A1をターゲットし、Shift →×4、CTRL+SHIFT+↓、
CTRLを押しながらK1をターゲットCTRL+SHIFT+↓で選択。
これをVBAに置き換えるために行ったのですが
某サイトで
Set Target = Union(Range(Range("A1"), Cells(Rows.Count, 4).End(xlUp)), _
Range(Range("K1"), Cells(Rows.Count, 11).End(xlUp)))
というような指定方法がありましたので行ってみましたが
合計数が入力されている602行目が範囲に含まれており困っております。
A1:D600(空白まで),K1:K600(空白まで) というように指定するにはどのようにすればよいでしょか。 >>282-283
>>281じゃないけど俺は新規作成はPowerShellに一本化した
まだちょっとはあ?ってなる挙動があるけどやりたいことはだいたいできてる >>290
Range("a1").CurrentRegion
Range("k1").CurrentRegion
でやってみよう >>290
言い忘れたけど
A〜DとKが表としてつながってない想定ね
一つの表からなら
Range(Range("a1"), Range("d1").End(xlDown))
Range(Range("k1"), Range("k1").End(xlDown))
でそれぞれの範囲をとれる >>293
ありがとうございます。
2つ目に書いていただいた表が一個の場合を想定しています。
Rangeで行う事が出来るのですね。
Cells(Rows.Count, 4).End(xlUp)をxlDwonに
変えてもダメだったのでかなり絶望してました。
A1〜A20とかに書かれている条件でそれが含まれていたら↓を検索するとかも
これでできそうな気がしてきました。
ありがとうございました。 すみません、あまり仕組みがよくわからず
こちらに質問致します。
やり方の案内でも助かります。
Excelかtxtのデータをシート上に配置したボタンワンクリックで
→MySQLにアップデートって出来ますか?
バーコードリーダー等のlogファイル
xls,csv,txt
―――A――――B
1、barcode 棚卸数
2、9876543, 21
3、1234567,89
MySQLデータベース
1、メーカ、型番、コード、品名、在庫数
2、Pansomy,THE123,9876543,USOメモリー,3
3、Hitasun,END987,1234567,モバテリー,7
在庫数を棚卸数で上書きが出来れば良いです。
よろしくお願いいたします。 >>291
なるほど。
VBSはドラッグ&ドロップが使いやすいが終息方向。
VBAは開発しやすいがあくまでオフィスの製品ありき。
pythonは流行ってるが会社のマシンにデフォで入ってない。
導入のしやすさ、汎用性からpowershell かなあ。ただ動作が遅いのが気になるけど アレを使っちゃう派
誤取得する場合があるって聞くけどまだ未経験 『棚卸数の入力作業vba』(Masayo) エクセル Excel [エクセルの学校]
www.excel.studio-kazu.jp
こちらのサイトを参考に
http://www.excel.studio-kazu.jp/kw/20111019173742.html
VBAのマクロをボタン登録で
エクセルのbook 内のsheet2セルからsheet1に書き込む事は出来るのですが、
powershell?が何なのか知りませんがそれで可能ならそれでも良いです。
ボタンを押すとインポートファイルを指定できる物でも良いのですが、
ただ、PhpMyAdminからの操作が素人には難しくてめんどうなので、
ログファイルをドラッグドロップでアップデートかボタン1つでやれないかと思います。
VBSや.hta(html application)でMySQLにアクセスする方法とかでも良いです。
ログファイル名とフォルダが固定ならスケジュール自動化も視野にしたいです。
よろしくお願いいたします。 >>300
ODBCを使うんですか?ありがとうございます。
具体的な使い方がわからないので、ご提示のサイトで勉強したいと思います。
>ySQLコマンドラインツール
マウスかタッチパネル操作のみのおじいちゃんでも出来ますか? >>300
ご紹介頂いたページを見てみました。
誠に申し訳ないのですが
ログのcsvファイルを新規でMySQLのテーブルに入れたい訳ではなく、
ExcelにMySQLからデータをダウンロードしたいのでも有りません。
確かにsheet1にMySQLからのダウンロードは可能です、sheet2にcsvのファイルも準備できます。
そして、先のVBAを用いてsheet2からsheet1の書き換えと消し込みが出来ましたが、
sheet1の書き換え後のデータをMySQLに戻すには
一旦csvで保存して、MySQLのテーブルをdrop かtruncate してから
書き換え保存したcsvをMySQLにインポートするしか無いのでしょうか? >>297
ケースバイケース
空白もカウントしたいかどうかで方法を変える ■ このスレッドは過去ログ倉庫に格納されています