Excel VBA 質問スレ Part69

■ このスレッドは過去ログ倉庫に格納されています
2020/12/13(日) 00:22:23.67ID:Fd224klc0
!extend:checked:vvvvv:1000:512
↑同じ内容を2行貼り付ける

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

※前スレ
Excel VBA 質問スレ Part68
https://mevius.5ch.net/test/read.cgi/tech/1598756127/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2020/12/22(火) 07:51:09.62ID:k2dAsx4kx
名前付きセルを参照する時、Range("名前")だけだとVBEから実行するときに
他のブックがアクティブになっていて"名前"のセルが無いエラーが出るんで
ThisWorkbook を指定したいんですが、RangeオブジェクトがSheetにしか無いんで
名前指定しているにも関わらず
ThisWorkbook.Sheets("sheet1").Range("名前")
みたいにするしか無いんですが

これシート指定の部分を任意にすることは出来ないんでしょうか?
2020/12/22(火) 07:54:48.95ID:asPFS5mN0
出来る出来ないで聞かれたら出来る
2020/12/22(火) 10:21:28.79ID:Lmg+KcEvM
ツリーからシートを選んでプロパティからオブジェクト名をよく見てみると良いよ。シート名とオブジェクト名が切り離されてる事に気付くから。
そしたら【オブジェクト名】.Cells([RowIndex],[ColumnIndex])とか【オブジェクト名】.Range(“名前”)とかでやってみ。
2020/12/22(火) 10:41:24.56ID:kzqT97dS0
>>81
あとになって自分のコードが理解できなくなるに1ガバチョ
2020/12/22(火) 14:37:29.68ID:sqvmca9RM
>>81
別にそれでいいじゃんよ
2020/12/22(火) 14:44:06.90ID:sqvmca9RM
>>79
そもそもシート1とかシート2とか何を言ってるんだ?

シート1というシート名のシートがあるなら、
Sheet("シート1")と指定すればいいだけだろうに、それがプログラム中に無いぞ。
2020/12/22(火) 16:07:51.53ID:wg95/wQDd
いつものあいつがコピペしただけのものでは?
2020/12/22(火) 20:57:51.79ID:zqIv26bj0
質問です。

シート 1〜 最終シート全ての
「B列の14行目」 から
「B列の値のあるまとまりの最終セルの一つ前まで」
のセルの値をクリアしたいです。

下のコードで試してみたのですが、アプリケーション定義またはオブジェクト定義のエラーと出てしまいます。
VBA覚え始めたばかりの完全初心者でどこが違うのか分からないです
すみませんが、教えてもらえませんでしょうか

Sub test()
G = Sheets.Count

For H = 1 To G
Sheets(H).Range(Range("B14"), Range("B14").End(xlDown).Offset(-1, 0)).ClearContents
Next

End Sub
2020/12/22(火) 21:29:14.42ID:sqvmca9RM
Dim G As Integer, H As Integer

を冒頭に入れてもダメかえ?
2020/12/22(火) 21:43:02.14ID:zqIv26bj0
入れてみましたがダメでした…
OptionExplicitも外してますので宣言の問題ではないようです
でも宣言はすべきですね…
2020/12/22(火) 21:47:05.04ID:sqvmca9RM
そういやクリアコンテンツって
シートの選択から直は無理だったような?w

Sheet(H).Select

を行で独立させてみたら?
2020/12/22(火) 21:50:43.47ID:sqvmca9RM
すまん

Sheets

ね。s抜けたわ。
2020/12/22(火) 21:55:05.91ID:zqIv26bj0
すみません、自己解決しました…
色々ありがとうございます。

Rangeの範囲指定の中のRangeにSheets(H).が抜けていたのが原因でした。
For Nextでシートが移ってもSheets(1)のRange範囲を参照するようになっていたようです・
2020/12/22(火) 22:02:13.02ID:sqvmca9RM
あ、その罠かw
レンジレンジでやるとそこめんどくさいんだよな
Cellsのがいいと思う
あと>>91でもいけるんじゃないかな
2020/12/22(火) 22:08:35.35ID:AEyd3vLu0
アクティブじゃないシート上の画像のサイズ変更すると想定と少しずれるんですが原因分かりますか?
サイズ変更する前にシートをアクティブにすると全て同じ大きさになるのでコードは合ってると思います
2020/12/23(水) 05:25:00.77ID:j3OsNt/k0
>>80
早速の回答ありがとうございます

For r = 1 To Range("A" & Rows.Count).End(xlUp).Row

For r = 1 To Sheet("1" & Rows.Count).End(xlUp).Row
に変更したらいいのでしょうか?

初心者ですいません
2020/12/23(水) 06:50:55.19ID:xBPwPYbC0
>>96

For r = 1 To Sheet1.Range("A" & Rows.Count).End(xlUp).Row
2020/12/23(水) 11:44:28.79ID:j3OsNt/k0
>>97
ご教授ありがとうございます
初心者じみた質問で申し訳ありません!

ComboBox2.AddItem Sheet3.Range(r, c).Value

Sheet3を参照できないのですがどこが間違っているのか理解できません
わかる方いましたらよろしくです
2020/12/23(水) 11:46:56.79ID:o2ScoeZIM
>>98
RangeをCellsに変えてみ
2020/12/23(水) 15:07:17.52ID:Xl4mgk4Md
いつものあいつ確定
2020/12/23(水) 15:43:35.91ID:FcIaoKlm0
いつものあいつが好きな奴確定
2020/12/23(水) 15:51:50.15ID:Xth9/5BD0
いつものあいつは人気者
https://store.line.me/stickershop/product/1265677/ja
2020/12/23(水) 18:16:20.38ID:j3OsNt/k0
>>99
ありがとうございます
2020/12/23(水) 18:19:10.98ID:j3OsNt/k0
>>98
早速変更したらできました!!
本当に感謝します
自分の初心者じみた凡ミスですね
ありがとうございます
こころの優しい御仁
2020/12/23(水) 20:48:51.52ID:ZakT/bFP0
初心者じみた…?
2020/12/23(水) 21:42:26.23ID:+z0aXtBh0
ネタかと思って傍観していたが、久しぶりに質問スレっぽくてホッコリしたわ
2020/12/23(水) 23:00:34.90ID:igbw91HoM
完全にいつものあいつじゃん
2020/12/23(水) 23:04:58.03ID:ZakT/bFP0
一見相手を持ち上げてるようで馬鹿にしてるいつもの感じ
2020/12/24(木) 18:03:54.48ID:ib8ApZa60
xlsで共用管理してた物品リストを
現場に飛ばされて激怒した仕事できないおばちゃんが
シートの保護にパスワードをかけてそのまま年末休みに入った
ネットで拾ったプロージャで
パスワードを解除した俺が神扱い
2020/12/24(木) 19:35:35.16ID:i3RIeYBl0
ならこんなところで虚しいアピールしなくていいよ
2020/12/24(木) 20:31:22.57ID:OvKwRG9WM
首案件か…
2020/12/24(木) 21:20:52.76ID:6nJjzXUX0
保護かけただけなら実害ないじゃないか
2020/12/24(木) 23:15:25.57ID:ViSodmdc0
許可なく改竄するのってどうかな
2020/12/25(金) 00:16:09.85ID:OfYljKJA0
ユーザーフォーム1のボタンを押すと開始する処理をユーザーフォーム2から起動する方法ってない?
クラスに書いとかんとだめなのかな
2020/12/25(金) 02:22:11.64ID:Zgx05nqca
書く場所かえればいいのに、いつもの人か?
2020/12/25(金) 02:34:13.17ID:oy51KHzs0
標準モジュールに書いてCallではダメか?
2020/12/25(金) 04:03:39.34ID:OfYljKJA0
>>116
そっか、たしかに標準モジュールに移植すれば良かったか
2020/12/25(金) 19:42:46.45ID:M+L+LuRT0
>>117
Privateを取っ払ってただのSubにすれば、
UserForm1.ボタン_Clickで実行できる。
119デフォルトの名無しさん (ワッチョイ 8b63-p1zl)
垢版 |
2020/12/26(土) 11:08:58.12ID:xVJ70HL70
どなたかお教えください。
e-Gov法令検索
https://elaws.e-gov.go.jp/
というサイトでエクセルにリスト化されている法令を検索し,
ダウンロードすることを試みたいと考えております。
.Navigate でサイトを開き,
.document.getElementById("searchTextBox").Value = "法令名"
.document.getElementById("searchBtn").Click
で,該当の法令を検索させるまではできました。
その後,検索結果を見つけてURLを取得するところでつまずいております。
.document.getElementsByTagName
とかをどのように指定したらよいのでしょうか?
どうぞよろしくお願いいたします。
2020/12/26(土) 13:00:08.72ID:JDXDJsEV0
>>119
そよのサイトでリスト化されているもののダウンロードはエクセルには向いてないので
手作業でやったほうがいいだろう
2020/12/26(土) 14:44:21.47ID:1Jq10AwVM
Javaを覚えろってことか
122デフォルトの名無しさん (ワッチョイ 97f1-evwY)
垢版 |
2020/12/26(土) 14:52:02.96ID:CuJQon1q0
Javaを覚えろってことよ
123>>119 (ワッチョイ 8b63-p1zl)
垢版 |
2020/12/26(土) 15:35:46.04ID:xVJ70HL70
>>120
アドバイスありがとうございます。
しかしながら100件くらいあって,定期的にチェックして(法令が更新されることがあるので)ダウンロードするとなると
つらいです。
なんとかどうぞお願いします。
2020/12/26(土) 16:34:12.06ID:AsvwShK0H
>>123
ちょっとやってみるから、何か一つ検索キーワード教えて
あと検索条件はデフォルトのままでいいの?
125>>119 (ワッチョイ 8b63-p1zl)
垢版 |
2020/12/26(土) 18:32:04.58ID:xVJ70HL70
>>124さん
どうもありがとうございます。
キーワードは
予防接種法
検索条件はデフォルトのままでいいです。
お願いします。
2020/12/26(土) 21:38:03.20ID:AsvwShK0H
>>125
ざっくり見たところ、そのサイトはスタイルシートで検索結果を渡してWebAPIでダウンロードする方式だからGetElementsなどは使えないしURLもどこにも書いてない
WebAPIを呼び出すフォーマットは、例えばこんな感じになってる
https://elaws.e-gov.go.jp/download?law_unique_id=323AC0000000068_20150801_000000000000000&;file_type=PDF_H1
このURLをブラウザのアドレスバーに入れるとPDFのダウンロードが始まる

VBAでできないことはないけど難易度はけっこう高い
素人にはおすすめしない
2020/12/27(日) 00:06:28.37ID:V6kYHqJF0
Ruby なら、curl コマンドとか、open-uri でダウンロードできる

require 'open-uri'

html = `curl ttps://何々`

url = "ttps://何々"
html = open( url )
puts html.read
128デフォルトの名無しさん (ワッチョイ 51da-64+e)
垢版 |
2020/12/27(日) 01:58:09.26ID:s6cy7Ti00
なぜVBAスレでrubyが
2020/12/27(日) 05:17:11.18ID:V6kYHqJF0
Windows 10 にも、curl が入った

コマンドプロンプトで、
where curl
と入力すると、

C:\Windows\System32\curl.exe
2020/12/27(日) 08:26:34.69ID:CaXXLtf40
なら、
コマンドプロンプト
require
この3つをNGワードに追加。捗る。
2020/12/27(日) 08:54:36.12ID:73ofl+2yH
URLを指定してダウンロードする方法の質問なんか誰もしてないのに、いきなり独り言
ルビー使いはあたおかだとよくわかる
2020/12/27(日) 09:21:25.61ID:iG00duHM0
名門校で球拾いより弱小校でエースのほうが楽しいから
まあ関係のない部活に来てたらウザがられるだけだが
2020/12/27(日) 09:39:02.91ID:DRufeyQV0
初心者がもの凄いものをいきなり作ろうとしてここに質問すればできると思っているいつもの人
2020/12/27(日) 10:57:38.42ID:Km9iTMMx0
>>118
おおおお、そういうことかー
これなら標準モジュールに移植しなくても別のユーザーフォームから起動できるね
ありがとうございます!こういう豆知識待ってました
135デフォルトの名無しさん (ワッチョイ 47e6-+OY0)
垢版 |
2020/12/27(日) 18:38:53.38ID:kvcCvRIC0
privateの意味は豆知識ではなく一般常識ては?
2020/12/28(月) 00:09:12.39ID:eYw4/aNg0
ユーザーフォーム2からユーザーフォーム1
ボタンを押したようにできることが豆知識だったのよ
自分にとってはね
2020/12/28(月) 02:13:46.08ID:zq2Mh9UF0
>>133
初心者ではなく初心者から脱却する気の無い人間が
2020/12/28(月) 11:52:39.77ID:D2Ae0vPz0
>>136
分かりにくくなるだろうな
そのフォーム1の処理の中にフォーム2の処理が混ざっていて・・・みたいな
2020/12/28(月) 12:18:01.21ID:tqv11FjK0
単体で使いたい時もあるけど
ある処理の部品としても使いたいとかかな
2020/12/28(月) 12:46:17.64ID:2cxQATNW0
それなら共通部品として切り出して
フォーム1から呼ぶ、2から呼ぶってしないと後々メンテで死ぬパターン
141デフォルトの名無しさん (アウアウウー Saed-ls+h)
垢版 |
2020/12/28(月) 20:20:11.64ID:VGvj7ZmYa
今FTPするのに諸事情あってwininetを利用してるんだけど
これってファイルのディレクトリ移動は無理?
ちなみにLINUXサーバ

例えば
/work/testdir/test.log

/work/movetodir/test.log
って感じで移動したい
コピーした後deleteすればいいのでコピーでもオッケー
今はスマホからならなので詳細ソースは勘弁して

試したのはFtpPutFileやFtpGetFileで
fromとtoをそれぞれファイル名やフルパスで入れ替えたりしてみたんだけど
まぁだめだった
FtpMoveFile的なものはないですか?
142デフォルトの名無しさん (アウアウウー Saed-ls+h)
垢版 |
2020/12/28(月) 20:23:27.00ID:VGvj7ZmYa
ちなみにBASPやWINSCPとかは規約上使用できないです
ない場合はローカルに一時的にgetした後別のディレクトリにPutすると言う力技も考え中
143デフォルトの名無しさん (アウアウウー Saed-ls+h)
垢版 |
2020/12/28(月) 20:51:35.01ID:VGvj7ZmYa
なんとなく自己解決
やはりFTPの仕様上Moveはダメっぽい
力技しか無いかなぁ
2020/12/29(火) 04:24:04.54ID:r4ksfnFx0
シートを開いたときにシート上のコンボボックスにリストを読み込ませたいんですけど、
シート上にある文字列を読み込むのではなくマクロのみで特定の文字列を読み込ませることって出来ますか?
2020/12/29(火) 04:50:38.55ID:r4ksfnFx0
DirectXのコンボボックス使えば一発でした……すみません……
2020/12/29(火) 06:16:00.81ID:r4ksfnFx0
ActiveXのコンボボックス2つを設置し、以下のようにシートのところに記述後、ComboBox1のプルダウンボタンをクリックすると、

実行時エラー "380":
Valueプロパティを設定できません。プロパティの値が無効です

と表示され、「ComboBox2.Value = "G6"」がハイライト表示になるのですが、対処法が分かりません。ご教授お願い致します。

---------------------------------------------------

Option Explicit

Private Sub ComboBox1_Change()
ComboBox2.Value = "G6"
End Sub

Private Sub ComboBox1_DropButtonClick()
ComboBox1.List = Array("A", "B", "C", "D")
End Sub

Private Sub ComboBox2_DropButtonClick()
If ComboBox1.Value = "A" Then
ComboBox2.ListFillRange = "G6:G9"
Else
ComboBox2.ListFillRange = "G6:G8"
End If
End Sub
2020/12/29(火) 06:25:34.42ID:r4ksfnFx0
すみません、Stylesプロパティが2 - fmStyleDropDownListだったからValueに代入できなかったんですね……
ComboBox2.ListIndex = 0 にしたら直りました。お目汚しすみません。
2020/12/29(火) 15:15:22.81ID:eRbfzaAa0
コンボ1→鈴木一郎
コンボ3→鈴木専務
      鈴木部長
      須藤係長
      杉村課長
コンボ3には先頭一致で「す」を検索し絞り込みで表示したいのですがむずかしいでしょうか?あるいは漢字一文字で検索でもいいのですがMatchFound関数を使用するのではないかと思うのですが検討もつきません
Option Explicit
Private Sub ComboBox2_Change()
End Sub
Private Sub UserForm_Initialize()
Dim r As Long
ComboBox1.ColumnCount = 2
For r = 1 To Sheet3.Range("A" & Rows.Count).End(xlUp).Row
ComboBox1.AddItem Range("DB!A" & r).Value
ComboBox1.List(r - 1, 1) = r 'リストの2列目にシートの何行目かを記憶
Next
End Sub
Private Sub ComboBox1_Change()
Dim r As Long
Dim c As Integer
r = ComboBox1.List(ComboBox1.ListIndex, 1) '選択したリストの2列目(シートの何行目か)
ComboBox2.Clear
For c = 2 To Sheet3.Cells(r, Columns.Count).End(xlToLeft).Column
ComboBox2.AddItem Sheet3.Cells(r, c).Value
Next

End Sub
2020/12/29(火) 15:20:48.46ID:xvN7YPpo0
インデントしてない時点で(キリ
2020/12/29(火) 15:24:36.38ID:1ep2xIo7M
>(キリ
ウザっ
2020/12/29(火) 16:02:20.40ID:NKmqU0kK0
>>148
リスト全部チェックして一致したものを追加するなりシート上でフィルタした結果を追加するなりしたらいいんでないの
2020/12/29(火) 16:26:47.99ID:NKmqU0kK0
思ったんだが、そのコード自分で読み込んだり動き確認したりしてないだろう…
2020/12/29(火) 16:30:16.32ID:9/T630Lp0
質問するのが趣味なんだろ
2020/12/29(火) 16:53:27.47ID:dODwImwo0
読み仮名でソートすればいいんでないの
エクセルの並び替えもこうなるし


大学(おおきいで変換)


大学(だいで変換)
2020/12/29(火) 18:16:49.35ID:eRbfzaAa0
すいません!
質問するレベルにも到達してなくて
シート上で一致させるなら簡単ですね
質問が趣味ではないのですが
業務で必要なもので初心者ながら悪戦苦闘しています
質問のしかたが悪かったと思います
ちょっと考えて質問したいと思います
2020/12/29(火) 18:20:31.42ID:U6Tn+IN30
いつものあいつだろ
2020/12/29(火) 18:24:55.74ID:NKmqU0kK0
いつものやつだった・・・
2020/12/29(火) 18:26:09.51ID:eRbfzaAa0
前に質問した時も
誰かと勘違いされたような・・・
誰ですか?
VBAスレには
4回ぐらいしか書き込んだりしてないのですが?
どういった人と勘違いしてるんですか?
荒らしみたいな人いるんですか?
2020/12/29(火) 18:57:29.26ID:lS8hY7UX0
話題に上ると嬉しそうに反応すんなよw
2020/12/29(火) 20:40:10.06ID:eRbfzaAa0
>>159
だからここには4回ぐらいしか来たことない
どういったら信じてくれるのかな
初めてだわ
荒らしと間違えられたの
どんな荒らしなの?
普通に書き込んでるつもりなんだけど?
何か気に入らなかった?
3日前ぐらいに書き込んだ時も勘違いされたけど
ホント勘弁して
2020/12/29(火) 22:12:23.41ID:DC9TsoaB0
荒らしと同じようなことを書くから間違われるのでは?
2020/12/29(火) 22:16:06.03ID:mchvBN/f0
真っ赤な帽子にキラリとヒカル
2020/12/29(火) 22:16:31.70ID:eRbfzaAa0
>>161
どこがどう悪かったのか教えてください
2020/12/29(火) 22:29:26.63ID:dODwImwo0
おかしな事言う人がいるな
でスルーしてたらいいと思うよ
今のままだと思うツボ
2020/12/29(火) 23:51:56.35ID:xvN7YPpo0
>>78
わからぬ。ホムペとかに時々セミナーの写真とか載ってるからそれを見て判断
性格まで瓜二つだからすぐわかるぜw
2020/12/30(水) 01:27:15.02ID:RXqudRq00
俺も前になんかの質問したときにいつものアイツって言われた事があったから逆になんでもかんでもいつものアイツって言いたがる荒らしが常駐してるもんだと思ってた
2020/12/30(水) 01:52:55.19ID:Oh92F1JH0
シートを開くと「オブジェクトが必要です。」だの「メソッドまたはデータメンバが見つかりません。」だのと表示されるんですけど、特に修正することもなく動作している(ように見える)んですけど、これ何が悪いんですかね?
2020/12/30(水) 03:31:25.87ID:AqLm+Pp2M
PERSONALに余計な書き込みしちまっつてるんじゃね。
再表示させて全部消すんだ。
2020/12/30(水) 03:53:07.20ID:Oh92F1JH0
Personal.xlsですかね?
探しましたがそもそもファイル自体存在しないみたいです……
2020/12/30(水) 03:58:33.29ID:Oh92F1JH0
なんかよく分かんないんですけどエラー行で指定してたコンボボックスを消して再設置したら直りました
助言ありがとうございました
2020/12/30(水) 05:38:22.32ID:AqLm+Pp2M
毎回コンボボックス言ってるなあんた
2020/12/30(水) 05:47:42.87ID:Oh92F1JH0
なんかコンボボックスってクセ強くないですか?
すごく弄りにくくてややこしいです
2020/12/30(水) 08:41:09.68ID:mfFqR3/N0
クセ強いって言うか、1クリックで2回イベント発動するのがなぁ・・
いちいちIf Flag Then Exit Sub とかいれて、
無理矢理1回しか動かないようにしてるけど、
他にいい方法ないもんかね
2020/12/30(水) 08:43:56.99ID:mfFqR3/N0
あ、直前に Flag = Not Flag な
2020/12/30(水) 11:23:33.25ID:hFnpG/QKH
>>173
イベントハンドラは必ず先頭でEnableEvents=Falseするんだよ
そして時間のかかる処理はハンドラの中へ書かずに別プロシージャに飛ばす
2020/12/30(水) 13:02:57.82ID:mfFqR3/N0
>>175
ごめん、1クリックで2回じゃなくて、
選択肢の表示で1回、選択で1回で計2回の間違い
なのでイベントOFFで逃げられない
2020/12/30(水) 16:14:15.56ID:8iwO+LiN0
状態管理用のフラグ作って管理している
2020/12/30(水) 23:59:22.86ID:Oh92F1JH0
>>173
マジすか
もしかしてDropButtonClickイベントに.Clearと.AddItemを入れたら選択してもボックス内に表示されなかったりするのって原因それですかね
2020/12/31(木) 08:04:03.76ID:qAEGulJg0
>>178
そういうの作りながら動作確認しないの?
2020/12/31(木) 08:17:09.79ID:sAh4R5unH
ネットにサンプルがいくらでも転がってんだから、素直にコピペしとけばいいのに
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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