TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
VBで作られた有名なアプリって何?
くだすれDelphi(超初心者用)その58【Embarcadero】
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
ECMAScript デス 4
Boost C++ Libraries Sandbox
MFC相談室 mfc23d.dll
ExcelVBAで勤務表を作ろう
【Delphi】Embarcaderoオッチャ その34【C++ビルダ】
UWSC初心者用スレ
将来性ないプログラミング言語。Delphi含まれず安心
Excel VBA 質問スレ Part65
- 1 :2020/03/17 〜 最終レス :2020/04/20
-
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part64
https://mevius.2ch.sc/test/read.cgi/tech/1575297834/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
- 2 :
- >>1乙
- 3 :
- >>1乙
>全スレ998
挿入か貼り付けかはっきりしてくれ
- 4 :
- 行をコピーして挿入操作
マクロ記録したら、Selection.Copy Selection.iIsert Shift:=xlDown が出てきたけど普通に再生できたぞ
- 5 :
- VBAからインターネットエクスプローラーを起動して、
指定したURLのサイトを表示して、
スクリーンショットを取って行く。
という作業を自動化したくて色んなサイトのコードをコピペして、
一応動くものは出来たのですが画質が悪いです。
下記はそのコードの一部分なんですが、どこをどういじれば
画質が良くなるのでしょうか。
Private Declare PtrSafe Sub keybd_event Lib "user32" ( _
ByVal bVk As Byte, _
ByVal bScan As Byte, _
ByVal dwFlags As Long, _
ByVal dwExtraInfo As Long)
・・・
keybd_event &HA4, 0&, &H1, 0&
keybd_event vbKeySnapshot, 0&, &H1, 0&
keybd_event vbKeySnapshot, 0&, &H1 Or &H2, 0&
keybd_event &HA4, 0&, &H1 Or &H2, 0&
- 6 :
- プラウザのウィンドウサイズを大きくした後で画面キャプチャしたら
満足の行く画質になりました。
>>5の質問は撤回します。
- 7 :
- >>4
まじすか
コピー元が別ブックだったのでそのせいかも
- 8 :
- >>5
キーボードマクロ最悪
- 9 :
- リボンを自動的に非表示にする設定だととクイックアクセスに登録したものも含めてコマンドがすべて隠れてしまうんだけど
特定のコマンドのみ表示させておく方法はないかな?
マクロとして登録させて画像にマクロを登録しようとしたけど動かない。
- 10 :
- >>9
うちのExcel2016だと隠れないけど、それ以降だと違うのかな
リボンの下に表示offでもだめなら
フォーム作って、UserForm.ShowModal=False という手もあるよ
- 11 :
- >>10
>>9
UserForm.ShowModal=False はどういう方法?
- 12 :
- >>11
自作フォームをカスタマイズメニューに見立てて自作のマクロなどを呼び出す
- 13 :
- >>12
マクロを呼び出すのは簡単なんだけど、各コマンド(既存の機能)をよびだすのかできない
たとえば描写とかペンとか消しゴム機能とか
- 14 :
- 既存の機能が必要ならリボンを非表示にしなきゃ良いんじゃね
- 15 :
- >>13
SendKeys "% 〜
- 16 :
- >>15
ショートカットキーを設定してってことかな?
- 17 :
- csvを読む場合で、見出し行とデータ行が文字と数値で形式が違う場合とかどう処理しますか?
- 18 :
- >>17
パワークエリで読み込んで任意のデータ型に変換する
- 19 :
- >>17
CSVを読み込む場合にブックとして読み込むことはまず無い。
というか、まずテキストとして読み込む。
処理も何も、全て自由に出来るぞ。
- 20 :
- >>17
全部文字として読み込む。コードで数値として処理したいならcintやcdblでキャストすればいい。因みにワークシート関数にはNumberValueってのがある。
- 21 :
- あれなんとかならんかな。
NULLがあるとコケるから、
いちいちIIF(A IS NOT NULL, CINT(A))ってやらなきゃいけないの。
- 22 :
- VBA で、セルの指定しても行の指定が無効になってて、必ず1行目に表示されてしまいます。
何が原因でしょうかね?
教えてください。
- 23 :
- >>22
お前の馬鹿頭
- 24 :
- 原因わかりました。すみませんでした。
- 25 :
- ここの住民の霊性は暴力団と同じですね
- 26 :
- ここだけじゃなく2chはどこも似たり寄ったりです
貴方が来るような場所じゃありません
- 27 :
- >>25
霊性?
馬鹿確定
原因としては正しかっただろうが
- 28 :
- >>22
ソースコード書けないの?
君書いたのが本当にセルの指定をしてると信じる人がいるとでも?
- 29 :
- よろしくお願いします。
数百行あるシートで、上から順に一行ずつ以下の操作を行いたいです。
(1) C列の文章の中に、「一言コメント:」という文字が入っていれば2へ。なければ終わり、次の行へ
(2) 「一言コメント:」とそれ以下の文字列をC列の値から削除し、E列の、元々の値(文字列)の前に貼りつけ
(3) E列の文字列の中から「「一言コメント:」という文字列を削除
以上です。
まず、(1)の検索がうまくいかず、(2)の文字列取得も、一文字ずつ数えてカウントし、あらためて「終わりから○文字」みたいな
やりかたをするしか方法が浮かびません。
たぶん、上級者ならもっとシンプルな書き方ができるのではないかと思い質問させていただきました。
どのように書けばよいでしょうか?よろしくお願いいたします。
- 30 :
- For文をRowCntって変数で回していると仮定して
If Cells(RowCnt, 3).Value Like “*一言コメント:*″ Then
で引っかけるとか?
- 31 :
- VBAなくても関数だけで目的達成しそう
- 32 :
- >>29
Ruby で作った
text = <<"EOT"
ab一言コメント:12
あいう コメント:
xyz一言コメント:456
EOT
search_word = "一言コメント:"
sw_length = search_word.length # 7文字
text.each_line do | line | # 1行ずつ処理する
line.strip! # trim
# 単語が見つかった時だけ、単語の前後を出力する
if pos_1 = line.index( search_word )
puts "#{ line[ 0 ... pos_1 ] } - #{ line[ pos_1 + sw_length .. -1 ] }"
end
end
出力
ab - 12
xyz - 456
- 33 :
- >>15
どんな機能でもショートカットキー設定できるの?
- 34 :
- >>29
VBAでないとだめなわけじゃないならExcel関数でやればいいと思う
- 35 :
- >>33
Alt押してみ
- 36 :
- >>29
Dim c As Range, e As Range
s$ = "一言コメント:"
For Each c In Range(Cells(1, 3), Cells(Rows.Count, 3).End(xlUp))
i% = InStr(c, s)
If i Then
Set e = c.Offset(0, 2)
e = Replace(Left(c, i - 1) & e, s, "")
End If
Next
- 37 :
- ここは上級者向け?
ド素人が少しずついろんなサイトや動画見て覚えようとしてるレベルじゃダメかな
- 38 :
- >>37
初心者も上級者もキチガイも見てる
みんなが毎日見てるわけじゃないから、タイミングが悪いと質問に答えてもらえないこともある
- 39 :
- いろんなサイト見た方が早い
- 40 :
- FileSystemObjectでFilesのコレクションょ取得したあと
それぞれにアクセスするにはどうしますか?
Files(1), Files(2)のようにするとエラーが出てエラいこっちゃとなります。
For each文ならできるのですがそこまでするほどのことではない時には?
- 41 :
- コレクションょ
- 42 :
- を
- 43 :
- 暇だし、見てみた
Const path = "c:\temp"
Dim fso As Scripting.FileSystemObject
Dim item As Object
Set fso = New Scripting.FileSystemObject
Set item = fso.GetFolder(path).Files.item("test.csv")
filesコレクションからの特定fileオブジェクトはitemプロパティでkeyをnameで指定すれば直接取れる
ExcelVBE上はitemでナンバリングされてるけど、配列みたいに番号指定は出来ないんじゃないかな(他の人知ってればいいな)
ファイル名特定できるならgetfileでもええね
個人的にはdirとか分かりやすいがね
- 44 :
- itemでナンバリングされていないんじゃないか?
だからitem(1)やitem(2)で取得できないのでは。
それゃファイル名を()の中に書けば取得はできるけど。
- 45 :
- for each でいいやん
- 46 :
- 「そこまでする」の考え方がまずおかしい
中身がたとえ1個でも2個でも普通はコレクションにはFor Eachを使うもんだぞ
- 47 :
- >>45-46
このハゲー!
違うだろ!
最初にfor eachはやらないと言った。
コレクションの代表ということで任意の1個だけを選んでそのプロパティ等を調べる、
ということはプログラミング経験がある程度あればそういう状況に遭遇することはたまによくある。
- 48 :
- fsoのfilesコレクションには通常のコレクションみたいにインデックス指定が出来ないのよね
countとitem(key)プロパティしかない
ファイルシステムの違いとか、歴史的経緯からかはしらんけど
だから基本for eachで他の形にする
- 49 :
- >>48
そんなことはとおの昔に知ってるから
ここで質問をしたのだ。
- 50 :
- ID:nn3rUaIL0
馬鹿はR
- 51 :
- では次の方
- 52 :
- インデックスが使いたいなら自分で配列でも作り直せばいいのに
- 53 :
- 不毛だな
- 54 :
- Exit Forすればいいんじゃまいか
- 55 :
- OpenDocumentスプレッドシートのデータをADOで取得する方法ある?
EXCELに変換しろってのは無しで。
- 56 :
- >>44で自分で答だしてんじゃん
- 57 :
- ドライバ自作しろ
- 58 :
- プラスとマイナスはあるから丸ドライバー作るわ
- 59 :
- ファイル入出力に使うopenやinputが何者か(関数?メソッド?など)知りたいです
これらの機能はなぜオブジェクトブラウザに乗っていないのでしょうか
マイクロソフトのウェブヘルプにはステートメントとして乗っているようですが
ステートメントというのは関数やメソッドなどの分類ではないですよね?
ご教示お願いします。
- 60 :
- >>59
ステートメントというのは関数の祖先にあたる概念
コンピューター言語が発明された初期からある命令文の分類の一つ
- 61 :
- 馬鹿に馬鹿が答えている
- 62 :
- VBAを覚えようとしてる初心者以前だが
まず何となくルールから覚えてる
=は同じじゃなくて←の意味ぐらいにとらえておく
あとはコードというか使いそうな単語を少しずつ
msgboxとかRangeとかactivecellとか
でもとっかかりがわからんわ
難しすぎですな…
- 63 :
- 覚えるのは結構だけど、普段やってる作業をVBAで再現するとこから始めると飽きずにやれるんじゃ
コピペ作業、シートコピー、ボタンで特定の計算とかね
だんだんCSV読みたくなったりして高速化したくなったりして、そうやって覚えていく
- 64 :
- TEST
- 65 :
- ユーザーフォーム上にあるボタン1を押すとボタン1を非表示にしてフォームのキャプチャを取得。
その後ボタン1を再び表示して終了。
みたいなものを作りたいのですが
SendkeyでAlt+Printscreenを送っても
素の状態ではボタン1が残った状態のものがキャプチャされ、
Waitをかけると今度は画面全体のキャプチャになってしまいます。
フォームをダイレクトに画像ファイルにする、とかでも良いのですが調べても中々応えに辿り着けなかったので皆様のお知恵をお借りしたいです。
何か良い手はないでしょうか。
- 66 :
- 以下RUNすると、"!ALARM()が見つかりません。”ってエラーになる。
何故ですか?
Public FLG As Integer
Private Sub CommandButton1_Click()
With Sheet1
Cells(2, 1) = Date
Cells(2, 2) = Time
If FLG = 1 Then
FLG = 0
CommandButton1.Caption = "ON"
Else
FLG = 1
CommandButton1.Caption = "OFF"
Call OnTimeStart
End If
End With
FLG = 0
End Sub
Sub OnTimeStart()
With Sheet1
Application.OnTime Now + TimeValue("00:00:05"), "ALARM"
End With
End Sub
Sub ALARM()
With Sheet1
Cells(2, 1) = Date
Cells(2, 2) = Time
End With
End Sub
- 67 :
- すみません。
情報の伝達に齟齬がありました。
Sendkeyではなくkeybd_eventsでした。
Altのkeyeventをコメントアウトしたら何故かフォームだけのスクリーンショットが撮れました。
vbKeySnapshotはAlt+PrintScreenだったのでしょうか?
Private Sub CommandButton1_Click()
UserForm1.CommandButton1.Visible = False
'keybd_event vbKeyMenu, 1, &H1, 0
keybd_event vbKeySnapshot, 1, &H1, 0
Application.Wait [Now() + "0:00:00.5"]
keybd_event vbKeySnapshot, 1, &H1 Or &H2, 0
'keybd_event vbKeyMenu, 1, &H1 Or &H2, 0
UserForm1.CommandButton1.Visible = True
End Sub
- 68 :
- MacでもVBA使えますか?
- 69 :
- 使えるけどwindowsと全く同じように動くかまでは知らん
- 70 :
- 新しい天啓が下った。私は馬鹿ですらなく、場であり、これが私の仕える神のような気がしたが違ったような気がした。
忠実に表現したらこうなった、つまりそういうことなんだろう。
- 71 :
- >>66
標準モジュールに書いてるか
- 72 :
- WEBクエリはhttpsだと遅いすか?
そうなったサイトが急に読み込み遅くなったんすけど
- 73 :
- 初心者はまずここ見とけみたいなサイトとかYouTubeの動画ありますか?
宣伝込みでも俺が踏むだけなので良かったら教えて欲しいです
本当に何から見てけばいいのかわからない
asとかretとか当たり前に出られてもわからない…
- 74 :
- 知らんがな入門書買え
- 75 :
- >>73
動画でプログラミングを覚えるのはとても難しい
エクセルの使い方や開発環境の整備とかなら分かるけど
言語を覚えるのは本を読んでコードを書く方が早いだろう
- 76 :
- >>73
https://www.sejuku.net/blog/6516
- 77 :
- retって何?
- 78 :
- >>75
>>76
ありがとう
とりあえず、マクロからあるURLやoffice系のソフトを呼び出すコードをネットから丸パクリしてみたんだけど結局これが良いのか悪いのかそもそもルールすらあまりわかってない
サイトや本で必死に勉強しますわ
https://i.imgur.com/Llw26vN.jpg
https://i.imgur.com/CEIjgGb.jpg
- 79 :
- 字で書けよ基地外か
- 80 :
- 図形のグループ化についてです。
ショート上に円が無数にあってその円の中にテキストがあります。
これを円と円の中のテキストをそれぞれグループ化してShapeの名前をテキスト名にするにはどうしたら出来ますか?
- 81 :
- >>80
グループ化はGroupメソッドを使う
For Eachを使えば図形がいくつあっても関係なく同じようにできる
- 82 :
- >>80
shapeオブジェクトでいじる
- 83 :
- 図形をVBAで複雑にいじろうとすると悲しみしか生まなさそう
- 84 :
- Worksheets("min").Range(Cells(N, 2), Cells(N, 100)) = "999"
これで複数セルに一括入力したいのですが
アプリケーション定義またはオブジェクト定義のエラーです
と出ます。
何がいけないのでしょうか?
- 85 :
- Nを定義してないんじゃない
- 86 :
- cellの前にもシートがいる
- 87 :
- With Worksheets("min")
.Range(.Cells(1, 1), .Cells(20, 2)) = "999"
End With
できました^^ありがとう
- 88 :
- それでいい。
- 89 :
- いえいえ
- 90 :
- 検索して違うシートから値を 持ってくるマクロで持ってくる値が0以下(マイナス)ならば
違う列に転記させたいのですがwithエラーが発生してうまく動きませんでした。
Dim i As Long, c As Range, e As Range, wS As Worksheet
Set wS1 = Worksheets("明細1")
With Worksheets("data")
Set c = wS1.Range("D:D").Find(What:=.Cells(i, "B"), LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing and wS1.Cells(c.Row, "Z").value < 0 Then ←ここでエラー
.Cells(i, "V") = wS1.Cells(c.Row, "Q")
ElsIf Not c Is Nothing and wS1.Cells(c.Row, "Z").value >= 0 Then
.Cells(i, "X") = wS1.Cells(c.Row, "Q")
またマイナス値をプラス値に変換したく
.Cells(i, "S") = abs(Cells(i, "S"))
としましたが小数点が消えてしまいます。
-77.00が77になってしまうのですが77.00としたいです。
- 91 :
- cがnothingの時c.rowがエラー
バラせ
- 92 :
- 馬鹿がゾロゾロ出てくるのは何で?
- 93 :
- 春休みだから
- 94 :
- >>91
If wS1.Cells(c.Row, "Z").value < 0 Thenでもエラーが出ます
With Worksheets("data")が邪魔をしてるとかですか?
- 95 :
- "Z"で指定できたっけ
- 96 :
- >>94
VBAは関数や演算子の引数は全て渡される前に値を計算するんだよ
だから Not c Is Nothing が真じゃないときは wS1.Cells(c.Row, "Z").value < 0 を評価しないように
if Not c Is Nothing then if wS1.Cells(c.Row, "Z").value < 0 then ...
としないといけない
あとCellsプロパティは見にくいんで範囲に名前つけるかテーブル化してRangeプロパティで呼んだ方がいい
- 97 :
- >>92
答らえれない馬鹿以下の癖に?
- 98 :
- 範囲に名前はなぁ・・。
上手く使いこなせればいいが、
みんなで共有するファイルに使うと、
知らない間に#REFだらけになってるwwww
- 99 :
- >>71
レスありがと
標準モジュールに書いてない。
しばらく、やってなかったんで忘れていた。
すみません
- 100 :
- >>98
異常時に例外が投げられるように設計するのは普通だと思うんだが・・・
100〜のスレッドの続きを読む
機械語なら俺に質問しろ!その2
D言語 Part34
C++使って何するの?
JavaScript 4
Visual Studio 2019 Part3
■WindowsCEプログラミング(EVC PB3含む)Ver2.2■
疑似乱数2
Rubyについて(アンチ専用) Part005
【C++】高速化手法【SSE】2
オブジェクト指向ってクソじゃねぇかよPart4
--------------------
【東京レイヴンズ】あざの耕平 八十六神将【サリエル/BBB】
信号・標識・保安設備について語るスレ30
海、プールでの放尿
【FPS】Paladins part.80【F2P】
ただのFXスレ 1円
ペ・ドゥナ
ウルトラストリートファイターIIULTRA STREET FIGHTER II The Final Challengers Part3
【なでしこJAPAN】日本女子代表総合スレッド 437
戦姫絶唱シンフォギア XV 718曲目ッ!
【字書き用】何が何でも大手になりたい◆110
【香港】ウイグル人拷問の漫画掲示で反響 閲覧250万 ★2
生きるのがしんどい人が弱音を吐き出していくスレ10
【メガテンD2】D×2 真・女神転生 リベレーション part388
【すかいらーく】回転ずし「魚屋路」で食中毒 ウニから腸炎ビブリオ菌」全店閉鎖、会見など行わず
京成立石の居酒屋
元気のミナもと☆中野美奈子Part.235
【SCDO】ゴシックは魔法乙女★500【ゴ魔乙】本スレ
みんなもっと個人サイトを作らないか?24
【ID非表示】書き込むと奇跡が起きるスレ!【☆】11
【SUBARU】4代目(GP/GJ)インプレッサ133【IMPREZA】
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼