Excel VBA 質問スレ Part65

レス数が1000を超えています。これ以上書き込みはできません。
2020/03/17(火) 16:27:20.88ID:hh8LiIgR0

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

※前スレ
Excel VBA 質問スレ Part64
https://mevius.5ch.net/test/read.cgi/tech/1575297834/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2020/03/17(火) 18:15:02.25ID:xIJjSw0m0
>>1
2020/03/17(火) 19:24:51.48ID:+T54gcvp0
>>1

>全スレ998
挿入か貼り付けかはっきりしてくれ
2020/03/17(火) 21:26:48.27ID:xIJjSw0m0
行をコピーして挿入操作
マクロ記録したら、Selection.Copy Selection.iIsert Shift:=xlDown が出てきたけど普通に再生できたぞ
2020/03/18(水) 04:12:39.20ID:oTsktMrB0
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&
2020/03/18(水) 05:01:35.56ID:oTsktMrB0
プラウザのウィンドウサイズを大きくした後で画面キャプチャしたら
満足の行く画質になりました。
>>5の質問は撤回します。
2020/03/18(水) 12:15:49.12ID:w6Ggs+SYM
>>4
まじすか
コピー元が別ブックだったのでそのせいかも
2020/03/18(水) 12:50:26.65ID:FL4Tmu/bd
>>5
キーボードマクロ最悪
2020/03/18(水) 21:13:19.46ID:ILNBMFwG0
リボンを自動的に非表示にする設定だととクイックアクセスに登録したものも含めてコマンドがすべて隠れてしまうんだけど
特定のコマンドのみ表示させておく方法はないかな?
マクロとして登録させて画像にマクロを登録しようとしたけど動かない。
2020/03/19(木) 06:45:24.60ID:3WIKr7Ue0
>>9
うちのExcel2016だと隠れないけど、それ以降だと違うのかな
リボンの下に表示offでもだめなら
フォーム作って、UserForm.ShowModal=False という手もあるよ
2020/03/19(木) 23:50:18.77ID:7Zzxd2N00
>>10
>>9
UserForm.ShowModal=False はどういう方法?
2020/03/20(金) 00:29:09.01ID:cQ88e7Ay0
>>11
自作フォームをカスタマイズメニューに見立てて自作のマクロなどを呼び出す
2020/03/20(金) 08:35:07.45ID:SwKaoqcN0
>>12
マクロを呼び出すのは簡単なんだけど、各コマンド(既存の機能)をよびだすのかできない
たとえば描写とかペンとか消しゴム機能とか
2020/03/20(金) 08:58:05.53ID:8tNMwiiZ0
既存の機能が必要ならリボンを非表示にしなきゃ良いんじゃね
2020/03/20(金) 11:45:56.36ID:gOi7n73D0
>>13
SendKeys "% 〜
2020/03/20(金) 12:04:13.08ID:kTqu2sOZ0
>>15
ショートカットキーを設定してってことかな?
2020/03/20(金) 12:36:23.76ID:dFakeV1fa
csvを読む場合で、見出し行とデータ行が文字と数値で形式が違う場合とかどう処理しますか?
2020/03/20(金) 12:41:37.47ID:FhkC8bvBx
>>17
パワークエリで読み込んで任意のデータ型に変換する
2020/03/20(金) 13:27:20.08ID:jE5Tt0oL0
>>17
CSVを読み込む場合にブックとして読み込むことはまず無い。
というか、まずテキストとして読み込む。
処理も何も、全て自由に出来るぞ。
2020/03/20(金) 19:47:02.79ID:1JHTKX/vM
>>17
全部文字として読み込む。コードで数値として処理したいならcintやcdblでキャストすればいい。因みにワークシート関数にはNumberValueってのがある。
2020/03/20(金) 19:50:02.57ID:wHnf8pbD0
あれなんとかならんかな。
NULLがあるとコケるから、
いちいちIIF(A IS NOT NULL, CINT(A))ってやらなきゃいけないの。
22デフォルトの名無しさん (ワッチョイ 8b46-m7vt)
垢版 |
2020/03/22(日) 12:27:27.61ID:bv32jkb00
VBA で、セルの指定しても行の指定が無効になってて、必ず1行目に表示されてしまいます。
何が原因でしょうかね?
教えてください。
23デフォルトの名無しさん (スプッッ Sd33-dSJs)
垢版 |
2020/03/22(日) 12:28:32.17ID:hR7PxyLud
>>22
お前の馬鹿頭
24デフォルトの名無しさん (ワッチョイ 8b46-m7vt)
垢版 |
2020/03/22(日) 12:35:14.95ID:bv32jkb00
原因わかりました。すみませんでした。
25デフォルトの名無しさん (ワッチョイ 8b46-m7vt)
垢版 |
2020/03/22(日) 12:36:52.15ID:bv32jkb00
ここの住民の霊性は暴力団と同じですね
2020/03/22(日) 13:22:11.60ID:TNUWFKUeM
ここだけじゃなく5chはどこも似たり寄ったりです
貴方が来るような場所じゃありません
27デフォルトの名無しさん (ワッチョイ 118e-dSJs)
垢版 |
2020/03/22(日) 14:47:18.63ID:9uw1USbo0
>>25
霊性?
馬鹿確定
原因としては正しかっただろうが
2020/03/22(日) 15:26:01.73ID:bTaHgmHe0
>>22
ソースコード書けないの?
君書いたのが本当にセルの指定をしてると信じる人がいるとでも?
29デフォルトの名無しさん (ワッチョイ 2beb-W/ZL)
垢版 |
2020/03/24(火) 17:30:30.61ID:s99Qd4t60
よろしくお願いします。

数百行あるシートで、上から順に一行ずつ以下の操作を行いたいです。

(1) C列の文章の中に、「一言コメント:」という文字が入っていれば2へ。なければ終わり、次の行へ
(2) 「一言コメント:」とそれ以下の文字列をC列の値から削除し、E列の、元々の値(文字列)の前に貼りつけ
(3) E列の文字列の中から「「一言コメント:」という文字列を削除

以上です。
まず、(1)の検索がうまくいかず、(2)の文字列取得も、一文字ずつ数えてカウントし、あらためて「終わりから○文字」みたいな
やりかたをするしか方法が浮かびません。
たぶん、上級者ならもっとシンプルな書き方ができるのではないかと思い質問させていただきました。

どのように書けばよいでしょうか?よろしくお願いいたします。
2020/03/24(火) 17:42:47.48ID:2RYGBfo0M
For文をRowCntって変数で回していると仮定して
If Cells(RowCnt, 3).Value Like “*一言コメント:*″ Then
で引っかけるとか?
2020/03/24(火) 17:58:43.96ID:BIkwDKwH0
VBAなくても関数だけで目的達成しそう
2020/03/24(火) 18:33:24.09ID:n56XI6Ab0
>>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
2020/03/24(火) 18:34:45.78ID:qnUBImldr
>>15
どんな機能でもショートカットキー設定できるの?
2020/03/24(火) 19:30:25.33ID:sgSRB3ii0
>>29
VBAでないとだめなわけじゃないならExcel関数でやればいいと思う
2020/03/24(火) 19:56:22.25ID:Yvy0BDEM0
>>33
Alt押してみ
2020/03/24(火) 22:01:18.60ID:PstaeSXz0
>>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
2020/03/24(火) 22:44:45.47ID:Sir7Hwfr0
ここは上級者向け?
ド素人が少しずついろんなサイトや動画見て覚えようとしてるレベルじゃダメかな
2020/03/24(火) 23:20:41.40ID:PstaeSXz0
>>37
初心者も上級者もキチガイも見てる
みんなが毎日見てるわけじゃないから、タイミングが悪いと質問に答えてもらえないこともある
2020/03/24(火) 23:41:15.31ID:VeKTJmtj0
いろんなサイト見た方が早い
40デフォルトの名無しさん (ワッチョイ b1f1-Go5d)
垢版 |
2020/03/25(水) 09:15:56.68ID:nn3rUaIL0
FileSystemObjectでFilesのコレクションょ取得したあと
それぞれにアクセスするにはどうしますか?
Files(1), Files(2)のようにするとエラーが出てエラいこっちゃとなります。
For each文ならできるのですがそこまでするほどのことではない時には?
2020/03/25(水) 10:04:11.68ID:34Te7/8G0
コレクションょ
42デフォルトの名無しさん (ワッチョイ b1f1-z4rF)
垢版 |
2020/03/25(水) 10:44:44.89ID:nn3rUaIL0
2020/03/25(水) 10:51:51.28ID:34Te7/8G0
暇だし、見てみた

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デフォルトの名無しさん (ワッチョイ b1f1-z4rF)
垢版 |
2020/03/25(水) 12:51:44.52ID:nn3rUaIL0
itemでナンバリングされていないんじゃないか?
だからitem(1)やitem(2)で取得できないのでは。
それゃファイル名を()の中に書けば取得はできるけど。
2020/03/25(水) 15:03:09.95ID:jqzDDJlwa
for each でいいやん
2020/03/25(水) 15:55:41.50ID:e/5QJMyr0
「そこまでする」の考え方がまずおかしい
中身がたとえ1個でも2個でも普通はコレクションにはFor Eachを使うもんだぞ
47デフォルトの名無しさん (ワッチョイ b1f1-z4rF)
垢版 |
2020/03/25(水) 16:09:28.13ID:nn3rUaIL0
>>45-46
このハゲー!
違うだろ!

最初にfor eachはやらないと言った。
コレクションの代表ということで任意の1個だけを選んでそのプロパティ等を調べる、
ということはプログラミング経験がある程度あればそういう状況に遭遇することはたまによくある。
2020/03/25(水) 16:14:59.17ID:z6ZaQbmPr
fsoのfilesコレクションには通常のコレクションみたいにインデックス指定が出来ないのよね
countとitem(key)プロパティしかない
ファイルシステムの違いとか、歴史的経緯からかはしらんけど
だから基本for eachで他の形にする
49デフォルトの名無しさん (ワッチョイ b1f1-z4rF)
垢版 |
2020/03/25(水) 16:19:47.29ID:nn3rUaIL0
>>48
そんなことはとおの昔に知ってるから
ここで質問をしたのだ。
50デフォルトの名無しさん (ワッチョイ 558e-7Ena)
垢版 |
2020/03/25(水) 16:24:52.66ID:RkpcsgMW0
ID:nn3rUaIL0
馬鹿は死ね
2020/03/25(水) 16:33:07.81ID:dd26zMYGr
では次の方
2020/03/25(水) 18:54:52.80ID:acV7Q0T20
インデックスが使いたいなら自分で配列でも作り直せばいいのに
2020/03/25(水) 19:07:44.86ID:99YP/w74d
不毛だな
2020/03/25(水) 20:08:34.34ID:xy/tXdFS0
Exit Forすればいいんじゃまいか
2020/03/25(水) 21:06:02.83ID:POb+XADc0
OpenDocumentスプレッドシートのデータをADOで取得する方法ある?
EXCELに変換しろってのは無しで。
2020/03/25(水) 21:06:24.91ID:UODWeex90
>>44で自分で答だしてんじゃん
2020/03/25(水) 22:04:41.19ID:xy/tXdFS0
ドライバ自作しろ
2020/03/25(水) 22:39:59.43ID:8ZIjWfpj0
プラスとマイナスはあるから丸ドライバー作るわ
2020/03/26(木) 02:21:13.92ID:THyEKc6a0
ファイル入出力に使うopenやinputが何者か(関数?メソッド?など)知りたいです
これらの機能はなぜオブジェクトブラウザに乗っていないのでしょうか
マイクロソフトのウェブヘルプにはステートメントとして乗っているようですが
ステートメントというのは関数やメソッドなどの分類ではないですよね?
ご教示お願いします。
2020/03/26(木) 02:34:21.94ID:bMQizyKS0
>>59
ステートメントというのは関数の祖先にあたる概念
コンピューター言語が発明された初期からある命令文の分類の一つ
61デフォルトの名無しさん (ワッチョイ 558e-7Ena)
垢版 |
2020/03/26(木) 10:58:51.71ID:NTuSOeK50
馬鹿に馬鹿が答えている
2020/03/26(木) 13:11:56.44ID:d196EOchM
VBAを覚えようとしてる初心者以前だが
まず何となくルールから覚えてる
=は同じじゃなくて←の意味ぐらいにとらえておく
あとはコードというか使いそうな単語を少しずつ
msgboxとかRangeとかactivecellとか
でもとっかかりがわからんわ
難しすぎですな…
2020/03/26(木) 14:44:13.99ID:HulDeUE70
覚えるのは結構だけど、普段やってる作業をVBAで再現するとこから始めると飽きずにやれるんじゃ

コピペ作業、シートコピー、ボタンで特定の計算とかね
だんだんCSV読みたくなったりして高速化したくなったりして、そうやって覚えていく
64デフォルトの名無しさん (ワッチョイ 5e46-k/jz)
垢版 |
2020/03/26(木) 15:50:36.21ID:ZD929brT0
TEST
2020/03/26(木) 15:54:11.22ID:hp54jNs9M
ユーザーフォーム上にあるボタン1を押すとボタン1を非表示にしてフォームのキャプチャを取得。
その後ボタン1を再び表示して終了。

みたいなものを作りたいのですが
SendkeyでAlt+Printscreenを送っても
素の状態ではボタン1が残った状態のものがキャプチャされ、
Waitをかけると今度は画面全体のキャプチャになってしまいます。

フォームをダイレクトに画像ファイルにする、とかでも良いのですが調べても中々応えに辿り着けなかったので皆様のお知恵をお借りしたいです。
何か良い手はないでしょうか。
66デフォルトの名無しさん (ワッチョイ 5e46-k/jz)
垢版 |
2020/03/26(木) 15:56:47.70ID:ZD929brT0
以下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
2020/03/26(木) 17:09:13.21ID:hp54jNs9M
すみません。
情報の伝達に齟齬がありました。
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
2020/03/26(木) 17:44:04.29ID:sBp41OLkr
MacでもVBA使えますか?
2020/03/26(木) 18:35:55.24ID:GuVxnbOZ0
使えるけどwindowsと全く同じように動くかまでは知らん
2020/03/26(木) 19:05:03.32ID:58MBAwKca
新しい天啓が下った。私は馬鹿ですらなく、場であり、これが私の仕える神のような気がしたが違ったような気がした。
忠実に表現したらこうなった、つまりそういうことなんだろう。
2020/03/26(木) 19:41:20.92ID:m6KuD/Rj0
>>66
標準モジュールに書いてるか
2020/03/26(木) 21:11:00.48ID:rWIrO2cB0
WEBクエリはhttpsだと遅いすか?
そうなったサイトが急に読み込み遅くなったんすけど
2020/03/26(木) 21:24:14.52ID:Ys9zNHHg0
初心者はまずここ見とけみたいなサイトとかYouTubeの動画ありますか?
宣伝込みでも俺が踏むだけなので良かったら教えて欲しいです
本当に何から見てけばいいのかわからない
asとかretとか当たり前に出られてもわからない…
2020/03/26(木) 21:26:43.14ID:Ye2KpVaE0
知らんがな入門書買え
2020/03/26(木) 22:06:31.47ID:NUJ56fsj0
>>73
動画でプログラミングを覚えるのはとても難しい
エクセルの使い方や開発環境の整備とかなら分かるけど
言語を覚えるのは本を読んでコードを書く方が早いだろう
2020/03/26(木) 22:19:37.89ID:ohlAwein0
>>73
https://www.sejuku.net/blog/6516
2020/03/26(木) 22:35:41.45ID:ewzEtFoA0
retって何?
2020/03/26(木) 23:38:44.50ID:Ys9zNHHg0
>>75
>>76
ありがとう
とりあえず、マクロからあるURLやoffice系のソフトを呼び出すコードをネットから丸パクリしてみたんだけど結局これが良いのか悪いのかそもそもルールすらあまりわかってない
サイトや本で必死に勉強しますわ

https://i.imgur.com/Llw26vN.jpg
https://i.imgur.com/CEIjgGb.jpg
2020/03/26(木) 23:56:44.93ID:ewzEtFoA0
字で書けよ基地外か
2020/03/27(金) 00:31:59.82ID:N3mE/9bh0
図形のグループ化についてです。

ショート上に円が無数にあってその円の中にテキストがあります。

これを円と円の中のテキストをそれぞれグループ化してShapeの名前をテキスト名にするにはどうしたら出来ますか?
2020/03/27(金) 00:52:28.07ID:tkT1AEpsM
>>80
グループ化はGroupメソッドを使う
For Eachを使えば図形がいくつあっても関係なく同じようにできる
2020/03/27(金) 01:56:14.15ID:U7Hbc3is0
>>80
shapeオブジェクトでいじる
2020/03/27(金) 07:59:14.92ID:PIWgxOzWr
図形をVBAで複雑にいじろうとすると悲しみしか生まなさそう
2020/03/27(金) 14:44:48.55ID:Kq8lniUe0
Worksheets("min").Range(Cells(N, 2), Cells(N, 100)) = "999"
これで複数セルに一括入力したいのですが
アプリケーション定義またはオブジェクト定義のエラーです
と出ます。
何がいけないのでしょうか?
2020/03/27(金) 14:53:12.85ID:8yKTqVer0
Nを定義してないんじゃない
2020/03/27(金) 15:00:54.33ID:n40dB020M
cellの前にもシートがいる
2020/03/27(金) 15:04:48.30ID:Kq8lniUe0
With Worksheets("min")
.Range(.Cells(1, 1), .Cells(20, 2)) = "999"
End With

できました^^ありがとう
2020/03/27(金) 15:09:58.00ID:Yr4iTEmOa
それでいい。
2020/03/27(金) 15:11:53.30ID:DMhVWYPv0
いえいえ
2020/03/27(金) 15:32:49.12ID:YTZoRU62x
検索して違うシートから値を 持ってくるマクロで持ってくる値が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としたいです。
2020/03/27(金) 15:39:00.45ID:n40dB020M
cがnothingの時c.rowがエラー

バラせ
92デフォルトの名無しさん (ワッチョイ 558e-7Ena)
垢版 |
2020/03/27(金) 15:47:38.09ID:LyEUyxQ10
馬鹿がゾロゾロ出てくるのは何で?
2020/03/27(金) 15:50:59.76ID:DMhVWYPv0
春休みだから
2020/03/27(金) 15:54:33.36ID:YTZoRU62x
>>91

If wS1.Cells(c.Row, "Z").value < 0 Thenでもエラーが出ます
With Worksheets("data")が邪魔をしてるとかですか?
2020/03/27(金) 17:17:35.05ID:zsNWkQiw0
"Z"で指定できたっけ
2020/03/27(金) 17:31:46.25ID:jaIOieAQ0
>>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プロパティで呼んだ方がいい
2020/03/27(金) 21:24:53.87ID:N7XAdwe70
>>92
答らえれない馬鹿以下の癖に?
2020/03/27(金) 23:01:00.96ID:7yWnOCeY0
範囲に名前はなぁ・・。
上手く使いこなせればいいが、
みんなで共有するファイルに使うと、
知らない間に#REFだらけになってるwwww
99デフォルトの名無しさん (ワッチョイ 5e46-k/jz)
垢版 |
2020/03/28(土) 04:38:00.47ID:vMIAuVeU0
>>71

レスありがと

標準モジュールに書いてない。
しばらく、やってなかったんで忘れていた。
すみません
2020/03/28(土) 15:07:25.95ID:m/WQBFmt0
>>98
異常時に例外が投げられるように設計するのは普通だと思うんだが・・・
2020/03/28(土) 19:20:50.03ID:rI/k2Pjrd
>>100
名前を付けるのは、コードと関係無い所で実装されるので個人的には絶対使わない。
というか、Cellsを使うよ。
2次元配列的にもぴったり来るし。
寧ろ、Rangeの方が使わない。
尤も、Cellsでも列を文字で指定するのはやらない。
AF列が何列目か分からないって?
イミディエイトで?Range("AF1").Columnとでも入れてみろ。
2020/03/28(土) 20:14:42.33ID:ihCuPYYIp
>>101
で、コメントで何列かとか、項目名とか書くわけ?
2020/03/28(土) 20:37:45.18ID:YbqXlWqq0
>>96
>>101
名前を付ける派
可読性が高い方が良い
VBAは見にくいコードが多い
2020/03/28(土) 23:45:34.04ID:m/WQBFmt0
>>101
名前定義が弄られるってことはロックしないで使うんでしょ
猶更、セル挿入なりで意図した場所とズレてても気づかずに成功し続ける方が危険だと思うんだが
で、セルを挿入したい時も一個一個数値をずらしていくの?

ワークシートの見た目が二次元配列である事とコード内容を一致させる必要性も感じないんだが、
もしかしてハードコーディングしてるのか?

イミディエイトウインドウで毎回インデックスを調べろっていうは面白すぎるから止めて欲しい
2020/03/29(日) 00:11:14.41ID:JMfmjWXB0
Shapeの当たり判定の計算方法を教えて下さい。

基準の円のShapeにTextBoxが当ってたらTrue、当たって無ければFalse
円は選択時の□の面積じゃなく実際の円の大きさ。TextBoxは選択時の□の大きさ。
2020/03/29(日) 00:41:59.73ID:Q4J2OaKi0
なぜそんなことを
2020/03/29(日) 01:29:27.30ID:Iv7ta0000
>>105
表示位置とサイズから比較したらいいんじゃね
2020/03/29(日) 01:42:07.54ID:hSuS8nXs0
当たり判定だからゲームじゃないの?
Corei世代でも60fpsでないから使いたくないけど。
2020/03/29(日) 08:29:34.23ID:sBDU9ajX0
>>105
専用の関数などは用意されてないので、TextBoxの頂点と円の座標を比較したり、円の中心からの距離を三角関数で計算して調べるしかない
2020/03/29(日) 09:06:15.85ID:hrvcX8VW0
VBAであえてゲーム作ったりするのは
芸ではあるけど開発効率的に筋は悪いよね
グラフィックにこだわるなら別言語推奨
2020/03/29(日) 19:07:35.84ID:+LkL5rVp0
>>102
普通は定数で行、列を宣言するわな。

>>103
見にくいコードは書いてる奴の力量次第だろ。

>>104
ロックはしない。
そんなもんは解除されるかもしれんし、当てにしない。
というか、作ってるもの次第だね。

ワークシートの見た目と二次元配列を一致させるとか笑わせるなあ。
少し慣れた奴なら列も数値で扱うのがぴったり来るんだよ。
何故なら、最初から二次元配列的に考えるから。

VBE上に自作のメニュ―作って、入力するだけで列名←→列数はわかるげとな。
作る力量無い奴はイミディエイトで調べりゃ良いだろ。
VBEのCommandBerでイベント扱うのはクラスが必要だし、上級者の領分にはなるかもな。
VBE弄るVBAは会社じゃ使わないから通常のCommandBarでメニュー作ってやっても良いんじゃね?
どっちにしても時間は考えることに使ってるんで、毎回イミディエイトで調べても大した話じゃね―んだわ。
2020/03/29(日) 19:28:33.88ID:Gw3heoMsM
>>63
今の若いヤツらはそういう説明じゃ200%挫折する。普段の業務を自動化っていう感覚がわからないそう。やっぱスマホタブレット世代はPC=ワープロにしか思えんのかもな。
2020/03/29(日) 20:04:11.28ID:83saJEjVd
若いほうがわかりそうなイメージあるが
2020/03/29(日) 20:07:10.84ID:83saJEjVd
>>111
ロック外されたくないならパスワード付ければいいじゃん
2020/03/29(日) 20:28:31.63ID:+LkL5rVp0
>>114
パスワードwww
2020/03/29(日) 20:55:58.91ID:wDs4yIM00
>>111
> VBE上に自作のメニュ―作って、入力するだけで列名←→列数はわかるげとな。
まさか自慢じゃないよね?w
傍から見てたら馬鹿なことしてるなとしか思えんし
2020/03/29(日) 22:56:25.49ID:WhhHvRXO0
共有編集可能にしたら更新は5分間隔だけどVBAとかで1分以内にできないかな?複数のパソコンで映してる同じエクセルファイルの内容を別のパソコンから共有編集で編集して保存したら1分以内に複数のパソコンにも表示を反映させたい。
2020/03/30(月) 01:33:21.63ID:hihORIFda
あ、どうせ、コピーしても意味ねぇよ。記憶してるのPCじゃねぇから。
2020/03/30(月) 01:33:39.62ID:hihORIFda
考えまとめるためにPC使ってるだけ、ただそれだけなんだよ。
2020/03/30(月) 09:44:28.26ID:c+7OLkMF0
>>116
君にできないからと言って、そんなもんが自慢になると思うかね?
2020/03/30(月) 10:45:50.00ID:44eTx7Dtr
>>96
それでも同じエラーが出ます…
2020/03/30(月) 10:57:15.53ID:XiEELtFfM
>>120
日本語の理解力がないのかな?
自慢にもならないことをいちいち書くとかバカじゃね?
って言う事な
2020/03/30(月) 12:35:49.56ID:rHF2nN3k0
>>121
wS1.Cells(c.Row, "Z").value < 0
そもそもこれ必要?
2020/03/30(月) 13:30:25.60ID:8cfGBpvw0
いや、いらないのはそっちじゃなくて、ElseIf〜 のIf〜Then

If Not c Is Nothing Then
If wS1.Cells(c.Row,"Z").value<0 Then
.Cells(i, "V") = wS1.Cells(c.Row, "Q")
Else
.Cells(i, "X") = wS1.Cells(c.Row, "Q")
Endif
Endif

でいいはず
エラーが出たのが実は一つ上の行で、i に代入してなかったってオチじゃないよね
2020/03/30(月) 15:51:59.33ID:pRaklD1Wd
>>122
悔しいからって一々反応しなくて良いんだぞwww
2020/03/30(月) 15:58:49.58ID:5QM7gMbqM
>>125
ブーメラン乙w
2020/03/30(月) 16:25:47.15ID:Ds9EzL2Md
反応したら負けだと(みんな)思ってる
2020/03/30(月) 17:08:01.39ID:nRSFIrFT0
どこで受けたストレスをここで発散してるんだろう・・・
2020/03/30(月) 19:49:19.29ID:JBOku6fCM
>>127
>>125に言ってやれよw
2020/03/30(月) 20:13:35.71ID:4l2N9sosM
ここの人等は本当にきついね
一部だけかもしれんけど
他スレ建ててもどうせそこにやってくるし困ったもんだ
2020/03/30(月) 20:19:47.92ID:jrEvufLB0
いいから質問しろよ
俺が優越感感じられるように割と簡単なやつな
2020/03/30(月) 20:23:47.47ID:z27088IIa
ワロタw
ワイもドヤ顔で回答したい
2020/03/30(月) 20:33:15.75ID:mnH7Xf0t0
禿げのくせに
134デフォルトの名無しさん (ワッチョイ b1f1-Go5d)
垢版 |
2020/03/31(火) 00:31:58.74ID:O8i/VRws0
>>133
このハゲ!
2020/03/31(火) 00:37:41.25ID:fAiG3E7e0
天才な人、教えて下さい。

フォルダAの中にフォルダa1があってこの中にxxx.zipがあるとします。
このxxx.zipを直接クリックしたりしないで解凍するプログラムを書くのはVBAで可能でしょうか?
2020/03/31(火) 00:57:46.12ID:x9NcPTe/0
たまたま知ってたけど天才じゃないから教えられない
残念です
無念です
2020/03/31(火) 01:02:53.10ID:x9NcPTe/0
俺も天才じゃないんだわ
いるんか?このスレに、天才が
138デフォルトの名無しさん (ワッチョイ 558e-7Ena)
垢版 |
2020/03/31(火) 02:01:24.29ID:PSx1iNyN0
>>135
馬鹿は死ね
2020/03/31(火) 02:22:12.33ID:CMEsfttX0
>>135
「powershell zip 解凍」で検索!
2020/03/31(火) 03:29:43.49ID:fAiG3E7e0
>>139
どうもありがとう!
2020/03/31(火) 03:37:14.37ID:sCGR7IuL0
>>117って難しい?
142デフォルトの名無しさん (ワッチョイ 9e8a-k8oR)
垢版 |
2020/03/31(火) 05:23:52.03ID:kiJT2Kt60
zipをxlsxにすれば、VBAを使わなくても開くだけで解凍できる。どこに解凍されるかは知らんが。
2020/03/31(火) 08:15:19.13ID:AMZVbv8Gd
>>126
zip解凍ぐらい大して難しく無いんだから答えてあげたら?
2020/03/31(火) 08:25:37.91ID:FZ3Oti5EM
>>143
既に>>139で答えられてるだろ
スレの流れも追えないのか?w
2020/03/31(火) 08:42:47.60ID:AMZVbv8Gd
>>141
VBA 共有編集でググレば参考になる所が出てくる。
2020/03/31(火) 08:43:03.17ID:AMZVbv8Gd
>>144
バーカwww
2020/03/31(火) 09:32:50.09ID:WgVk0vye0
うゎ、真性かよw
2020/03/31(火) 13:30:22.20ID:UcE7ogps0
そういやxlsxがそもそもzipファイルなんだよな
2020/03/31(火) 22:47:10.97ID:Rc1BoApG0
そーなのか
道理で大昔作ったフォーマットを作り直してみたら容量が半分程度だったんだ
効率的なコード書けるようになった俺スゲーって訳じゃなく、エクセルさんが凄かったのね
2020/04/01(水) 01:30:54.93ID:IClGbcwW0
拡張子zipにして展開すると画像ファイル取り出せるしな
2020/04/01(水) 02:22:12.62ID:06G29rGEa
今さら次郎
2020/04/01(水) 03:04:48.87ID:Ex6pONtn0
これから三郎
2020/04/01(水) 03:32:39.41ID:8LLFjcSO0
終わりに四郎
2020/04/01(水) 04:33:51.17ID:h6/hOHkqM
アッと驚くタメ五郎
2020/04/01(水) 12:55:56.84ID:2mAYLJyeM
>>151
好きだよ六郎
2020/04/01(水) 18:21:42.63ID:UG3CS4Iqd
ネットでこんな素晴らしい物を見つけたんだけれども、これがデータ量が多いと結構時間掛かるんだけど、高速で図形として書き出す方法って他にありませんか?


http://izawa-web.com/excelbcad/dxfreader.html
2020/04/01(水) 22:01:42.03ID:4Q64PMPZ0
>>156
CADアプリで画像にでも変換してシートに貼り付けた方が早くて綺麗
オートシェイプに変換すると重くなるし比率が狂うし、メリットがなさすぎる
2020/04/01(水) 22:28:36.72ID:kG9c2P/10
>>157
貼って終わりならそれでもいいんですが、数あるCADデータの中から指定のデータを呼び出してエクセルに貼り付けて線の色とか文字を取得したいんですよね。
2020/04/01(水) 22:54:48.05ID:cJ4COAhO0
>>145
更新時間を短くする方法は載ってなかった
2020/04/02(木) 00:31:10.86ID:hOxCGNmI0
あるマクロを開いた瞬間に自作したユーザーフォームが出るようにする
それと同時にエクセルファイルを選択できる ファイルを開くウィンドウが出るようにする

ド基礎以前だと思うのですがおしえていただきたく、、
2020/04/02(木) 00:42:40.97ID:quV7czYu0
ググれば全部出るのに何故ここできく
2020/04/02(木) 02:21:22.11ID:9ZVXgmel0
>>160
Workbook_Open()
UserForm1.Show
Application.GetOpenFilename
2020/04/02(木) 07:03:17.01ID:qQpWBHI+0
ド基礎以前発言がひっかかるな...

あるマクロが他人の作った編集できないマクロなら難しいね
パスワードクラックはNGで
2020/04/02(木) 08:01:03.55ID:qvprCKttr
少しくらいの調べる能力も持たないお子ちゃまが多い
2020/04/02(木) 10:29:10.89ID:2gPurUpa0
ド基礎以前のこともわからないやつに教えても理解できんだろう
2020/04/02(木) 18:43:17.46ID:hOxCGNmI0
>>162
ありがとう、ネットで捜してコピペしながら頑張ってくわ

起動すると作ったユーザーフォームが開きつつ
ファイルからエクセルを選べるウィンドウを出す

開いたエクセルにはBとCの2列目からずらーっと数字が並んでるからそれをあらかじめ自分のカスタマイズした散布図にする
(2列目から始まるが終わりはデータによって違う)

ボタンによって2つの散布図に分けられる

がんばりやす
2020/04/02(木) 19:19:56.56ID:K5yIowQc0
>>164
人に教えることで自分も成長する。
2020/04/03(金) 02:02:50.37ID:Vs5HZC6Ua
成長してないやん
2020/04/03(金) 12:51:38.72ID:EwhXV+Zid
>>162
そりゃ駄目だ。
モーダルとモードレスを調べよう。

モーダルでやりたかったらフォームのInitializeかActivateイベントだな。
2020/04/03(金) 12:54:37.89ID:EwhXV+Zid
>>159
AutoUpdateFrequencyプロパティじゃね?
ググっただけだけど。
2020/04/03(金) 13:10:39.84ID:tVlvtk9J0
>>167
それはあるな
2020/04/03(金) 13:51:03.50ID:S5/JCD2f0
>>170
それ、イミディエイトペインで試したけど、5未満はNGだよ

>>145の共有編集って、Excel2016で実装した、OneDriveとか使ってクラウドでやるやつだと思ったんだけど、違うのかな
×共有編集 ○共同編集 らしいけど
2020/04/04(土) 10:09:51.56ID:3Ir6pkSX0
モーダルあなた疲れているのよ
2020/04/04(土) 10:15:36.71ID:nxBKOFy80
自動更新の間隔を短くするのが無理なら手動でできないのかな?
強制的に切断と接続を繰り返してみたらどうだろう
2020/04/04(土) 13:14:06.10ID:MDQA80eK0
>>173
やっぱり、逆だよね
2020/04/04(土) 18:10:09.51ID:x7mbZh3f0
>>172
ローカルのつもりだったんだけどそれなら共同編集になるのかな?
2020/04/05(日) 01:47:50.77ID:LE/VkChT0
セルA1とB1の数値が一致しない場合はC1を塗りつぶす、というのはできるのでしょうか?
2020/04/05(日) 01:56:11.77ID:RR8jfU5J0
>>177
If A1 <> B1 Then [C1].Interior.Color = RGB(1, 234, 56)
2020/04/05(日) 07:39:22.81ID:BAT1a6hLp
>>178
ありがとうございます!
2020/04/05(日) 11:37:21.47ID:FbjC6ZOO0
A行の値を見て、その値が1だったら、空白行を上に2つ入れたいのですが、できますか。
2020/04/05(日) 11:44:06.84ID:FbjC6ZOO0
間違えた。

A列の値を見て、その値が1だったら、空白行を上に2つ入れたいのですが、できますか。
2020/04/05(日) 11:59:20.85ID:Kx41qnng0
できます
2020/04/05(日) 12:00:45.64ID:RR8jfU5J0
>>180
Sub Macro1()
  For r = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
    If Cells(r, 1) = 1 Then Rows(r).Resize(2).Insert
  Next
End Sub
2020/04/05(日) 12:32:03.32ID:FbjC6ZOO0
>>183
ありがとうございます!できました。
2020/04/06(月) 00:22:26.25ID:8R1em71p0
ほんまこの程度自分で考えないのかなあ
2020/04/06(月) 01:48:40.71ID:SI8CeRSt0
子が吐き出したcsvデータ(子の状況により1ファイル数行〜数百行程度のデータ00000000.csv〜FFFFFFFF.csv)を親で吸い上げて管理用に整理するマクロを作成しているのですが子のデータ数が多くなったせいか親の処理を実行中にExcelが落ちるようになりました。
現状では
Workbook.Open 00000001.csv
でファイルを開いてから配列に叩き込んで処理しているのですが、
他に何か開かずに直接配列に収納するとか別の開き方など良い手段はありますでしょうか。
2020/04/06(月) 02:53:22.77ID:mfVHo2vq0
>>186
その説明では落ちる原因がわからんので対処のしようがない
とりあえずテキストファイルとして開いてSplitで配列に入れるとか
2020/04/06(月) 07:33:50.36ID:c57grIZCr
>>174
自動更新しても更新されない
強制的にはできないね
2020/04/06(月) 09:41:20.32ID:LXVfU9S30
>>174
最初、自前タイマーでの自動保存を提案しようと思ったけど、全ユーザーの同期とか排他処理とか必要になるからやめた
同時使用数にもよるけど、現状の5分ぐらいが実用限度だと思う
それでも問題があるから、MSも共有ブック機能を非推奨にしたんだろうしね
2020/04/06(月) 15:09:00.57ID:0mGlPNRI0
>>186
まず落ちる原因の特定が必要
本当にデータ量が原因かどうか?

それでもし量の問題だとしたら
同時に必要なデータを見定める

たとえばA、B、Cのファイルを同時に開いてたが
じつはAとB、BとCで処理する工夫の余地があるとか

それでもアルゴリズムではどうにもならない量なら
SQLとかのデータベースに移行する
2020/04/06(月) 22:35:08.05ID:sFf9EAmnM
https://oshiete.goo.ne.jp/qa/1972570.html
ActiveWorkbook.SaveAsにするとファイル名変えずに保存できる理由を教えてください
Copyした時点で別ブックが作られるんですか?
192デフォルトの名無しさん (ワッチョイ 233e-g9A3)
垢版 |
2020/04/06(月) 23:45:47.95ID:jDCeOgrg0
マクロで作られた印刷ボタンを押すと両面印刷で出てくるからこれを片面印刷に統一したいんだけどどうしたらいいの?
2020/04/07(火) 00:23:26.13ID:YDovvV0g0
>>192
マクロを書き換える
印刷方法の変更はプリンターごとに違ってて、Excelのマクロの中でも一番面倒な部分だから、会社でわかってる人に聞くのが早い
2020/04/07(火) 00:29:05.68ID:BEkwL8Dn0
プリンタ登録を2つに増やして使い分けるのが簡単。

でもWin95のころはコピーするだけでプリンタ増やせたけど年々難しくなるよね
2020/04/07(火) 00:35:40.64ID:8SYsQHh80
正直印刷は、機器変更、NW、印刷位置、紙質とかでトラブルが非常に多くなるから、
金、人命とか絶対にVBAで自動化しなければ行けない理由がない限り手動にするようにしたわ
印刷部分だけPDFにして置いておくとか
2020/04/07(火) 01:53:49.62ID:qS+8J4U+0
マクロは印刷プロパティを出すところまで。
それ以上はトラブルの原因になるからやめとき
2020/04/07(火) 04:36:48.84ID:hIwtKFus0
そもそも紙にこだわるのが非効率で
電子化するのが本来の理想ではある
198デフォルトの名無しさん (ワッチョイ 233e-g9A3)
垢版 |
2020/04/07(火) 07:13:41.88ID:xwPFl55C0
プリンタのプロパティでプリンタの設定自体を片面印刷にしておくと片面印刷になりますか?
199デフォルトの名無しさん (ワッチョイ 4d8e-jJEW)
垢版 |
2020/04/07(火) 08:07:09.26ID:YQg5kUpF0
そのくらい自分でやって試せよ
2020/04/07(火) 08:07:32.68ID:FCg3JG5md
>>186
CSVをWorkbook.Openで開くのが駄目。
OpenステートメントとかFileSystemObject使う方が良い。
2020/04/07(火) 09:12:43.26ID:+6IcJjJU0
>>197
そんなの職場や利用目的によりけりだから
202デフォルトの名無しさん (アウアウクー MM81-g9A3)
垢版 |
2020/04/07(火) 12:34:06.90ID:y7/AcPOrM
コントロールパネルからプリンタのプロパティで片面印刷に設定したんだけど片面印刷オンリーになりません
どうしたらいいですか?
2020/04/07(火) 12:42:21.74ID:RfysvMTgr
やったこと全部書き出してプリンターメーカーに聞け
2020/04/07(火) 15:41:03.55ID:AQdBAJYM0
特定の文字列のみ文字色を変えたいんだけど、
置換を使うと指定した文字列を含むセルに入力されている全ての文字の色が変わってしまう…

現状では数百数千セルある中から文字列を選択して文字色変更を繰り返す、という辛い作業を続けているのですが
この様に、指定した文字列だけの色を変更って出来ませんか?
2020/04/07(火) 17:49:52.17ID:yHbrhPie0
>>204
Sub 特定文字列に色をぬる(検索範囲 As Range, 対象文字列 As String, 色 As Long)
Dim r As Range
For Each r In 検索範囲
Dim s As Long
s = InStr(r.Characters.Text, 対象文字列)
If s > 0 Then
r.Characters(s, Len(対象文字列)).Font.Color = 色
End If
Next
End Sub
2020/04/07(火) 19:26:33.02ID:FCg3JG5md
>>205
何か少し違う気がする。
rの中で対象文字列が1回しか変わらないんじゃね?

s=instr(s+1,r.Value,対象文字列)でsが0になるまでループかな?
2020/04/07(火) 19:29:30.91ID:ZYiBkzsm0
何から覚えようVBA
2020/04/07(火) 19:42:05.21ID:F7VfxkGZ0
>>198
やってみてどうなった?
2020/04/07(火) 20:04:27.93ID:4wIwYA/Ra
>>207
覚えるのが目的じゃなかろう
2020/04/07(火) 20:22:06.26ID:83dL758F0
>>187,190,200
186です。ご回答有難う御座います。
ご指摘を参考に以下の様な形に変更したところ、強制終了する事なく全ファイルの吸い上げが出来ました。お手数をお掛け致しました。
'// ファイル数カウント //
Dim CSVPth As String, CSVNam As String
CSVPth = Dir(CSVDir & "*.csv")
CSVNam = CSVPth
Do While CSVPth <> ""
CSVPth = Dir()
CSVNam = CSVNam & CSVPth
Loop
Dim CSVAry As Variant, CSVCnt As Long
CSVAry = Split(CSVNam, ".csv")
Dim OutAry() As Variant
ReDim OutAry(1 To (UBound(CSVAry) + 1) * 6, 1 To 1)
Dim LinAry As Variant, LinStg As String, LinCnt As Long
'// CSVファイル読込処理 //
For CSVCnt = LBound(CSVAry) To UBound(CSVAry)
If CSVAry(CSVCnt) <> "" And Dir(CSVDir & CSVAry(CSVCnt) & ".csv") <> "" Then
Open CSVDir & CSVAry(CSVCnt) & ".csv" For Input As #CSVCnt + 1
LinCnt = 0
Do While Not EOF(CSVCnt + 1)
Line Input #CSVCnt + 1, LinStg
LinCnt = LinCnt + 1
LinStg = "" & Replace(LinStg, """", "") & ""
LinAry = Split(LinStg, ",")
<-- 処理 -->
ReDim Preserve OutAry(1 To (UBound(CSVAry) + 1) * 6, 1 To WorksheetFunction.Max(UBound(OutAry, 2), LinCnt)
Loop
Close #CSVCnt + 1
End If
Next Range(Sheet2.Range("A1"), Sheet2.Cells(UBound(OutAry, 2), UBound(OutAry, 1))).Value = WorksheetFunction.Transpose(OutAry)
2020/04/07(火) 21:04:34.54ID:YDovvV0g0
Windows10になってから、アプリごとに印刷設定を覚えるようになってややこしくなった
以前はプリンタのプロパティからデフォルト状態を決め打ちできたのに
2020/04/07(火) 22:46:04.39ID:yHbrhPie0
>>206
その辺は仕様がはっきりしないから何とも言えんし
そもそも丸投げを受けたつもりはない

s+1だとaaaaaにたいしてaa指定したら5文字全部色変わるけどそれが良いのかどうかわからんだろ
2020/04/08(水) 03:24:16.94ID:PBw6emZJ0
4文字目から3文字赤に変えたマクロの記録
ActiveCell.Characters(Start:=4, Length:=3).Font.ColorIndex = 3
214デフォルトの名無しさん (ワッチョイ e23e-1Ne1)
垢版 |
2020/04/08(水) 19:41:01.55ID:uS6fz3VF0
まさかシート毎に印刷の画面から片面印刷を選ばなきゃ両面印刷をされるなんて知らなかったわ
2020/04/08(水) 19:55:07.25ID:o5xrKhXHa
プリンター関係の情報はシートごとになってるから。
手動ですべてのシートを両面印刷にする方法はあるけど。
2020/04/08(水) 20:05:36.79ID:T31Wtd0td
シート全選択してプリンタ設定変更してからやればいい
2020/04/08(水) 20:16:40.48ID:o5xrKhXHa
シート全選択してプリンター設定してもダメなんですよね。
2020/04/08(水) 20:32:27.07ID:wSF4QqHVa
あきらめろん
2020/04/08(水) 20:37:06.75ID:T31Wtd0td
>>217
上書き保存してファイルを開き直せ
2020/04/08(水) 22:17:54.74ID:Tninom9X0
dwgファイルをどうにかしてEXCELに図形で取り込みたいんだがなんか方法ありません?
家の見取り図みたいなファイルなんだけど。
2020/04/08(水) 23:34:26.41ID:W1XPdmgi0
>>220
DXFに変換
2020/04/09(木) 03:10:49.06ID:lF+KAcZx0
>>220
後輩にやらせる
2020/04/09(木) 04:58:57.51ID:yf4TGzZj0
>>220
JacConvert
2020/04/09(木) 07:53:04.17ID:q52/CIa+r
セル右クリックしたら出てくるメニューを禁止に出来ない?
書式設定とかコピーとか貼り付けとかメニュー自体出ないように
2020/04/09(木) 07:57:33.92ID:YKVVyHYsd
>>224
サブクラスで出来るかどうか。
ここには答えられる程の上級者が居ないと思う。
2020/04/09(木) 08:14:30.62ID:44A41Mtl0
保護かければ?
2020/04/09(木) 08:18:29.24ID:q52/CIa+r
>>226
保護かけると使えなくなる機能があるから無理なんだ
2020/04/09(木) 08:39:31.78ID:K8984GmW0
これは?普通にググったら出てきたぞ
https://www.moug.net/tech/exvba/0150035.html
2020/04/09(木) 09:20:01.56ID:x5VgstST0
普通にやり方あるぞ
2020/04/09(木) 12:24:02.59ID:wcbpQmosp
エクセル2007についてです

セルをクリックすると、カレンダーが表示されて、そのカレンダーの日付をクリックすると、セルに日付が挿入される

という形にしたいのですが、ここで問題があります

一つはAccessがないため、カレンダーコントロールがないのと、もう一つはインターネット接続不可端末のため、どこからかDLするというのができないです

この場合のカレンダーから日付取得をするというのはできないのでしょうか?
2020/04/09(木) 12:30:31.66ID:8gmsr/Td0
>>230
ボタンを横7列、縦6つ並べたカレンダーコントロール的なフォームを自作すればいい
https://ateitexe.com/excel-vba-calendar-control/
2020/04/09(木) 12:31:40.44ID:veSARJt1M
カレンダーのシートを作って、そこから選択させるとか
2020/04/09(木) 13:01:14.59ID:wcbpQmosp
>>231
早速参考にさせていただきました
ありがとうございます

ただ、これ起動すると、日付クリックした後、テキストボックスに日付挿入になるので
どこかのコードにテキストボックスではなくてセル挿入になるようにしたらいいと思うんですけれど、どこに記述するのがいいですかね?

まだvbaいじり始めた身としてはここまで複雑だといじりづらいというか
2020/04/09(木) 20:27:14.43ID:PvaeZ0Ck0
>>224
BeforeRightClickイベント
2020/04/09(木) 21:58:32.74ID:TQ3Lwxfd0
>>221
調べるとDXFはTextファイル形式で出来ているみたいでネットで調べながらやってみたけど、重い。まぁ俺の書き方が駄目な気もするけど。線の数が4万とか超えてる。
2020/04/09(木) 23:05:01.47ID:vJBq1mcg0
作者不明のファイルを修正しているのですが、そのファイル自身を指定するのにファイル名で
記述してありました。これだと「●●Ver1.0.xlsm」→「●●Ver1.1.xlsm」のようにファイル名を
変える度にコードを修正しなくてはならないためThisWorkBookに変えようかと思っているのですが
その場合なにか弊害とかあるんでしょうか?
237デフォルトの名無しさん (ワッチョイ e23e-1Ne1)
垢版 |
2020/04/10(金) 07:51:15.22ID:goOf5Ofq0
シートを全選択したら一括で変更できるのか
2020/04/10(金) 08:26:28.75ID:tq9uLSTsr
>>236
弊害は無いよ
2020/04/10(金) 09:37:44.73ID:Rte1PrgOr
そのファイル自身だと完全に明確で揺らがないなら、thisworkbookでいんじゃね
2020/04/10(金) 19:23:44.82ID:LG9l2UEQ0
どこから参照されてるのか全部調べないとわからないんじゃないかそれ。
まあThisworkbookを知らないだけの可能性は高いが。
2020/04/10(金) 19:27:26.52ID:f64Irgef0
>>238,239
ありがとうございます。

今日内容を確認してきましたが、マクロが記述されたブック(A.xlsm)上でシートを作成し、それをコピーして
新規ブック(B.xlsx)を作成してからもう一度A.xlsmの特定のシートをアクティブにする、という処理の中で
A.xlsmのブック名を明示してありました。

今日は時間がなくて試せなかったのですが、この場合でもマクロが記述されたブックはA.xlsmなので
ThisWorkBookで問題ないかなと思ったのですが、それであっていますでしょうか?
2020/04/10(金) 19:38:53.80ID:f64Irgef0
>>240
ThisWorkBookを知らないというかちゃんと理解していないのはその通りだと思います。
ThisWorkBookの主体がが変わる場合があるということでしょうか?
マクロ実行中にほかのブックに記述されたマクロを利用したりすると変わる、とかですかね?
2020/04/10(金) 20:30:11.90ID:oDKSQVIR0
ThisWorkBookはプログラムが記述されているワークブックを参照せよっていう意味だからブックAを実行中にアクティブがブックBに切り替わったりしてもブックAに記述されたThisWorkBookはブックAを参照する
2020/04/11(土) 03:52:15.33ID:w8fV8nev0
エクセルテンプレートを開いた状態

フォルダにある1つ目のtxtデータをエクセルテンプレにドラッグしてエクセル化

エクセル化したC1:C8の範囲をコピー

元々開いてあるエクセルのA1:A8に「数値」のみ貼り付け

エクセル化されたデータは閉じて2つ目のtxtをドラッグしてエクセル化

C1:C8の範囲をコピーしてテンプレのB1:B8に「数値」のみコピー

って感じでテンプレに測定機から出したデータをひたすら貼ってるんですが
これを簡単にするVBAとか可能ですか?

人によってはテキストをエクセル化はまとめて5つドラッグしたりして順番に貼ってく人もいます

エクセル化したデータの数値のみコピーしたいセルはC1:C8は固定

テンプレにはABCDと順番に貼って増やしていく

これをなんとかマクロかする案があればご教授お願いします。
2020/04/11(土) 07:25:04.87ID:+FpWMQNh0
可能です。
2020/04/11(土) 08:08:50.84ID:X9U6v4B00
テンプレート(.xlt .xltx)は何に使うの?
2020/04/11(土) 10:50:20.33ID:w8fV8nev0
>>245
その一言でも希望があってありがたい
どういう流れで作ったらいいか何か構想のヒントなどあればいただきたいです

・テンプレのエクセルにボタン設置
・テンプレ開くと同時にユーザーフォーム開くようにしてテキスト選択できるようにするのか
・そもそもVBAがまだ人間になれてない猿並のスキル


>>246
テンプレは.xlsxです、普通のエクセルの
2020/04/11(土) 10:56:04.79ID:DIdffniea
>>244
txtデータは、例えばカンマで区切られてるとか、空白で区切られてるとか、決まってるの?
内容的にはVBAがある程度使える人なら難しくないと思うけど、ちょっとネットで聞いて作ろうとかいうのは難しいんじゃないかな。
2020/04/11(土) 11:19:08.65ID:DIdffniea
txtファイルがどのくらいの数あるのかで、どういう手順が良いか違ってくると思います。

そんなにたくさんないなら、テンプレファイル(◯◯.xlsm )に、ボタンを用意。ボタンを押したらファイルを選択するダイアログが出て、該当のtxtファイルを選択してデータを読み込む。

txtファイルがたくさんあるとこの手順は面倒なので、同一フォルダに入れてなんらかの順番で読み込むようにするとか。
2020/04/11(土) 11:27:54.59ID:YvJJVii7M
>>248
そこら辺の知識がなくてとにかくテキストを、開いてるエクセルにドラッグすると決まったセル範囲に例えばC1:C5に欲しいデータが出るのでそれをコピーしてるのが現状です

イメージ的にいつも

https://i.imgur.com/50VhJqS.jpg
テキスト入ったフォルダとエクセルを並べる

https://i.imgur.com/8TiTDap.jpg 
ドラッグしてエクセル化

https://i.imgur.com/OrMUP1G.jpg
数値のみコピーしてテンプレに貼り付け

https://i.imgur.com/htHvRLv.jpg
閉じた後、次のテキストをドラッグしてエクセル化

https://i.imgur.com/1F89knY.jpg
テンプレの次の列に貼り付け

これを日によっては70くらいやったりしてます、、
2020/04/11(土) 11:31:26.34ID:YvJJVii7M
>>249
レスありがとです!!!そこです!
日によってデータ数が違って
5つの日もあれば30の日もあれば75の日もあります
ボタン作って該当するデータの数を任意で選べたりできないのかなぁと妄想してます
2020/04/11(土) 11:41:57.94ID:YvJJVii7M
この貼り付けるエクセルはそもそもこんなのでテンプレなの?っていうは一応エクセルの関数で
他の何種類もあるシートに複数の関数で出せる紐付けしてあるので
テンプレというか自分なりのベースのようなものです

本当はその関数すら慣れてる人ならVBAで余裕で組むんだろうなと思うのですがそんな欲ばる資格がまだないのでまずはこの作業を…
2020/04/11(土) 11:45:20.84ID:DIdffniea
GetOpenFilenameメソッドでダイアログで複数のtxtファイルを選択するか、「転記前フォルダ」とかに対象のtxtファイル入れておいて、フォルダ内をfor eachですべて読み込むか。読み込み済みのtxtは自動で「転記済フォルダ」に入れるか削除。
どちらにしてもtxtファイルの名前順に読み込むようになるだろうから、そこを一工夫する必要があるかも。
2020/04/11(土) 12:37:41.59ID:9V4Tv9yv0
>>252
とりあえず、フォルダ内の全テキストを一気に読み込むやつを作った
専用のフォルダに必要なデータだけ入れて、フォルダ名を2行目に書いて

Sub Macro1()
  ChDir "c:\tmp"
  f = Dir("*.txt")
  c = 1
  Do While f <> ""
    Open f For Input As #1
    For r = 1 To 6
      Line Input #1, s
      Cells(r, c) = Split(s, vbTab)(2)
    Next
    Close #1
    f = Dir
    c = c + 1
  Loop
End Sub
2020/04/11(土) 12:48:46.57ID:7ipBnOPU0
>>247
マクロ記録してそれを加工すればいい
2020/04/11(土) 12:55:48.43ID:Zf+aIjAZ0
>>254
うおおおお
マジでありがとうございます!
いま外出中なので帰ったら速攻でVBE開いて取りかかります!!
他のこんな猿にアドバイスくれる人達に感謝のみ
批判されて当然のスキルしかないのでそういう覚悟もして相談させてもらってます

6月くらいまでには形にして自分もある程度
コードのルールや流れを猛勉強します

>>255
それも頑張ります、まず加工する知能を身につけます
2020/04/11(土) 18:21:57.90ID:jjkr4EqGa
個人的にはCHDIRと#1ってのが
気になった
2020/04/11(土) 20:11:07.53ID:Lp6A5Woc0
恋だな
2020/04/11(土) 20:18:04.56ID:7YQkqL610
6月て
こんなんIT系の仕事じゃなくても普通に1日で理解するやろ。。

多分セルごとに書き込むからファイル数とデータによっては遅くなるな
2020/04/11(土) 21:02:43.27ID:Mh4soJ8e0
クリップボードに整形したデータ入れてペーストでもいいのよ
タブで右のセル
改行で次の行
2020/04/12(日) 05:51:52.52ID:2Kcsozov0
VBAについて詳しい方に質問です。
現在VBAでオートフィルタの自動プログラムを組んでいます。
そこで質問があります。以下の様なデータがあったとします。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
私の名前は、太郎です。
私の名前は、岩崎です。
あなたの名前は、太郎です。
あなたの名前は、岩崎です。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
検索ワードとしてスペース区切りで「あなた 太郎」と入力された場合
「あなた」と「太郎」を同時に含む行のみをフィルタリングするには
どういう記述を Criteriaにすれば良いのでしょうか?

Criteria1:="*" & [検索ワード] & "*"

現在こんな感じで記述してますがうまく動きません。
AND条件、そしてOR条件で指定する方法を教えてくださいm(_)m
2020/04/12(日) 08:05:06.29ID:YDpAYAt+0
>>261
それやるならオートフィルタじゃない。
アドバンスフィルタ。
2020/04/12(日) 11:41:12.47ID:QKHzDSq80
>>261
シート上でオートフィルタかける時にできること以外のことはできない
2020/04/12(日) 11:45:08.44ID:QKHzDSq80
どうしてもその記述でやりたいならワードをスペースで分割してから条件2つ指定する
2020/04/12(日) 13:12:18.32ID:2Kcsozov0
ありがとうございます。
アドバンスフィルタとやらを調べてみます。
2020/04/12(日) 13:17:20.10ID:bBYC6g030
>>261
And条件の場合はこう書く
Criteria1:="=*あなた*", Operator:=xlAnd, Criteria2:="=*太郎*"
2020/04/12(日) 13:39:43.30ID:2Kcsozov0
>>266
ありがとうございます!!
2020/04/12(日) 17:59:57.23ID:Vvo4XdlE0
いえいえ
2020/04/13(月) 01:44:02.35ID:sGzWGZEv0
>>254
これを、やってみたけどcellsのところでエラーがでます、うーん
頑張ります
2020/04/13(月) 07:29:10.31ID:aaxqX2kx0
>>269
ヒント 変数 r
2020/04/13(月) 08:13:39.61ID:q00oGNOiM
>ヒント
ウザっ
2020/04/13(月) 11:51:14.39ID:V+m1zN0B0
>>269
それはたぶん、txtファイルの中身が想定外
例えば5行以下しかないか、C列にデータが入ってないか
2020/04/13(月) 12:54:16.85ID:RFtb5de7M
>>269
すまん。変数 r はforで回ってた。
2020/04/13(月) 13:27:32.03ID:kcz/TGUB0
S列の2行目以降で、0.05以上でかつ、0.98以下の値の行を行ごと削除したいのですが、コードを教えてください
(最終行はA列から取得)

Dim tag As Variant
Dim a As Long
tag = Range("S1:S" & Cells(Rows.Count, 19).End(xlUp).Row).Value
For a = Cells(Rows.Count, 19).End(xlUp).Row To 2 Step -1
If tag(a, 19) <= 0.98 And tag(a, 19) >= 0.05 Then
Rows(a).Delete
End If
Next
2020/04/13(月) 14:19:37.44ID:V+m1zN0B0
>>274
Dim a As Long
For a = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1
  If 0.05 <= Cells(a, 19) And Cells(a, 19) <= 0.98 Then
    Rows(a).Delete
  End If
Next
2020/04/13(月) 14:20:29.76ID:6KK4qS560
ワークシート機能とか使わないなら、
・その表を全て一気にもにょっと2次元配列(tableA)にいれる(コンマ数秒)
・2次元配列(tableB)を一旦定義
・tableAの各行(イメージね)をforeachする。++カウントする変数をつくる。これはtableBの行数。
・foreachのなかで、tableAのS列がその条件に合致しなければ、tableBに行のそれぞれの要素を代入する(redim preserveしながら)
・できたtableBをどこかにペタッと貼る

Excelぽくやるなら
・オートフィルタする
・2次元配列に一旦もにょっとコピーする(可視セルのみ、CurrentRegionかな)
・シートをクリアするか他のシートにコピーした2次元配列をペタっと貼る
2020/04/13(月) 14:21:50.93ID:6KK4qS560
ちなみに行をforeachしながら行を消すとズレが生じるんじゃね、しらんが
2020/04/13(月) 16:10:06.75ID:7RR5m+brM
>>254
色々いじっていますがこれをどう手直ししていいかわからず…

たとえばこれをテキストを変換したときにF2:F13にくるデータを
エクセルにはB5:B16、C5:C16と順番になるよるに出力するようになるにはどう調整すればいいのか、がんばって調べてます
2020/04/13(月) 16:10:57.06ID:kcz/TGUB0
>>275
ありがとうございます。
2020/04/13(月) 18:33:52.63ID:xh/6KDMeM
>>278
ヒント: F1キー
2020/04/13(月) 19:37:09.96ID:sGzWGZEv0
Sub テキストから引っ張る()
ChDir "C:\Users\user\Desktop\マクロ勉強" 'フォルダ指定
f = Dir("*.txt")
c = 2 'テンプレの開始する列の変更
Do While f <> ""
Open f For Input As #1 For r = 2 To 13
'テキストの引っ張ってくる行を指定
Line Input #1, s Cells(r, c) = Split(s, vbTab)(2) Next Close #1 f = Dir c = c + 1 Loop End Sub


猿には荷が重すぎるわ
せっかくここで凄いの貰ったのに頭が。
テキストをエクセル化したときのC列をF列に変更しようと思ったらすでにfが存在してて
どこを今度は変えたらいいかわかりません
2020/04/13(月) 19:44:03.37ID:V+m1zN0B0
>>281
cとかfは変数だよ
ワークシートの列じゃない
2020/04/13(月) 19:48:23.00ID:V6BYDDPb0
猿とか以前にそもそも基本知識すら身に付けてないのでは…
2020/04/13(月) 19:54:15.29ID:sGzWGZEv0
そう、変数なんだというとこまではぎりぎり何とかわかったんです
ただ、引っ張ってくるテキスト側の列をどこで制御してるのかがわからず
>>283
完全にその通り
単純に勉強不足
ネットでかじってばかりじゃダメだと古いけど本も借りました
ただ本当にマジで難しい…

https://i.imgur.com/7Ujyfqa.jpg
2020/04/13(月) 19:55:45.77ID:V+m1zN0B0
Sub テキストから引っ張る()
  Dim ファイル名 As String
  Dim 行 As Integer
  Dim 列 As Integer
  Dim 配列() As String
  Dim 文字列 As String

  ChDir "C:\Users\user\Desktop\マクロ勉強"  ' フォルダ指定
  ファイル名 = Dir("*.txt")
  列 = 2 'テンプレの開始する列の変更
  Do While ファイル名 <> ""
    Open ファイル名 For Input As #1
    For 行 = 2 To 13  ' テキストの引っ張ってくる行を指定
      Line Input #1, 文字列
      配列 = Split(文字列, vbTab)
      Cells(行, 列) = 配列(2)
    Next
    Close #1
    ファイル名 = Dir()
    列 = 列 + 1
  Loop
End Sub
2020/04/13(月) 19:58:56.72ID:sGzWGZEv0
うお、変数の宣言をあらかじめわかりやすくしてくれて馬鹿な俺を誘導してくれようとする人が!!絶対そんな感じのありがたい人だ!
今から車に乗って帰ったら速攻PC開きます!−−!!
2020/04/13(月) 20:19:57.09ID:Kp4LtUp30
>>281
>>284
まずVBAの入門書を読んで基礎知識を
整理するといい(するみたいだけど)

あと「テキストから引っ張る」っていう言葉が曖昧
「テキストファイルを読み込む」「セルに展開する」
みたいに仕様を適切な言葉で把握しておくだけで
ネットで検索すればすぐサンプルコードが引っかかる

本当はなるべく「f」も「file」とか具体的に
命名した方が分かりやすくていいと思うけど
(ファイル用変数とセルの列を混同した一因だろうし)
まず日本語のレベルで言葉を整理しよう
2020/04/13(月) 22:05:23.75ID:sGzWGZEv0
>>287
全くその通りです。

とりあえず
ほぼ意味わからないまま上の人達のおかげで自分の今の業務が10倍以上余裕で速くなるであろうマクロボタンをベースになるxlsmのシートに一つ登録したらたった今完成してしまいました…
隣のシートの正式フォームに数値のみコピーするのだけはマクロで追加しました


Sub テキストファイルをベースに読み込む() ChDir "C:\Users\ikuzo\Desktop\測定データ"
'フォルダ指定
FILE = Dir("*.txt")
c = 2
'ベースの開始する列の変更
Do While FILE <> ""
Open FILE For Input As #1 For r = 2 To 13
'セルに展開する行を指定
Line Input #1, s Cells(r, c) = Split(s, vbTab)(5) Next Close #1
FILE = Dir
c = c + 1
Loop
Range("B2:L13").Select Selection.Copy Sheets("測定結果報告書").Select Range("D5:N16").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False
End Sub

何度やっても一瞬で完璧に処理が終わる…
だがさっぱり意味がわからん、、
本読みます。。
2020/04/13(月) 22:52:20.74ID:sGzWGZEv0
ああ、ダメだ。'でメモりまくったけど
出力する側のエクセルシートの列の指定はわかったけど行の指定がわからなかった。勉強ですね。。
みなさんありがとうございました。
2020/04/13(月) 23:09:41.81ID:nLvmNP810
ちらっちらっ
2020/04/13(月) 23:14:07.84ID:sGzWGZEv0
ごめん、ダメだ。助けてください。
混乱しまくってます。全然違った
読み込むテキスト側の行指定がわからない、、
ベースの方にテキスト2行目8行目からを指示、
とかそれをしないと会社で対応できないです…
2020/04/13(月) 23:21:22.07ID:V6BYDDPb0
そりゃ変数すら知らない知識レベルならこんな短時間じゃなんもできんだろう…
2020/04/13(月) 23:39:16.20ID:sGzWGZEv0
先輩曰くとりあえずわからなくても1つ何か作ってそっから覚えていけと言われ…

Sub 指定フォルダの全テキスト絞り読み込み() ChDir "C:\Users\user\Desktop\測定機データ" 'フォルダ指定
FILE = Dir("*.txt") retu = 2
'ベース列決定でAは1から
Do While FILE <> ""
Open FILE For Input As #1
For Tekist = 3 To 12
'ベース任意行決めでテキストは1行目から
Line Input #1, s
Cells(Tekist, retu) = Split(s, vbTab)(5)
'テキスト初列を()で決めるがAは0から
Next
Close #1
FILE = Dir retu = retu + 1
'この数だけ列飛ばしにベースに読み込む
Loop
End Sub

'テキストを任意の行から読むのが課題4月13日

毎日勉強しないとなぁ。ほんと
2020/04/13(月) 23:57:52.26ID:k2GojJ+U0
PDFファイル(画像)をEXCELに貼り付ける際の画像の素の大きさってどうやって取得できます?
2020/04/14(火) 00:02:13.22ID:A2P11e7ma
いきなり別ファイル(txtファイル)読み込んだり、配列変数あったりで難しいよ。
本来はもっと基礎からやらないと。
2020/04/14(火) 00:02:49.64ID:PthiGcDI0
>>293
テキストファイルは1行ずつ順番しか読み込むことができないから、3行目が必要な時は最初の2行を読み飛ばさないといけない

Open FILE For Input As #1
Line Input #1, s ' 1行目を読み込むだけで何も処理をしない
Line Input #1, s ' 2行目以下略
For Tekist = 3 To 12
  Line Input #1, s ' 3行目以降
  Cells(Tekist, retu) = Split(s, vbTab)(5)
Next
2020/04/14(火) 00:29:53.49ID:Ua5gdcz00
>>296
本当に本当にありがとう、
上の人たちも本当にありがとう
無知のド素人の俺でも超完璧に動かせました
感謝しかないです。本当に勉強します


Sub 指定フォルダの全テキスト絞り読み込み() ChDir "C:\Users\ikuzo\Desktop\測定機"
'フォルダ指定
FILE = Dir("*.txt")
retu = 2  'ベース列を決定でAは1から
Do While FILE <> ""
Open FILE For Input As #1
'Line Input #1, s   
' 1行目を読むだけで何もしない(テキスト1行目からで良ければ普段は封印
'Line Input #1, s   
' 2行目以下略
For Tekist = 3 To 12
'ベース初行〜任意行決めでテキストは1行目からだが封印の解放により連動
Line Input #1, s
Cells(Tekist, retu) = Split(s, vbTab)(5)
'テキスト初列を()で決めるがAは0から
Next
Close #1 FILE = Dir retu = retu + 1
'この数字を変えた分だけ列飛ばしにベースに読み込む 
Loop
End Sub

'本当にありがとうございました4月14日
2020/04/14(火) 16:20:04.61ID:BhIp9WlU0
>>296
Tekist ワロタ
2020/04/14(火) 18:14:44.01ID:srMYTcHJd
TekisutoでもTextでもTexteでもないのな
2020/04/14(火) 19:13:19.46ID:Ua5gdcz00
今日、神懸かり的に職場の測定機のPCのツールとして産声を上げました
あとは起動と同時に出るユーザーフォームにボタン4くぐらい作って割り当ててとりあえず完成しそうです

そして今日から本を愛読して変数について基礎から学んできます

自分で変えたのがわかるように誤記ぐらいにしとかないと何かのコマンドやコードがわからないので
textって打ったら先頭が大文字に変わるから
こりゃいかんと
2020/04/14(火) 19:29:23.49ID:2/fcFDaL0
なんでもいいから一つ作れってのは作ってもらえって意味じゃないと思うな
302デフォルトの名無しさん (ブーイモ MM5b-L0r9)
垢版 |
2020/04/14(火) 19:39:44.23ID:5O9c120iM
活気が出てええやん
過疎スレやし
2020/04/14(火) 21:50:12.98ID:Ua5gdcz00
変数の定義や宣言をとにかく最初にする癖をつければ
後でわかりやすいことが本でわかり
そして英字じゃなくてもいいことに驚きました

慣れてるたち人のサイトだと
Dim Folderpass As String
Dim FileInt As Long
とか英字だけど
Dim フォルダ場所 As String
Dim ファイル数 As Long

とか和文字だと支障でますかねこれ
2020/04/14(火) 21:58:17.78ID:A2P11e7ma
個人的には変数名で日本語は避けてる。
逆に読みにくいので。
2020/04/14(火) 22:06:22.29ID:4z3IdTPt0
拙者も日本語はコメントで書くようにしてコードは英数字で書くようにしている
2020/04/14(火) 22:20:28.98ID:Ua5gdcz00
なるほど、俺も英字で作る癖つけた方が良さそうですかね
字の色でわかるだろ…とは言え、なんかの関数やコマンドと似てるとやはり最初は難しいですね
Tekist
Fname
Fpass
shseeet
とかにしてこれ俺の宣言した変数だわ
って最初は作ってみます
あざす!
2020/04/14(火) 22:37:22.88ID:A2P11e7ma
変数の付け方とかで、書いた人の実力が分かるという説もあるから。
私は小文字で始めるキャメル式が見やすいと思って大体統一してる。
2020/04/14(火) 22:38:37.96ID:e6NkXt+SM
> とか和文字だと支障でますかねこれ
今時C/C++ですら変数名に漢字使えたりするぐらいだから問題ない
特にフォルダーパスをFolderpassとか書くような人は積極的に使うべき
2020/04/14(火) 22:53:49.36ID:PthiGcDI0
VBAだとそんなに困ることはないんだけど、.netはライブラリが膨大すぎて、既存のメソッドやプロパティと名前が被るかどうかの確認が面倒
あと、語彙力が足りなくてユニークな英単語が思いつかないとか、辞書で調べて付けた変数名があとから見返すと意味がわからないとかある
2020/04/14(火) 23:05:59.10ID:wBIN668P0
>>309
>語彙力が足りなくてユニークな英単語が思いつかないとか
曜日、曜日って英語でなんて言ったかなー
せや、yb ですましたら
2020/04/14(火) 23:20:30.80ID:1uq460ot0
最近プログラム自体始めた初心者です。
日々勉強ばかりですので、汎用性が高くなるよう目指し、
知識を入れてはコードを改良し、それを外部保存、そして
実行するブックで呼び出して使っています。

ついこないだ引数という便利なものを知り、さっそく使っているのですが、
ひとつ疑問が。
「特定セルに、作成したリストの上から順に内容を書き込む」という
簡単なfor〜nextループマクロを使いまわしたいのですが、そのループ処理内容を
callなどから設定することはできるのでしょうか?
(たとえば、あるブックでは印刷処理したい、けどこっちではシートコピー処理したい、
など)

引数で、特定セルやリストの開始行は設定できたのですが。。。
宜しくお願いいたします。
2020/04/14(火) 23:23:30.52ID:1uq460ot0
>>311です。一部分かりづらかったので訂正いたします。
×「そのループ処理内容をcallなどから設定することは〜」
〇「そのループ処理内容を、実行するブックから設定することは〜」
313デフォルトの名無しさん (ワッチョイ 068e-f9/D)
垢版 |
2020/04/14(火) 23:30:42.95ID:ps8T64zC0
馬鹿が一気に出てきたのはコロナウイルスで脳炎や痴呆症でも発症するのか?
2020/04/14(火) 23:31:29.82ID:PthiGcDI0
>>311
サブルーチンの中にブック名を判定するIfを入れるとか、引数を増やして処理を切り替えるとか、方法はいくつもある
2020/04/14(火) 23:44:19.27ID:Ua5gdcz00
Sub データ数の確認()
Dim FoPath As String
Dim Fname As String
Dim Fnum As Long
Dim SetPath As String FoPath = "C:\Users\user\Desktop\測定機"
'フォルダのパスを指定する
Fname = "*.txt" 'ファイル名と拡張子指定 Fnum = 0
'ファイル数を一度0にする
'指定したフォルダパスとファイル名をセット
SetPath = Dir(FoPath & "\" & Fname)
Do While SetPath <> ""
'ファイル名が取得出来なくなるまでループ Fnum = Fnum + 1
SetPath = Dir()
Loop
MsgBox Fnum & "つデータが入っています。"
End Sub


見様見真似というかネットからパクってユーザーフォームのボタンに追加できました。
このスレの人たち凄いです
316デフォルトの名無しさん (ワッチョイ 068e-f9/D)
垢版 |
2020/04/14(火) 23:55:34.54ID:ps8T64zC0
いい加減に馬鹿は消えろ
317デフォルトの名無しさん (ラクッペペ MM8f-AKYr)
垢版 |
2020/04/15(水) 00:06:27.34ID:IBkk3oxvM
>>311
他のナウい言語みたいに関数ポインタとか使いたいのだろうが
おとなしくコマンド文字列でも渡してselectでもしとけ
2020/04/15(水) 01:14:25.80ID:vPyadW120
ナウい変数名を考えようと思って色々試したら、結構いけるじゃん。

Dim ヽ, 卍, ¶, , f, , , ≒, ♪

♪ = 1
Debug.Print ♪
2020/04/15(水) 01:17:01.85ID:vPyadW120
あ、普通にこれでいいか。

Dim 骸骨剣士, 死霊の騎士, 幽霊, 死神
2020/04/15(水) 01:24:08.40ID:Ikiffowr0
For 愛 = 1 To 10
2020/04/15(水) 01:34:17.76ID:Ikiffowr0
>>319
うちの新人が最初に書いてきたコードがそれだったわ (実話
もちろん熟語の意味と変数の用途は無関係で、厨二ワードを思いつきで適当に並べただけ
2020/04/15(水) 02:43:11.14ID:zLal5e060
>>311
初心者なら具体的な処理を抽象化していく
ボトムアップのやり方が分かりやすいと思う

たとえばかけ算の九九を求める関数に
引数でXを渡してXxX(12×12など)を
求める関数に抽象化すると使い道が広がる

あるいは5行6列目のセルを処理する関数を
X行Y列目を処理するように拡張するだとか
関数の引数は数学の変数のように考える


そして関数(やクラス)を自作する時のポイントは
なるべく関数を小分けにして組み合わせて使うこと
関数が大きくなると理解するのも難しくなるから

印刷やシートのコピーとか別の処理を
ひとつの関数で全部やろうとしないで
別々の関数に書いておく

それで呼び出し元の関数から
実行する関数をIF文で切り替えたりする
Excel VBAに限らずプログラミングの定石
2020/04/15(水) 08:51:03.63ID:7yJWhPoQ0
個人的な意見だけど
変数を日本語にする事の欠点は、目立ちすぎて、他が見にくくなる事だと思う
ループカウンタの様な頻出する変数には、制御構造が見にくくなるので避けるべき
ルーチンの目的的なものとか、あまり使わないような変数については、場合によっては推奨
2020/04/15(水) 10:07:54.93ID:fYr2Vm730
いいたいことはわかる
なでしこみたいに構造もそうなってれば、比較して自然に見えるしね

まあでも英語で慣れちゃってると、気になっちゃうから可読性低いと評価してしまうわ
2020/04/15(水) 11:57:43.10ID:qO0uVKDC0
>>303
絶対に止めた方が良い。
今、他人のそういうコードで四苦八苦してる。

しかもプロシージャも日本語だから
If 測定結果 Then
などとあって、"測定結果"が変数なのかBooleanを返すプロシージャなのかすら直ぐには分からない。
326デフォルトの名無しさん (ラクッペペ MM8f-AKYr)
垢版 |
2020/04/15(水) 12:04:59.54ID:tJWgJTOGM
それはエーゴでもかわらなくなくね?
2020/04/15(水) 12:43:22.36ID:9r3ObWq4r
>>32
「定義」ですぐわかる
2020/04/15(水) 12:47:51.20ID:9r3ObWq4r
325の間違い
2020/04/15(水) 13:14:16.12ID:Ikiffowr0
がっつり英語だと、こんどは辞書を引く作業が待ってることもある
発音がわからないと会話で困るし
330デフォルトの名無しさん (ワッチョイ 778f-Eg7/)
垢版 |
2020/04/15(水) 13:39:00.87ID:zDLD/Qb60
特定のURLのソースに任意の文字列が記載されているかどうかを判断したい。

https://auctions.yahoo.co.jp/seller/abcdfgh
https://auctions.yahoo.co.jp/seller/zakattas
https://auctions.yahoo.co.jp/seller/zafect789
というページのリストがあったとして、ソースに"停止中"もしくは"無効"の文字列が
あるURLにはB列に"NG"と吐き出す、ということをやりたいです。

https://okwave.jp/qa/q6120067.html
が近いんですが「2)一般的な文字列の場合」はエラーが出て動きませんでした。
VBAに詳しい人、よろしくお願いします。
2020/04/15(水) 13:51:28.81ID:5mkkxmmPa
grep なら一行でできるのに VBA でやらないといけないのか
2020/04/15(水) 13:53:51.50ID:VtNtlccy0
人に送ったら日本語フォントない海外PCで全く動かなくなったりしたな
2020/04/15(水) 14:13:32.74ID:Ikiffowr0
>>330
参考リンク先のどのプログラムを試して、どの行でどんなエラーが出たか書いて
エラーが出たままでCtrl+Cを押せば、エラーメッセージがクリップボードに入るから、それをコピペして
あと、目的のWEBサイトの文字コードはちゃんと確認した?
2020/04/15(水) 14:16:13.29ID:Ikiffowr0
>>331
まあ wget | nkf | grep のが簡単かもね
2020/04/15(水) 14:42:43.03ID:zDLD/Qb60
>>333
すいません。
コピペ繰り返してたらなんとか行けました。

Sub YouTube_Search()
Dim objIE As Object
Dim i As Long
Dim j As Long
Set objIE = CreateObject("InternetExplorer.Application")
With objIE
For i = 1 To Range("A1").End(xlDown).Row
.navigate Cells(i, 1).Value
While .Busy Or .ReadyState <> 4: DoEvents: Wend
For j = 1 To .document.all.Length
If InStr(.document.all(j - 1).outerText, "Yahoo! JAPAN IDが無効です") > 0 Then
Cells(i, 2).Value = "*"
Exit For
End If
Next
Next
End With
objIE.Quit
Set objIE = Nothing
End Sub
2020/04/15(水) 14:43:10.74ID:dyZQaRRHd
>>326
確かに。
でも日本語フィールドが多いSQL文の中で、一部の変数も日本語だったりするのとか、変数と気付かなかったりするのもあるし、最悪だよ。
2020/04/15(水) 15:14:20.64ID:4idtb0t/a
かわらなくね?かわらなくなくね?
2020/04/15(水) 19:27:28.55ID:DRi90/CyM
>>325
なんの測定なのか知らんけど測定結果がBooleanな時点で知能の足らない職場と言うことがわかる
コードレビューなんてしたこと無いだろ
2020/04/15(水) 21:47:05.33ID:vXo73Hp80
辞書で調べても馴染みのない単語でかえってわかりにくくて結局日本語にしてみたりね
2020/04/15(水) 22:13:27.05ID:qXjFLib20
311です。

>>314,317,322
私がやろうとしていたことが、まず効率の悪いことだったんですね・・・
細かく分けて関数作って、それを組み合わせて作る方法を取りたいと思います。
(ただ、どこまで細かく分ければいいのか、まだ要領を掴んでおりませんが)
ありがとうございました。
341デフォルトの名無しさん (ブーイモ MMcf-IW4T)
垢版 |
2020/04/15(水) 22:29:20.66ID:bRq9+Y6qM
初心者ですがご教授下さい

サンプルの工程能力で1個につき6項目の測定値をソフトがエクセルにデータ出力してくれるけど、日によっては23個だったり25個だったりしか測定できず

残りの記入方法は人によって様々で
ある人は測定値のバラつきに近い値をテンキーで手打ち
ある人はエクセルのrandbetween関数で
各項目の測定値のMAXとMINで乱数だしてそれをコピぺ

サンプル1 サンプル2  〜サンプル30
項目1
項目2
項目3
項目4
項目5
項目6

こんな並びで全項目測定後に出力されるから項目の途中で止まることはないです

「サンプル1〜30の間の項目1の行に空白があった場合、それより前(左)にある全ての測定値を参考に乱数でサンプル30の項目6まで埋める」

これは難易度かなり高いですか?
342デフォルトの名無しさん (ブーイモ MMcf-IW4T)
垢版 |
2020/04/15(水) 22:33:03.58ID:bRq9+Y6qM
誤記というか間違えました
「サンプル1〜30の間の項目1の列、又はセルに空白があった場合、それより前(左)にある全ての測定値を参考に乱数でサンプル30の項目6まで埋める」
です
すみませんがどういったアプローチがあるのか
そもそもできるのかご教授下さい
2020/04/15(水) 22:49:03.78ID:xz8oNroja
>>342
それは多分難しくないと思うけど、読解力がなくてよく分からない。
サンプル的なものを挙げてもらえると分かりやすいかも。
2020/04/15(水) 23:00:46.12ID:zLal5e060
>>340
>どこまで細かく分ければいいのか
基本的に処理は関数名に沿って分ける

関数名から逸脱した処理があれば
別の関数に分けて整理していく

だから関数や変数の
適切な命名が重要になってくる

面倒でも名前と処理を対応させた方が
後でメンテナンスしやすくなる
345デフォルトの名無しさん (ブーイモ MMcf-IW4T)
垢版 |
2020/04/15(水) 23:19:56.30ID:bRq9+Y6qM
>>343
いや、俺の説明力がなくて、、
というか行列が逆でした
再度説明させてください

https://i.imgur.com/D4MOqky.jpg
こんな感じで機械がエクセルに出力してくれるけど
残りのサンプルの数字は上の測定値を見てみんなそれぞれランダムにテンキーで入力したりと、いわゆる数値を適当にバラして打ち込んでます。(偽装というほど重要ではないので)
日によって測定できるサンプルが数が違います。

参考になるか程度のスクショになりますが

「サンプル1から30までで空白の行列があったらそれまで測った上のサンプルの測定値を元に乱数でサンプル30の項目6までVBAが全て記入してくれないかなと、

こんな感じです
2020/04/15(水) 23:34:48.80ID:xz8oNroja
「列、又はセルに空白があった場合、それより前(左)にある全ての測定値を参考に」というのは?

その例でいうと、
・項目1のサンプル8、9、10が空欄なので、1から7の数値を元にして適当な数値で埋める。
・残りの項目についても同様

ということですか?つまり上の数値を元にしてるけど。

処理自体は難しくないとは思います。
347デフォルトの名無しさん (ブーイモ MMcf-IW4T)
垢版 |
2020/04/15(水) 23:57:01.64ID:bRq9+Y6qM
>>346
その例でいうと、というか今の職場の手間になってる仕事がまさにその通りです
上の数値を元に残りの項目を誰かが埋めてます

どんなアプローチで行ったらよさそうかアドバイスいただませんか
Rnd関数Int関数、Loop、Offset
調べてもなかなかわからずです‥
2020/04/15(水) 23:58:14.63ID:Ikiffowr0
>>345
数字を偽装するルールが人によって違うのはわかったけど、あなたはどういうルールでやりたいのか、もうちょっと厳密に書いて
「それまでの数値を参考に」という表現では曖昧すぎてプログラミングできない

例として、サンプルが7個しかなかった場合は、その7個の数字をどう使って30個に増やすのか?
349デフォルトの名無しさん (ブーイモ MMcf-IW4T)
垢版 |
2020/04/16(木) 00:23:27.26ID:WB3hiXkKM
>>348
数式と一覧を削りましたが普段はここの赤矢印に測定したデータのMax値とMin値を入れて
EXCELの関数でこのような数式で乱数を
出しています
数年前に自力で作ったけどもはや覚えていないレベルです
https://i.imgur.com/eglO3Ph.jpg
350デフォルトの名無しさん (ブーイモ MMcf-IW4T)
垢版 |
2020/04/16(木) 00:25:05.62ID:WB3hiXkKM
あとスクショ取りたいが故に行数の抜けやズレが、、、すみません
2020/04/16(木) 00:30:19.56ID:eKixqxFQ0
最低値+rnd×最大最低の差で乱数になるよ
2020/04/16(木) 00:35:38.28ID:YY8HOOMA0
とりあえず行と列の位置は>>345の画像に合わせて作ったから、あとは適当に修正して

Sub Macro1()
  For 項目 = 1 To 6
    列 = 項目 + 2
    最小 = Application.WorksheetFunction.Min(Cells(6, 列).Resize(30)) * 1000
    最大 = Application.WorksheetFunction.Max(Cells(6, 列).Resize(30)) * 1000
    For サンプル = 1 To 30
      行 = サンプル + 5
      If Cells(行, 列) = "" Then
        Cells(行, 列).NumberFormatLocal = "0.000"
        Cells(行, 列) = Application.WorksheetFunction.RandBetween(最小, 最大) / 1000
      End If
    Next
  Next
End Sub
2020/04/16(木) 00:52:18.67ID:YY8HOOMA0
>>351の方法を取り入れてみた

Sub Macro1()
  For 項目 = 1 To 6
    列 = 項目 + 2
    最小 = WorksheetFunction.Min(Cells(6, 列).Resize(30))
    最大 = WorksheetFunction.Max(Cells(6, 列).Resize(30))
    幅 = 最大 - 最小
    For サンプル = 1 To 30
      行 = サンプル + 5
      If Cells(行, 列) = "" Then
        Cells(行, 列).NumberFormatLocal = "0.000"
        Cells(行, 列) = Rnd() * 幅 + 最小
      End If
    Next
  Next
End Sub
354デフォルトの名無しさん (ブーイモ MMcf-IW4T)
垢版 |
2020/04/16(木) 01:25:57.84ID:ltLJf2qHM
>>353
神様過ぎびっくりです。

セルをクリックすると.0754322457888とか小数点が残ってるのですがこれを
EXCELのROUND関数みたいに四捨五入した状態でここに出力するようにできますか?
四捨五入で0.000の桁で出力できたらもう
職場の2人が失職してしまうレベルです
2020/04/16(木) 01:33:01.52ID:5emHbHZx0
それくらい調べたんかな
2020/04/16(木) 01:41:31.92ID:YY8HOOMA0
>>354
Cells(行, 列) = Round(Rnd() * 幅 + 最小, 3)

実際、ごく簡単なマクロで仕事を効率化したおかげで毎年たくさんの失業者が出てるからほどほどにな
経営側でなければ、サビ残がなくなるぐらいのところでやめとけよ
357デフォルトの名無しさん (ブーイモ MMcf-IW4T)
垢版 |
2020/04/16(木) 01:59:01.29ID:dFCopLc9M
>>356
神様ありがとう。涙出てきました。
358デフォルトの名無しさん (ワッチョイ ff8e-eUuY)
垢版 |
2020/04/16(木) 02:43:35.11ID:Kf4avcM70
>>357
またこの間の馬鹿か
2020/04/16(木) 03:23:43.55ID:KenjGRyod
無意味なデータ入力に数百万の人件費を払う会社か
すげーな
マクロで解決するより、その作業をなくす方法を真剣に考えた方がいいんじゃないか?
2020/04/16(木) 08:08:02.24ID:IIRVmVIhr
コード教えて君もいるし、PC博士気取れるから教えちゃうやつもいる
2020/04/16(木) 08:16:07.12ID:Br0d9N6Q0
一時しのぎにはなっても長い目で見れば迷惑にしかならない
2020/04/16(木) 10:34:35.59ID:HIOPYfc5a
自力でマクロも書けんやつが作ったマクロで会社の経理やるなんてブラック企業しかない
2020/04/16(木) 11:54:49.56ID:wE+PDO4Yd
4月は零細の新入社員が単純作業をマクロでどうにかしようとがんばる時期
2020/04/16(木) 11:56:31.62ID:RK65w6zF0
そして保守できずに五月病で辞める
2020/04/16(木) 12:13:47.85ID:6vJJDJtDM
>>363
もともと99%はブラックだし
会社の規模とか無関係に
2020/04/16(木) 12:29:59.97ID:mPB4Kayur
初歩的な質問なんですけど、ロック付きのブックを編集してSaveAsやcloseで保存したときにロックなしのブックにしたいんですが、どうやればできますか?
2020/04/16(木) 12:54:20.23ID:cYWHpILcM
>>366
イベントプロシージャにロックを外す処理を書けばいい
2020/04/16(木) 13:43:07.44ID:pZjivNa8a
ロックかけた人に外してもらう
2020/04/16(木) 13:47:25.66ID:pZjivNa8a
俺に会社の経理やらせてくれたら自分の口座に自動で入金する処理入れるよ
2020/04/16(木) 14:50:28.74ID:xWZcVh5Wa
画像フォルダのファイル名を取得→ファイル名と同じ文字列の入ったセルに画像を挿入→画像をセルのサイズに合わせるというサンプルコードを見つけたのですが
画像フォルダ内にファイル1〜5まであり、エクセル内にファイル1の文字列がない場合、「オブジェクト変数またはwithブロック変数が設定されていません。」のエラーが出ます
おそらくIFでその場合の処理を設定すればよいのではと思うのですが、変数の設定の仕方が分からないです
昨日今日始めたネット聞きかじりの知識で申し訳ございませんがアドバイス頂けないでしょうか
2020/04/16(木) 15:01:25.35ID:YY8HOOMA0
>>370
まずはうまく動かないコードをここに書いて
2020/04/16(木) 15:08:48.79ID:RK65w6zF0
こらはまたコード出してくれるの待ってるクレクレ君
2020/04/16(木) 15:11:15.02ID:xWZcVh5Wa
>>371
ネット丸パクリのコードだけど

Sub sample04()
Dim objShape As Object
Dim strPath As String, strFileName As String
Dim strImgName As String

strPath = "c:¥temp¥"
strFileName = Dir(strPath & "*.jpg")

Do Until Len(strFileName) = 0
strImgName = Left(strFileName, Len(strFileName) - 4)

Cells.Find(What:=strImgName).Activate
ActiveCell.Offset(0, 1).Activate

Set objShape = ActiveSheet.Shapes.AddPicture( _
Filename:=strPath & strFileName, _
LinkToFile:=False, _
SaveWithDocument:=True, _
Left:=ActiveCell.Left, _
Top:=ActiveCell.Top, _
Width:=ActiveCell.Width, _
Height:=ActiveCell.Height)

strFileName = Dir()
Loop

End Sub
2020/04/16(木) 15:12:43.83ID:xWZcVh5Wa
最終的には画像1-4はシート1、5はシート2みたいな感じに貼りたいんだがとりあえず画像1の文字列ないとエラー起こすのを直したいです
2020/04/16(木) 16:37:22.10ID:V7jYJHWg0
どこでエラーが起きてると思う?
検索して見つからなかったセルに対して何かをしようとしたから、何に対してやるんだよーってエラーが起きたんだよ

コードを見ると、Findメソッドの戻り値に対して直接Activateしてるから、そこをばらす必要があるので、一旦戻り値を変数に受けるといい
セルはRangeオブジェクトで、 Findメソッドは通常、Rangeオブジェクトを返す
オブジェクトを変数に代入する場合は、 Set をつける
見つからなかった場合はFindメソッドはNothing を返す
オブジェクトの比較には、Is を使う 例: If Not(r is Nothing) Then 〜

あとはがんばれ
376デフォルトの名無しさん (ワッチョイ ff8e-eUuY)
垢版 |
2020/04/16(木) 17:37:30.19ID:Kf4avcM70
馬鹿がコピペで作ったものは使い物にならない
2020/04/16(木) 18:14:58.11ID:mPB4Kayur
>>367
ありがとうございます。やってみます
2020/04/16(木) 18:19:31.46ID:YY8HOOMA0
Sub sample04()
  Dim objShape As Object
  Dim strPath As String
  Dim strFileName As String
  Dim strImgName As String
  Dim rngStatus As Object
  strPath = "c:\temp\"
  strFileName = Dir(strPath & "*.jpg")
  Do Until strFileName = ""
    strImgName = Left(strFileName, Len(strFileName) - 4)
    Set rngStatus = Cells.Find(What:=strImgName)
    If Not (rngStatus Is Nothing) Then
      rngStatus.Offset(0, 1).Activate
      Set objShape = ActiveSheet.Shapes.AddPicture( _
      Filename:=strPath & strFileName, _
      LinkToFile:=False, _
      SaveWithDocument:=True, _
      Left:=ActiveCell.Left, _
      Top:=ActiveCell.Top, _
      Width:=ActiveCell.Width, _
      Height:=ActiveCell.Height)
    End If
    strFileName = Dir()
  Loop
End Sub
2020/04/16(木) 18:52:45.98ID:Cbge2SK50
>>369
自動なのにトロイ処理とはこれいかに!
2020/04/16(木) 19:18:26.95ID:np7lPiVv0
>>342
「それより前(左)にある全ての測定値を参考に」が仕様としては曖昧模糊としてる気がする。
2020/04/16(木) 19:21:15.56ID:XXRRqnVg0
>>375
>>378
ありがとうございます、動かしながら理解していこうと思います
2020/04/16(木) 20:15:43.63ID:/BsiXYGwd
>>338
知らねーよ。
10年以上前の、他社から引き継いだ、正直全部書き直したいけど今動いてるからそっとしておいてるコードだよ。
2020/04/16(木) 21:03:51.84ID:l2cOjNdn0
指摘されたら他社とか言い出してて笑うわ
384デフォルトの名無しさん (ワッチョイ d7ae-84Hj)
垢版 |
2020/04/16(木) 21:21:39.75ID:Gr+82O4W0
>>381
理解もできない代物を知らない誰かの作ったコードで動かそうという馬鹿
2020/04/16(木) 22:03:58.10ID:5vefqm3N0
理解してないコードを使う無能に仕事やらせるとかやっぱブラックだったか
2020/04/16(木) 23:38:37.29ID:NQ0wsZwj0
そもそもexcelVBAって素人が頑張って自動化してみましたってのが99%なんだから
そういうのをメンテしなきゃならない羽目になったって話だろ
プログラム板の中では異質なスレなんだと思う

コードレビューとか言ってるやつは確実にアスペ、そういう事情が想像出来る脳みそが生まれつき備わってない
相手するだけ無駄
2020/04/17(金) 00:46:06.16ID:TM3fWeSx0
他の誰かがってのは全部言い訳
仕事してメンテするなら自分自身が目の前の有りものを完全理解しないといけない

事情は関係ない
仕事としてやる以上自分の責任として取り組むべき
それを怠って開き直るのは無責任であり無能でありいつまでも何も成せない

趣味ならしらん
2020/04/17(金) 01:58:25.17ID:d5pl8NtJ0
>>386
素人がつくろうが会社で使うんだろう
2020/04/17(金) 05:06:04.15ID:K8Kq74SuM
>>386
> 今、他人のそういうコードで四苦八苦してる。

> 今動いてるからそっとしておいてるコードだよ。

言うことコロコロ変わりすぎw
2020/04/17(金) 17:04:26.22ID:hqq8FpSv0
散々ここで聞きまくって不快な思いをさせた物ですが完全に職場での運用に成功しました。
本当にみなさんのおかげというか頭良すぎですねここの人は…
フォルダ内にあるtxt全ての任意の列行を片っ端からエクセルにコピーする
空白の部分は乱数で処理
この辺は無知にとってはえげつないです。
提案で出そうと思ったらもっと大きな発表テーマで使うぞと言われました。
100のワークの測定データを作るのに2日かかってたのが5分でテンプレートに出力完了…
2020/04/17(金) 18:42:59.04ID:35vznKDBM
>>390
馬鹿は死ねよ
392デフォルトの名無しさん (ワッチョイ b7e6-R0o5)
垢版 |
2020/04/17(金) 18:48:40.08ID:M4VM/pj30
せっかくtxtという利用しやすいデータ形式なのに
わざわざxlsなんかにしちゃって
トドメとばかりにゴミデータをインプラント

面白い人だな
2020/04/17(金) 19:49:43.28ID:d0l4uzMSd
>>383
実際そうだし、というか、そんなの多いぞ。
2020/04/17(金) 19:52:36.64ID:d0l4uzMSd
>>386
素人じゃないと思うよ。
形の上では。

お客は自ら作るという会社では無い。
作ったのは請け負っている会社だよ。
コメントに会社名らしきものが書かれてるし。
2020/04/17(金) 19:58:42.41ID:d0l4uzMSd
>>389
あのね、客の要望は有るんだよ。
要望に答えるためには、今動いてるものも解析しないと答えられるわけが無い。
そのコ一ドが何やってるかわからずに機能追加なんてできるわけが無い。

というか、こんなのVBAに限らず開発やってる会社なら何処でもある話だけどな。
ここには開発専門で仕事したことのある奴が少ないということか。
2020/04/17(金) 20:10:16.78ID:SpmVGRc5M
他社が作ったコードを客の要望で機能追加
しかもVBA
そんなズタボロの状態で開発専門とか大丈夫かよw
2020/04/17(金) 20:49:15.97ID:d5pl8NtJ0
>>394
その会社名らしきところに使用料とか払った?
それともその会社に無断で会社名入りのファイル使ってるの?
2020/04/17(金) 21:12:50.72ID:zPgoaBKN0
自分で書いたコードでも嫌です
2020/04/17(金) 21:26:37.34ID:d0l4uzMSd
>>396
今まで幾つかの開発会社で働いたが、どこでもある話。
VBAにも限らない。
まあ、日本語変数とか日本語関数はVBA以外では聞いたこと無いけどな。

前のコードが酷いので、書き直したらもっと酷くなったなんて、某SE本にも書いてあった。
2020/04/17(金) 21:28:25.17ID:d0l4uzMSd
>>397
プログラムは客のもんなので、そんな話にゃならねーよ。
普通はそうなる。
客のもんになってない例もあるかもしれんが見たこと無い。
2020/04/17(金) 21:30:17.79ID:d0l4uzMSd
>>397
これ、VBAの話ね。
コンパイルする言語の場合はそうでない例があったな。
2020/04/17(金) 21:52:47.98ID:z6C6Zgo5M
>>400
> プログラムは客のもんなので

> 他社から引き継いだ

ボロ出し過ぎw
2020/04/17(金) 22:02:00.02ID:yYE4gKbd0
いい加減、他人の宿題とか仕事とかに安易に回答与えるのやめたほうが
いいんじゃないかと。
2020/04/17(金) 22:44:22.88ID:j6CUwBsl0
大手から零細まで、色々なところで仕事してきたけど、会社によっては日本語の関数とか変数は別に珍しくなかったな
2020/04/17(金) 23:04:41.99ID:tPgd0P7Wa
現実問題として、VBAで複雑なマクロを書くと重くて動かないと思うんだけどな
それでも我慢して使っているのかな?
2020/04/18(土) 08:44:33.63ID:FzSpO5p/0
Excelでポリゴンゲー作るとか、
相当極端なことをしない限り大丈夫。
2020/04/18(土) 09:44:05.01ID:QhOAvRvA0
複雑な処理だからって重くなることはないだろ
重い処理をするから重くなるのであって
2020/04/18(土) 12:59:54.88ID:DE4BsnuO0
>>402
お前、事務員だろ。
自分のボロに気付いて無いw

開発会社で働いたことある奴ならすぐわかる。
2020/04/18(土) 13:06:18.62ID:DE4BsnuO0
>>405
スキルの低い奴はそうなる。
もちろんVBAは遅いけど、VBAで実施するようなことで、どうしても遅くなると想定されるような処理は殆ど無い。
VBAで実施するようなことじゃなければ別だが、そういう話はあまりない。
2020/04/18(土) 13:08:05.25ID:DE4BsnuO0
>>404
話には聞いたことがあるが、自分が目の当たりにしたのは今回が初めてだ。
2020/04/18(土) 13:16:31.33ID:XwSVwu50d
関数名だけ日本語ってルールにしてるところは見たことがある
意外と見づらくなかった
2020/04/18(土) 13:29:04.29ID:bylan2xBM
>>408
> 開発会社で働いたことある奴ならすぐわかる。
なら詳しく説明してみなよ
客のものを勝手に引き継ぐとか犯罪だぞw
2020/04/18(土) 13:33:12.64ID:jvR0dANmM
>>411
まあ、読むのは慣れだと思う
慣れればそんなに苦じゃないし意味不明な英訳調の関数名や変数名よりマシ
ただ入力がかなり面倒
2020/04/18(土) 13:38:19.65ID:DE4BsnuO0
>>412
???
日本語が理解出来ない人?

客が依頼していた開発会社を変えただけのことだろ。
10年前依頼されてた開発会社のコメントがソースにあったが、プログラムは客のもんだ。
今、依頼されてるうちの会社がどうして10年前に依頼されてた会社の了解を取る必要がある?
2020/04/18(土) 13:43:26.52ID:DE4BsnuO0
>>412
というかね、こんなの普通によくあることだぞ。
別会社のコメントなんて何度も見たことある。

開発会社で働いたことあれば、そんな所に違和感なんて感じないだろ。
2020/04/18(土) 13:53:22.59ID:oUZZgMAe0
ソースコードの著作権をどっちがもつかは契約によるぞ
著作権をシステム会社側がもってるのに違う会社に開示したらそれは違法行為
知らずにやってるってのは昔はよく聞いた

10年前に依頼されてた会社の了解を取る必要はないが
普通はソース開示受けるなら開示元に著作権の確認はする
2020/04/18(土) 14:00:07.44ID:DE4BsnuO0
>>416
そんなの常識だろ。
だが、そこまで分かってるなら結論も容易に想定出来ると思うんだが。

VBAの開発ではExcelならブックそのものにソースが付いてくるし、実質派遣のような形態も多い。
つまり、契約上客のもんになってると想定するのが普通。
2020/04/18(土) 14:01:39.81ID:DE4BsnuO0
ここで言ってる想定ってお前のことだからな。
そんな想定も出来ずにいちゃもん付ける奴に言ってる。
2020/04/18(土) 14:04:14.62ID:p9WER9c7M
>>414-415
> 客が依頼していた開発会社を変えただけのことだろ。
それ引き継ぐなんて言わんだろ
お前の会社から見たら単に客から改修を依頼されただけ
元のソースを別会社が作ってたか客が作ってたかなんて関係ないし

> 日本語が理解出来ない人?
お前の日本語がおかしいだけ
まあどんどん辻褄合わなくなってるだけとも言うがw
2020/04/18(土) 14:05:27.78ID:DE4BsnuO0
>>419
???
言うだろw

日本語を理解出来なかった言い訳が見苦しいw
2020/04/18(土) 15:07:20.22ID:oUZZgMAe0
>>419
日本語がおかしいというより、自分の脳内理解が共通認識だって信じて疑わない人だったようだぞ
かまった俺も悪かったが、俺は今後スルーするからお前もそうしろ
2020/04/18(土) 15:20:13.12ID:mWjkYk7T0
スレ違いになってきてるとは思うが。

最初のほうの386には
「そもそもexcelVBAって素人が頑張って自動化してみましたってのが99%なんだから
そういうのをメンテしなきゃならない羽目になったって話だろ」
って書いてあって、
ここ数レスはプログラム(開発資産)として引き継いだ中のVBAソースコードに焦点が当たってるように見える

まず引き受けた方がプロ(仕事としてVBAをやる)として、
前者ならドキュメントとかなくても(時間さえあれば)改修も簡単だろう。
後者ならドキュメント残してないやつ、もしくはそれを知らずにスキルもなく引き受けたやつが悪い。

まあこんな、前提とゴールをあやふやにして不毛で幼稚な言い合いをしたいなら別にスレを立ててろ
2020/04/18(土) 15:25:44.82ID:R5ze2oyiM
>>420
> 言うだろw
言うのはお前だけなw

>>421
知ったかが盛って語ったら引っ込みつかなくなったパターンだと思う
2020/04/18(土) 15:45:18.98ID:DE4BsnuO0
>>422
開発やったこと無い奴だから簡単等と言えるw
確かにドキュメントは無いが、あっても他人のコード読むのは大変だぞ。
2020/04/18(土) 15:47:00.47ID:DE4BsnuO0
>>423
引き継ぎって言葉分かってる?
それに、想像力があれば一番最初の段階で想定できるような話なんだがw
2020/04/18(土) 15:51:30.21ID:DE4BsnuO0
引き継ぎ 開発でクグったら最初の3つとも他社からの引き継ぎのことが書いてあったわw

開発会社じゃ当たり前のことなんだけどなw
2020/04/18(土) 15:56:09.94ID:MLXwdj/hM
でもググったURL
2020/04/18(土) 15:56:30.59ID:MLXwdj/hM
は出せないw
2020/04/18(土) 15:59:10.55ID:DE4BsnuO0
>>422
ああ、素人のコードを引き継いだとしたらの話か。
まあ、素人の短い簡単なコードならその通りだな。

まあ、>>394に書いた通り、形の上では開発会社らしき所のコードだし、コード量も多いからねえ。
VBAはそういうの多いんだよ。
形では仕事で受けてても素人のコードとか。
2020/04/18(土) 16:01:12.79ID:DE4BsnuO0
>>427
出しても構わんがw
マナー的に出してないだけでw

というか、お前もググって見てから言えよ。
事務員の上にググることさえ出来ないのかよw
2020/04/18(土) 16:21:35.89ID:N9jsIxO7M
出しても構わんけど出せない
うんうん、そうだろねw
2020/04/18(土) 16:40:22.00ID:DE4BsnuO0
>>431
ググれないバカに出してやろうwww

システムの保守ベンダー変更による引き継ぎ
https://www.lanscope.jp/tips/8797/

他社開発システム・アプリケーション保守引継ぎ
https://www.stylez.co.jp/apmt/

他社が開発したシステムを引き継ぎます
https://www.tpc.jp/%E4%BB%96%E7%A4%BE%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%81%AE%E5%BC%95%E5%8F%97/

他社が開発したシステムも開発を引き継ぎ保守します。
https://kusanagi.dht-jpn.co.jp/2019/04/yamahakusanagi/

他会社が受託開発したPHPのWEBシステムを引き継ぎ運用し、その後の改修対応などを行うことがあります。
https://qiita.com/xylitol45@github/items/271f2b8e5de3e62d0840

そのWebサイト・システムの保守引き継ぎます。
https://www.accent.co.jp/lp_hosyu/
2020/04/18(土) 16:46:17.35ID:DE4BsnuO0
>>423
な、お前のような素人だけだよw
客が依頼してた会社を変えて、引き受けたのを引き継ぎとは言わないのはwww
2020/04/18(土) 17:45:11.63ID:JSVuvQDyM
必死にググったのは褒めてやるよw
でも、それ運用とか保守の話だろ
そりゃそう言うのは連続してるから引き継ぎって言うだろうけど、10年前の他社のコードの改修を引き継ぎとは言わんわな
2020/04/18(土) 17:51:35.98ID:HTrBhqa/0
微妙にニュアンスがずれてる気がするけど
わざと?
2020/04/18(土) 19:45:41.80ID:SSjF6x8Y0
他でやれ
2020/04/18(土) 22:46:28.51ID:DE4BsnuO0
>>434
必死?
一発で出たぞwww

またボロが出る。
開発は作って終わりだと思っているのか?
普通は保守へと継続していくもんなんだが。
何も知らんのなw
2020/04/18(土) 22:51:16.48ID:Yw55XdRL0
>>410
ブラック・ショールズ式ってのが金融の世界にあるんだが、これをググって
初めて日本語の変数見て目が点になったw
439デフォルトの名無しさん (ワッチョイ 5701-7wDT)
垢版 |
2020/04/19(日) 05:44:09.18ID:wxLF5u+B0
質問していいのか?
グラフの近似式をセルにコピペするマクロだ。
2020/04/19(日) 06:21:55.35ID:fnnke5O7M
あらら、他社のコードの保守まで受託してるって話にするの?
そういうケースだと普通はドキュメントも貰ってるはずだけどろくなドキュメントがないって話かな
そんなハイリスキーな受託して>>325みたいな愚痴こぼしてるなら知能の足りない会社と言われてもしょうがないじゃん

まともな会社なら受ける時に調査費用と時間をもらってドキュメントを起こし直す
でないと保守できないから
>>437は保守が何をするのかすらわかってなさそうw
2020/04/19(日) 06:29:22.92ID:NooYP4/SM
>>439
コピペは難しい、普通にセルに直接ぶち込め
って書かれてるぞ
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14139043119
2020/04/19(日) 08:34:09.85ID:/XkpxjBrr
近似式をテキストとしてセルに貼るとこまでできたが、そのテキストから係数を得る方法はないですか
2020/04/19(日) 08:38:32.44ID:/XkpxjBrr
近似式をセルに落とし、計算する作業が大量のあるためです
2020/04/19(日) 09:19:45.38ID:BXvk/jUs0
>>440
プw
引き継ぎって知らんの?
いい加減、恥を晒すだけだぞw
というか、VBA案件だけの話だと思ってる?
爆笑もんだw

1つの客から1つの案件だけのわけね―だろ。
寧ろVBAの開発はメインじゃね―ぞ。
DBにAccessなんて普通は無いんだ。
バックエンドとか知らんの?
2020/04/19(日) 09:25:23.89ID:BXvk/jUs0
>>440
あと、知らんのだろうけど、ドキュメント類についてはVBAの場合はそうならないことが多いんだよ。

今までいろんな案件で仕事したがドキュメント貰ったことなんて記憶に無いくらいだ。
で、ドキュメント作る時間も無いことも多い。

これはVBA案件の特殊性だろうな。
VBAが言語として糞呼ばわりされる原因の1つだろう。
2020/04/19(日) 09:40:28.30ID:VbzAXKcO0
もうウザイから消えろ
2020/04/19(日) 09:44:05.10ID:wN5KW3ZOM
>>446
無理にこのスレに居なくてもいいんですよ
2020/04/19(日) 10:45:28.85ID:Shwu+G580
>>442
近似式a x + bからa とか bを切り出すってこと?
VBA使わずともエクセル関数で出来るでしょ
RIGHT、LEFT、MIDとか駆使しろ
2020/04/19(日) 10:51:03.45ID:ARSXQ48qM
>>444-445
今度はAccessガーとか言い出したのか
まあ言い出すのがAccess止まりなのが物悲しいけどねw

ドキュメントも作らずに何を保守するつもりなんだよ
言われたらその場であたふた調べてやっつけ仕事でテキトーに改修するのか?
そう言うクズ会社なのはよくわかったよ
2020/04/19(日) 11:52:18.06ID:olPCwpAZa
自宅待機でストレス溜まってんだろなー
2020/04/19(日) 12:04:09.20ID:BXvk/jUs0
>>449
バーカw
今度はじゃね―よw

ある特定の案件だけと考えるバカに教えてやってるだけ。
客からの要望はたくさんある。
VBAなんてたくさんある中のごく一部なのがむしろ普通。

ドキュメント作らずってw
それは最初に受けた会社に言えよwww
現実を知らないニートにゃ分からないんだろうなw
2020/04/19(日) 12:05:45.52ID:BXvk/jUs0
日本語が通じないんだよな。
ドキュメント残してないのがコッチにされてる。
2020/04/19(日) 12:08:31.03ID:BXvk/jUs0
トヨタ並に名前が知られた客から提示されたのがプログラム本体だけで、それ以外何もありませんってことだって有るんだけどな。
結構昔の話だが。
2020/04/19(日) 12:19:58.59ID:FGXaOjnDM
連投バカは日本語が理解できないらしい…
まあ無職の脳内妄想の限界かなw

> まともな会社なら受ける時に調査費用と時間をもらってドキュメントを起こし直す
455デフォルトの名無しさん (ワッチョイ 1701-xa8R)
垢版 |
2020/04/19(日) 22:09:40.02ID:5r3nTnp70
長文質問失礼いたします。

VBAを用いたAscUコード129〜159、224〜252範囲の文字変換が上手くいきません。
環境:Windows10Pro excel2007 VB6.5

上記以外のアスキーコードでは、
@[Chrを用いた、AscUコード→文字への変換] → A[Ascを用いた、文字→AscUコードへの変換]
の順序で2回変換すると最初と最後でコードが一致します。

しかし、129〜159、224〜252の範囲だと、
@変換では「・」、A変換では「-32443」が出力されます。(129〜159、224〜252の範囲ですべて同じ結果)

変換に適した別のコマンドがある、そもそもこのVerでは動作しない等、アドバイスをよろしくお願いいたします。
※大元の目的としては、オシロスコープから取り込んだ画像バイナリデータを画像データにするため、AscUコード→文字への変換を行おうとしています。
2020/04/19(日) 22:31:33.52ID:oozYSe6W0
文字として表示って、その範囲をどんな文字で表示したいんだ?
画像バイナリデータを画像データって、普通画像データはバイナリなんだが

文字として表示しないならとりあえずAscBとChrB使えば一致するんじゃね
2020/04/19(日) 22:31:47.99ID:lQLRo24I0
>>455
アスキーはAscUじゃなくてAsciiな
あと、画像データはバイナリなのに、どうして文字に変換するのかもわからない

方法が間違ってないとして、どこかでデータが化けてる可能性があるけど、どこが悪いのかその文章だけではわからない
まずは変数の型をチェックかな
2020/04/19(日) 22:58:29.23ID:BbIK31/CM
-32443は文字化けした時に表示される文字のコードだから、根本的にデータの受け渡し方法を間違えてる
2020/04/19(日) 23:08:35.55ID:Dosl7noD0
覚え初めてまだ三日だけどなかなかエクセル関数のように簡単にはいかんもんだね…
流石入門といえどプログラミング、敷居が高い
(A1:B1)から羅列されてる数字を(C1:D1)に
コピーしてABS関数で絶対数に変換
こんな事すらなかなか難しい
2020/04/19(日) 23:11:40.25ID:yAfHWdhM0
VBAは覚えることが多いだけで
やってることは関数と大差ない
2020/04/19(日) 23:18:18.40ID:xFnV3YLr0
3日?勉強中とかいって1ヶ月近く経ってない?
462デフォルトの名無しさん (ワッチョイ 1701-xa8R)
垢版 |
2020/04/19(日) 23:20:42.34ID:5r3nTnp70
>>456 >>457
長文の返答失礼します。

>>文字として表示って、その範囲をどんな文字で表示したいんだ?
10進数数字をASCii文字に変換しようとしています。
(66→B 77→M)

>>画像バイナリデータを画像データって、普通画像データはバイナリなんだが
呼び方が不適切だったかもしれません
@画像データ:BM>・・・(Bitmapファイルをテキスト形式で表示したもの)
A画像バイナリデータ:66 77 62 150・・・(上記を10進数変更したもの。オシロスコープからはこの形式でデータを取り込んでいる)

>>あと、画像データはバイナリなのに、どうして文字に変換するのかもわからない
取り込んだAデータを@データ(文字列)に変更、
得られた文字列をファイルに入力し、拡張子を変更して画像ファイルを作成する目的です。

>>文字として表示しないならとりあえずAscBとChrB使えば一致するんじゃね
Chr、ChrB、ChrWでそれぞれ確認したところ、
・Chr
Chr→Asc変換前後で一部データ一致せず。正規データとは一部不一致あり。
・ChrB
ChrB→AscB変換前後で全データ一致。正規データとはほとんど不一致。
・ChrW
ChrW→AscW変換前後で全データ一致。正規データとは一部不一致あり(Chrと正規データの不一致位置と同じ位置)。
※オシロの外付けFDで取り込んだ画像データを正規データ呼んでいます。
※ChrとChrWでは129〜159、224〜252の範囲のデータのみが正規データと不一致だったが、ChrBでは確認した範囲ではすべてのデータが不一致

>>まずは変数の型をチェックかな
オシロスコープから取り込んだAデータは配列のByte型、Chrで文字列に変換した@データはString型です。
2020/04/19(日) 23:33:41.15ID:Dosl7noD0
>>461
やったというより訳も分からずここの人にただ完成させてもらっただけだから俺の本当のVBAの勉強はこれからという感じで
おかげで肩の荷が降りて基礎から学べる幸運な情況ですね
変数の宣言やデータ型は何となく理解して
こっから仕事で簡単に自分でやってけそうな関数をこなせるようにしていきたい

ここの列が空白になるまで指定の列に四捨五入した数値を貼り付け
とか絶対数を貼り付け
あとは数値のバラし
とか覚えていって自職場で簡単なVBAのテンプレート作って行けたらいいなと
464デフォルトの名無しさん (ワッチョイ 1701-xa8R)
垢版 |
2020/04/20(月) 00:04:39.91ID:jmR48CvL0
>>458
アドバイスありがとうございます。

大部分(129〜159、224〜252以外)の文字変換は問題なかったですが、今一度変換方法を再確認いたします。
2020/04/20(月) 00:13:41.98ID:01IV/2aE0
>>462
もしかして、それって何も変換せずにそのままバイナリファイルに書き出せばいいのでは?
テキストファイルとバイナリファイルの違いは、出力方法はわかってる?
2020/04/20(月) 00:54:15.80ID:3RmvNNii0
>>462
だから例えば130や250という数値をどういう文字にしたいんだ?

>Bitmapファイルをテキスト形式で表示したもの
普通に言うビットマップファイルはバイナリだからテキスト形式で表示なんてできないが

というか、たんにいわゆる.BMPのファイル作りたいって話じゃないのか
お前がいってるBitmapファイルってどんなんだよ
なんにせよ出力したいデータフォーマットちゃんと確認しろ
467デフォルトの名無しさん (ワッチョイ ff8e-eUuY)
垢版 |
2020/04/20(月) 01:18:49.70ID:ayPjQ7gM0
なぜ次から次へと馬鹿が出てくるのか
2020/04/20(月) 01:59:49.42ID:7tfcEhPrd
>>467
外出を自粛したり自宅で仕事する人が増えたから
みんな体力とヒマを持て余してる
2020/04/20(月) 02:13:58.53ID:ngLECqIpd
>>462
AscUとかASCiiとか、なんでいちいち気持ち悪い書き方をするのか
こんなん入力するのも面倒だろうに
正式には全部大文字でASCII、許容範囲で小文字ascii、賛否ありそうだけど頭だけ大文字Asciiもギリ許せる、どれかにしてくれ

1文字たりとも間違いを許さない厳密さがないとプログラミングは無理だぞ
2020/04/20(月) 02:14:21.83ID:ngLECqIpd
とにかく、説明がへたくそすぎて、何が悪いのかさっぱりわからん
動かない今のプログラムをここにそのまま書いてくれ
たぶんそれ見た方が早い
あとオシロスコープの機種名も
2020/04/20(月) 03:07:35.60ID:HepRq5En0
勉強しても仕事より辛い
2020/04/20(月) 03:16:22.96ID:0LewM/0Ud
たぶん、こうだな

Open "オシロ画面.bmp" For Binary Access Write As #1 'ファイル名を指定
Put #1, , 変数名 'バイト配列をそのまま全部出力
Close #1 '終了
2020/04/20(月) 06:02:11.72ID:1SCvgf4l0
>>471
就職先間違えたんじゃね
2020/04/20(月) 09:42:05.89ID:kpWyfGjqd
>>454
日本語が理解出来て無いバカニートはお前だろw

>要望に答えるためには、今動いてるものも解析しないと答えられるわけが無い。
>そのコ一ドが何やってるかわからずに機能追加なんてできるわけが無い。

だから>>325で四苦八苦してるんだろ。
ついでに言うと、こっちはちゃんとドキュメント残してる。
でもな、VBAの場合で今まで見聞きした前任者、前任の会社は残して無いことが非常に多い。

開発やってればそういう話、よく聞く話なんだよ。
2020/04/20(月) 09:53:56.27ID:k6bRrEuIM
>>474
マジで日本語理解できないの?
時系列ってわかる?
それとも無職の妄想だから同じ話を繰り返すしかなくなったのか?w

> まともな会社なら受ける時に調査費用と時間をもらってドキュメントを起こし直す

できてないから今アタフタしてるだけだろ
2020/04/20(月) 10:02:13.61ID:8H2k4fX/d
>>475
???
出来てるから今、四苦八苦してるんだが。
解析に苦労してると書いてるだろうがw
2020/04/20(月) 10:04:53.07ID:8H2k4fX/d
ついでに言っとくと、正直に言えばたった今じゃねえ。
2週間程度前の話だ。
でも掲示板で、そんな説明することは無いだろ。
どーでも良い話だからな。
2020/04/20(月) 10:07:15.13ID:8H2k4fX/d
>>475
さらにいうと、お前の言うとおりなら、日本にはまともでない会社だらけになっちまうけどなw
2020/04/20(月) 10:21:33.79ID:RWBNH8g+M
>>476-477
できてるって何が出来てるんだ?
どんどん話が壊れてるぞ

>>478
他社コードの保守はリスク高いから基本受けないし受けるとしたらそれ相応の対価を要求するなんて常識だぞ
言いなりになってそういうのを受けないと死んじゃうクズ会社なら愚痴ってないでまともに働けよw
2020/04/20(月) 10:51:40.63ID:Smt4njnQM
>>479
常識が通用しない現場なんていくらでもある
お前の経験値が足りないのはよくわかったから、あと15年ぐらい、もっと修羅場を経験してから出直してこい
2020/04/20(月) 12:53:38.03ID:zSz1bMm9M
>>480
うん、常識の通じないクズ会社があることは知ってるよ
それが当たり前とか思ってるのが痛々しい
って話ねw
2020/04/20(月) 13:20:10.45ID:+VtGXs+Fa
>>480
結果的に0から作るのと見積額が変わらなくなることも
0から作った方が見積もりが安いこともよくあるw
483デフォルトの名無しさん (ブーイモ MMcf-IW4T)
垢版 |
2020/04/20(月) 17:29:22.02ID:LK5TIQvQM
C5とD5の平方根をE5に入力する
これをC列が空白になるで行う

のシンプルなコード教えてくだせぇ
484デフォルトの名無しさん (ワッチョイ ff8e-eUuY)
垢版 |
2020/04/20(月) 17:33:09.60ID:ayPjQ7gM0
なぜ次から次へと馬鹿が来るのか
2020/04/20(月) 17:47:32.52ID:gp23hNl10
>>483
Columns("C:C").ClearContents
2020/04/20(月) 17:58:37.28ID:01IV/2aE0
>>483 意味不明
>>485 なるほど、うまいな
2020/04/20(月) 20:13:51.99ID:Y6XPlQfH0
まともに勉強してないだけだと思う
2020/04/20(月) 20:20:08.90ID:xfj95GQN0
sqr(sqrt)関数あるんだな
2020/04/20(月) 20:27:38.91ID:326Vj6040
皆様は、同一のブック内で複数のマクロがあり、それらの実行時に共通の処理を
させたいとき(実行しますか?の確認メッセなど)どういうコードを
書いておりますでしょうか。
私は開発→挿入→ボタン(フォームコントロール)にそれぞれマクロを登録して
実行させており、これらのボタンclick時に共通イベントを設定しようと
考えているのですが。非効率的でしょうか。
2020/04/20(月) 20:30:00.63ID:326Vj6040
補足です。現在は共通処理sub作って、マクロごとにそれをcallしておりますが、
そのブックで日々マクロが増加してきており、そのcall一行すら面倒になってきました・・・
2020/04/20(月) 20:37:06.98ID:Y6XPlQfH0
辞書登録でもしておくとか
2020/04/20(月) 20:57:06.86ID:+CR9zmner
>>489
application.callerとselect caseかな
2020/04/20(月) 21:57:48.37ID:326Vj6040
>>492
おお、vba実行時に処理できるメソッドがあったんですね!
自分の勉強不足でした、大変助かりました。使わせていただきます。
2020/04/20(月) 23:00:14.60ID:mqB9NHYzM
Sub 関数SQRT練習() 'B2とC2の0に対してのズレ量でD2で位置度を求めこれを16行までやる。

Dim SQRT練習 As String
Dim Gyo As Long
Dim Ans As Double
Sqroot = ("SQRT練習")
Sheets(Sqroot).Select
For Gyo = 2 To 16
Cells(Gyo, 4) = Sqr(Cells(Gyo, 2), Cells(Gyo, 3)) * 2
Next
End Sub

論外ですか?もちろんピコンピコンエラーまくりです。
B1とC1がもしそれぞれ1なら2.828
それぞれ2なら5.657と
なってほしいのですがお手上げです
495デフォルトの名無しさん (ワッチョイ ff8e-eUuY)
垢版 |
2020/04/21(火) 00:41:08.46ID:XAeWC18v0
なぜ次から次へと馬鹿が湧くのか
496デフォルトの名無しさん (ワッチョイ b7e6-R0o5)
垢版 |
2020/04/21(火) 01:54:12.98ID:FdhLTsrP0
まさか足し算すら出来ないとは夢にも思わないじゃん
2020/04/21(火) 04:14:58.32ID:uRz5dWGWa
sqrt(4) って 2だよね
2020/04/21(火) 04:17:02.05ID:uRz5dWGWa
vbaではsqrか
2020/04/21(火) 08:23:54.51ID:1TfDEjo0d
>>479
あ〜あ。
素人丸わかりw
SEとか、技術者の勉強してるニートかなw

できてるってのは解析する時間もドキュメント残す時間も貰ってるということ。
ということは=それにかかる費用も貰ってるということだよ。
こんなことも理解出来ないのか?

VBAの案件ってのは残念ながら能力の低い奴がやることも多く、常識が通じないことが多い。
なにしろ時給2000円とかでやってる奴も結構いるくらいだ。
俺の場合は時給換算じゃね―けど時給になおしたら最低でも1.5倍は貰わないとやってられねえ。
2020/04/21(火) 08:50:35.54ID:sDUb3bhdM
>>499
> できてるってのは解析する時間もドキュメント残す時間も貰ってるということ。
> ということは=それにかかる費用も貰ってるということだよ。

> 今、他人のそういうコードで四苦八苦してる。

> こんなことも理解出来ないのか?
で、何を理解しろって?
お前の頓珍漢さか?

あと3,000円/hってドヤるほど高くないぞw
2020/04/21(火) 10:52:51.55ID:mWboXDgG0
excelの事務処理で時給3000円は高くね?
2020/04/21(火) 11:40:05.07ID:Jp/GQMh30
何が分からんのか分からんから、とりあえず値2つの合計の平方根を求めるやつをかいた
シート
https://imgur.com/8uy5ETZ

Sub main1()
Dim StartRow As Long, EndRow As Long ' 処理開始行,処理最終行
Dim r As Long ' カウンタ
Dim FirstValue As Long, SecondValue As Long, SumOfValue As Long ' 値1,値2,値の合計
Dim ValueOfSquareRoot As Double ' 値の合計の平方根

Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("SQRT練習")

StartRow = 2
EndRow = 6

' 指定行のみ計算。逐一セルに代入する。計算ステップは細かくしている。虚数となる場合は一律-1をセルに代入。
With ws
For r = StartRow To EndRow
FirstValue = .Cells(r, 2).Value
SecondValue = .Cells(r, 3).Value
SumOfValue = FirstValue + SecondValue
If SumOfValue > 0 Then
ValueOfSquareRoot = Sqr(SumOfValue)
Else
ValueOfSquareRoot = -1
End If
.Cells(r, 4).Value = ValueOfSquareRoot
Next
End With

End Sub
2020/04/21(火) 11:42:34.25ID:Jp/GQMh30
ちょっとだけ汎用的にも書いた
こっちはベテランの叩き台にしてほしい

長いしあんまり突っ込まれると恥ずかしいから画像
https://imgur.com/4pE5uE6
2020/04/21(火) 12:31:16.21ID:1TfDEjo0d
>>500
日本語がまともに出来ないアホには理解出来ないからお前には無理w
何を理解しろって、別にお前に対して理解しろなんて言ってないぞ。
理解出来ないアホさ加減を嗤ってるだけだw

アホだから3,000円/hに突っ込むと思ったwww
最低でもと書いてるんだが。
そもそも、そこに突っ込むんじゃ無くて2000円/hに突っ込め。
そういう所はドキュメント無しで終わってもしようが無い。
2020/04/21(火) 12:40:09.59ID:1TfDEjo0d
>>501
派遣の場合は高い部類に入るだろうね。
力量があって派遣じゃなければVBAでも余裕で超える。
ExcelVBAでのセルとかシート操作の話では無くなるけど。
2020/04/21(火) 12:52:51.59ID:ADUc7MNZM
>>504
> 日本語がまともに出来ないアホには理解出来ないからお前には無理w
結局説明できなくなって理解力ガーとか低能が逃げる時によくやる手で笑うわ

まあどう言い逃れしようとしても
> 今、他人のそういうコードで四苦八苦してる。
って書いたのに突っ込まれたら何か知らんけどできてると言っちゃったアホがいた事実は消せないよw
2020/04/21(火) 12:57:31.51ID:zuguU9RsM
>>501, >>505
派遣で事務処理なら高いほうだと思うぞ
まあ大前春子みたいな奴は知らんけどw
ただ、>>499
> 俺の場合は時給換算じゃね―けど
とか言ってるから正社員なんだろ
ならわざわざドヤる程の額じゃねーよ
ってこと
2020/04/21(火) 14:56:45.54ID:PwHPaaVD0
>>494
「ズレ量」「位置度」の意味がわからん
図を書いて、「ここがズレ量」とか専門用語を使わずに説明してくれ
2020/04/21(火) 15:08:54.15ID:VOMv0cPL0
>>494
たぶん
× Cells(Gyo, 4) = Sqr(Cells(Gyo, 2), Cells(Gyo, 3)) * 2
○ Cells(Gyo, 4) = Sqr(Cells(Gyo, 2)^2 + Cells(Gyo, 3)^2) * 2
2020/04/21(火) 20:34:28.31ID:1TfDEjo0d
>>506
日本語、本当に分からないの?

四苦八苦してたのはその通りだが。
お前は、時間とお金を貰えば穴掘って埋めるだけの仕事でも喜んでやりそうだな。
2020/04/21(火) 20:37:32.58ID:1TfDEjo0d
>>507
正社員www
あの書き方で正社員だと思うかね。

>>505と併せて考えれば普通にフリーと分かりそうなもんだが。
2020/04/21(火) 20:56:47.79ID:PQUXM5VQM
>>510
で、何ができたんだ?
説明できないから穴掘りとかではぐらかそうとしてるのバレバレだよw

>>511
えっ、フリーだと激安だろw
なんでそんなの書いたんだ?
2020/04/21(火) 22:37:42.12ID:9g8Dif430
ブックをコピーするボタンを設置したくて

単純に
ActiveSheet.copy
msgbox "コピー完了"

にしてあるのですが
シートが6つある中で特定の2つのシートでそのボタンを選択すると

このシートはコピー不可 みたいなダイアログだしてコピーをしない
その他の4つのシートでは選択すると今まで通りにコピー
みたいな設定って可能でしょうか
すみません。
2020/04/21(火) 22:59:56.55ID:bkj7Ha2sd
よろしくお願いします

AというブックのA1セルの値を
BというブックのリストというシートのA1からA500までで検索をし、
一致した値がある場合は同列のC〜F行の値を取得し
元のAブックのC1〜F1に貼り付けるVBAを
ご教授ください
2020/04/21(火) 23:03:12.43ID:HzeK5leR0
今どこまで出来てるのかソース貼って
それと1個見つかったら2個以上あっても処理終了?
2020/04/21(火) 23:26:39.84ID:RBZ7Rq7nr
>>513
activesheet.nameでシート名取得し条件分岐
またはボタンを消す
2020/04/21(火) 23:30:41.07ID:PwHPaaVD0
>>513
s = ActiveSheet.Name
Select Case s
  Case "Sheet3", "Sheet6" ' コピーできないシート名を並べる
    MsgBox "コピー不可"
  Case Else
    ActiveSheet.Copy
    MsgBox "コピー完了"
End Select
2020/04/22(水) 00:16:20.28ID:G7FFveIV0
>>513
そのシートのボタン消せばいいんじゃないのか
2020/04/22(水) 01:31:05.24ID:6f1TA8hd0
>>517
出来ました。本当にありがとうございます。
2020/04/22(水) 01:41:45.18ID:tj5eX5rX0
いえいえ
2020/04/22(水) 11:01:53.99ID:TBrfp0e60
>>512
本当に分かってないとはw

調査費用と時間貰ってドキュメント起こすことになっても四苦八苦は変わらん。
お前はバカだから金と時間そ貰えればただ穴を掘って、その場でその穴を埋めるだけの仕事やらされても喜ぶかもしれんが、金や時間貰っても糞コ一ド読まされるのは普通の奴にゃ苦痛なんだよ。
2020/04/22(水) 11:03:37.37ID:TBrfp0e60
>>512
フリーだと激安だってwww
本当に何も分かって無いんだな。
VBAの場合は月70万も行けば良い方だ。
2020/04/22(水) 11:40:39.43ID:yd/WL25UM
>>521
> 調査費用と時間貰ってドキュメント起こすことになっても四苦八苦は変わらん。
ゴメンな、糞会社はそうなんだろうなw

>> まともな会社なら受ける時に調査費用と時間をもらってドキュメントを起こし直す

まあ、そもそもまともな会社は
>>522
>> 日本語の理解力がないのかな?
>> 自慢にもならないことをいちいち書くとかバカじゃね?

まさかと思うけど3,000円/h相当の俺スゲーとか思ってる?w
2020/04/22(水) 11:48:33.04ID:JonPflQBM
すまん途中で送信しちまった

>>521
> 調査費用と時間貰ってドキュメント起こすことになっても四苦八苦は変わらん。
ゴメンな、糞会社はそうなんだろね
お疲れ様

>> まともな会社なら受ける時に調査費用と時間をもらってドキュメントを起こし直す

まあ、そもそもまともな会社は他社の糞コードの保守なんて滅多に受けないし

で、何ができたんだ?
>>510では過去形だけど>>325では今まさにやってることになってるけど、偶然この一週間で終わったのかな?
ますます辻褄合わせが大変になってるぞw

>>522
>> 日本語の理解力がないのかな?
>> 自慢にもならないことをいちいち書くとかバカじゃね?

まさかと思うけど3,000円/h相当の俺スゲーとか思ってる?
2020/04/22(水) 12:11:09.80ID:tj5eX5rX0
こういうのってこうやって段々長文になっていくよなw
2020/04/22(水) 12:39:44.42ID:rSQQIqcfM
客は選べない
クソな仕事でも黙々とこなすやつが結局は上に上がってく
文句ばっかり言うやつはそこまでの人間
2020/04/22(水) 12:42:08.80ID:TBrfp0e60
>>523
プw
他人の書いたプログラム見たことすら無いとはw

まともに開発に絡んだことがあれば100人が100人他人のコードなんて読みたく無いんだよ。

引き継ぎという言葉も知らない、ググることも出来ない、保守という仕事が何をやるかも分からない。
二―トが背伸びは恥の元だぞ。
2020/04/22(水) 12:44:28.51ID:TBrfp0e60
3000円/hが自慢?
何を言ってるんだ?
3000円/hは最低限の話だが。

アホだからそこに反応する。
2000円/hが主題だと言ってるだろうに。
2020/04/22(水) 12:47:10.01ID:TBrfp0e60
>>526
客は選べない。
クソな仕事でも黙々とこなすやつが結局は上に上がってく
文句は客のいない所で発散する。

当然だがね。
2020/04/22(水) 12:51:44.35ID:M+DGBLrr0
暇なのはわかるけど
何日ひっぱるつもりなん
2020/04/22(水) 12:58:15.17ID:4ePZRvo/M
たびたび済みません
元のVBAのフォーマットから
新しいブックをコピーを教えて頂いたのですが
コピーする度に1回目にコピーしたブック内のシートの右に足されていく みたいな設定は可能ですか?


具体的に言うと4月分をコピー
その次に5月分、6月分とコピーすると
初回(4月分)にコピーしたブックのシート右に足されていく

さらに欲張ると元のフォーマットで4月とか5月とか特定のセルに入力した文字がそのままシート名になってくれる

すみませんがやり方ありましたら御教授を宜しくお願いします。
2020/04/22(水) 13:20:05.68ID:RF8jAbo1M
>>527-529
指摘されて顔真っ赤になって3連投とかw

> 3000円/hは最低限の話だが。
自ら最低限を認めるとか偉いやん
で、なんでそんな恥ずかしい金額をいきなり出してきたんだ?w
2020/04/22(水) 14:11:10.05ID:PH7WDass0
>>514
例えばA!A1にリンゴっていれると単価だか購入数だかをB!から拾ってきてA!C1〜F1に入れる感じの物?

多分VBAというよりエクセル関数VLOOKUPで済む話かと
VLOOKUP(A!A1, B!A:F, 3)
2020/04/22(水) 14:31:43.03ID:YnJWUcMz0
社内システムで書類となったものの特定の場所の値とエクセルの上の特定の場所の値が合っているか照合したいです。

そういったマクロ組む場合
1. 書類をスキャナーでpdfにする。
2. pdfをocr機能使って照合に使うシートとは違うシートにデータ転記。
3. 2.でデータ転記したシートの値と確認元のシートの値を照合する。

というのがぼんやり浮かんでるんですが、1-3までの流れでよりスマートな方法があるなら上の流れをどう変えたらいいか教えていただけませんか?
よろしくお願いいたします。
535デフォルトの名無しさん (ラクッペペ MM34-eHaU)
垢版 |
2020/04/22(水) 14:47:15.65ID:lF2YSEgcM
マクロで何とかなるスキャナーやOCRならいいんじゃないの?
2020/04/22(水) 15:04:32.48ID:TBrfp0e60
>>532
日本語、ダメ過ぎwww
ここまで壊滅的に日本語出来ない奴は仕事も出来ないからニートになるw

"引き継ぎ"で恥かいたからってむきになるなよw
2020/04/22(水) 15:26:26.42ID:7QCXjzFAM
今度はニートとか言い出したぞw
恥ずかしい奴

>> 結局説明できなくなって理解力ガーとか低能が逃げる時によくやる手で笑うわ
2020/04/22(水) 17:33:29.11ID:jDnlGnaS0
>>534
OCR読み取りまでできるなら転記とかいらんけど
社内システムに、その数字をシステム的に参照できるAPIを準備してもらえよ
2020/04/22(水) 17:47:01.75ID:YnJWUcMz0
>>535-538
csvファイル関連のapiもかなり時間かかったので開発をつついてみます。
ocr使ってデータ転記しないと私の能力と使えるソフトやapiでは座標指定ができないから回りくどいやり方するつもりです。
今のところGoogleクラウドのocrがapi公開してるからそれにしようかなとぼんやり思ってるとこです。
アドバイスありがとうございました。
2020/04/22(水) 18:42:39.01ID:TBrfp0e60
>>537
最低限ってのは俺が受けるとしたら最低限3000円/hは貰わないと受けないという話。

こんなの分からないのお前以外いない。
これまでのやり取りも酷いし、"引き継ぎ"についても分からない。
致命的だよ。
2020/04/22(水) 18:50:25.53ID:TBrfp0e60
>>537
あと、その変な引用とアンカ―どうにかならんのか?
2020/04/22(水) 19:58:37.32ID:UdDG4RF8M
>>540
> 最低限ってのは俺が受けるとしたら最低限3000円/hは貰わないと受けないという話。
まじで言ってるのか?
勤め人ならそれでいいけどフリーだと税金や年金とかも自己負担だからやり始めた時ならともかく普通は5,000円/hでも不安だよ

> これまでのやり取りも酷いし、"引き継ぎ"についても分からない。
そういう御託は…

で、何ができたんだ?
>>510では過去形だけど>>325では今まさにやってることになってるけど、偶然この一週間で終わったのかな?

にまともなレスできるようになってからほざけよw

>>541
どこにアンカーがあるんだよw
あと>>の意味もわからんとか馬鹿すぎる
2020/04/22(水) 20:13:28.16ID:bDGlwx+F0
おまえら能ある鷹は爪を隠すってことわざ知っているか?
2020/04/22(水) 20:18:29.36ID:Al75grru0
ここは質問スレ
ルールを守らないやつには誰も仕事なんか頼まない
2020/04/22(水) 22:05:00.09ID:M+DGBLrr0
爪出してないしとか言いそう
2020/04/22(水) 22:35:47.35ID:86ULQnrYa
そもそも爪がない
2020/04/22(水) 23:56:54.01ID:ioC/S0KO0
CSVはComma Separated Valueの略ですが、
Commaはわざわざ略さなくても、既に,があるんだから、そのまま,SVでいいと思うんですよ。
2020/04/23(木) 00:04:13.90ID:WrYMug8t0
で、VBAの質問なんですが、何にもないプロシージャって、何か使い道はありますか?
普通は全然意味ないと思うんですが、なんていうか0番スプライト的な感じで。

Sub Test()
End Sub
2020/04/23(木) 00:22:20.73ID:IA7mxVD60
>>547
TXT,,SVより
TXT,CSVの方が誤読しにくい
2020/04/23(木) 00:30:31.41ID:/DzsyJb70
誤読とか以前にわかりにくすぎるわ
一体何がいいのか
2020/04/23(木) 01:00:46.60ID:tvgCM2UH0
今さらcsvの命名にケチつけるなんて、極論が好きな反抗期なんだろ

中身のないプロシージャの意味とか、それ質問する理由も書かないしな
2020/04/23(木) 02:10:50.59ID:q29uZhI+a
>>548
あるかないかならある
2020/04/23(木) 02:29:45.14ID:4BIs3zJP0
>>542
バーカw
VBAで5000/hの仕事なんてあるわけ無いだろw
ニートはこれだからw

御託?
お前が"引き継ぎ"という言葉の使い方について反論出来なくなっているわけだがw
反論あるならどうぞw

>>510での過去形について、分からんのか?
レスもまともに読めないのか。
>>477を読めw

引用に>>使うアホはいない。
2020/04/23(木) 03:04:53.13ID:Yau2aIj5d
木曜日にワッチョイが切り替わるんだよなあ
めんどくせえ
2020/04/23(木) 05:14:45.28ID:Bp33q84zM
> 今、他人のそういうコードで四苦八苦してる。

> ついでに言っとくと、正直に言えばたった今じゃねえ。
> 2週間程度前の話だ。

なんだそのバレバレな言い訳はw
流石に恥ずかしくないのか?

そもそもそれが本当だったとしても>>476
> 出来てるから今、四苦八苦してるんだが。
が意味不明なのは変わらんし
何ができて、何に四苦八苦してるのか書いてみ

> 引用に>>使うアホはいない。
まじでわかってないのかよ…
自分自身への引用を明示してるだけだぞ
馬鹿すぎるわ
2020/04/23(木) 08:02:32.37ID:WPkfNDtBr
VBA質問スレで必死になるのはちょっと恥ずかしいよなあw
2020/04/23(木) 09:42:16.36ID:4BIs3zJP0
>>555
日本語勉強しろw

言い訳?
何を言ってる?
何の言い訳だよw
四苦八苦してる(た)ことに何も変わりはないぞ。
これのどこが言い訳になるんだ?

2週間前に四苦八苦してたとしても、こういう掲示板で発言する時は今四苦八苦してると発言することは十分あり得ると>>477で言ってる。
発言の主旨が変わらないからな。
そして、それがお前に何か指摘されたとか、自己弁護の為に言っているわけじゃないことは時系列から明白。

言い訳?
2020/04/23(木) 09:51:26.69ID:4BIs3zJP0
>>555
解析する時間もドキュメント作成する時間も費用も貰っているが他人のコード解析するのに四苦八苦してるんだがね。
これのどこが変なのかさっぱり分からん。

何ができて何に四苦八苦してるかの前に、お前は俺が何が出来てないと思ってるのか言えよ。

今までの話じゃ、お前の主張は解析する時間、ドキュメント作成する時間や費用を貰うと四苦八苦することが無くなるということのようだが、そんなこたあねえぞ。
2020/04/23(木) 09:51:33.56ID:dNGhRpxuM
>>557
「何ができて」の説明が一切なくて失笑
2020/04/23(木) 09:52:35.44ID:4BIs3zJP0
自分自身への引用でも>>なんて使わん。
>で十分だし、普通。
2020/04/23(木) 09:55:24.79ID:TqAmz8xEM
>>558
ドキュメント作成してるのに四苦八苦してるなら役に立たないドキュメントを作ったお前がアホなだけだけど?

あと、せめてレスを1つにまとめろよ
なぜかバカは同じ内容に複数レスで返すんだよな
まあ低能にまとめる能力を期待しても無駄かなw
2020/04/23(木) 09:55:54.13ID:4BIs3zJP0
>>559
バーカw
先にお前が、俺の何が出来ていないと思ってるのか説明しろ。
お前が俺の話のどこが理解出来て無いのかはこっちにゃ分からんのだよ。
2020/04/23(木) 09:56:33.89ID:6OPJP51MM
>>560
自身のレスとお前のアホレスを混同されたくないだけw
2020/04/23(木) 09:57:01.84ID:BmbwEUgo0
いつまで続くんだコレ
2020/04/23(木) 09:57:12.84ID:4BIs3zJP0
>>561
バカ?
本当にバカ?

解析してドキュメント作るんだよ。
解析に四苦八苦してるんだぞ。

嗤えるわw
2020/04/23(木) 09:58:37.88ID:4BIs3zJP0
>>563
そんなもんは内容でわかる。
というか、むしろ邪魔で分かりにくいから>>541で指摘してるんだが。
2020/04/23(木) 10:00:29.56ID:80sunLmwM
>>562
アホなの?
>>476の「できてるから」の説明しろって話
自分で書いたことも理解してないのかよw
2020/04/23(木) 10:03:00.52ID:4BIs3zJP0
>>567
だから、金と時間を貰ってるというのが出来てると言ってる。

やり取り理解出来てる?
お前の指摘はまともな会社なら金と時間を貰ってるというものだった筈だが。
2020/04/23(木) 10:09:52.45ID:4BIs3zJP0
最低限、やり取りから解析に四苦八苦してるというのはまともな奴なら分かる筈なんだが。
とすれば、お前の言う金と時間を貰って、今まさにドキュメント起こす為の解析中(だった)なのが分かる筈。

これが前提なんだからドキュメントが既に出来上がってるなんてアホな誤解してたことは無いと信じたい。
2020/04/23(木) 10:18:34.00ID:pyQ+IxFJr
関係ない人はこいつらをNGにすればいいで
2020/04/23(木) 10:24:08.71ID:EgVweMy+a
まだやってるのか
完全に自粛ストレスだろうな
2020/04/23(木) 10:29:06.69ID:TPtGWxWfM
>>566
専ブラで引用の引用したことないのか?
まあその手の文句は専ブラの作者に言ってくれ

>>568-569
> だから、金と時間を貰ってるというのが出来てると言ってる。
あれ?
> 調査費用と時間貰ってドキュメント起こすことになっても四苦八苦は変わらん。
って糞ドキュメントしか作成できないアホって自白してますけど?
発注した客可哀想
まあ脳内だろうから問題ないか…

> やり取り理解出来てる?
うん、どんどんボロが出てるねw
2020/04/23(木) 11:08:06.42ID:4BIs3zJP0
>>572
???
ドキュメント作るための解析に四苦八苦してるのと、出来たドキュメントの出来に何の関係が?

お前がドキュメント作ったこと無いのがこれでバレたw
2020/04/23(木) 11:11:09.39ID:4BIs3zJP0
何か、お金と時間貰うとロボットが勝手に解析してドキュメント作ってくれると思ってるアホがいるようだ。
2020/04/23(木) 11:14:19.21ID:4BIs3zJP0
というか、解析に苦労しないんだったら、糞コードなんて言葉は無い筈なんだ。
どんなコードでも誰にでも理解出来て楽に読めるんだったら、綺麗なコードを心がけるというモチベーションすら起こらない。
2020/04/23(木) 11:21:51.04ID:4BIs3zJP0
>>572
あと自白っていうのがこれまたおかしい。
最初の主張通り、何ら矛盾が無いんだから自白じゃ無いだろ。
それとも、まだ理解出来て無い?
2020/04/23(木) 11:24:06.86ID:5d1aUYQtM
>>573-574
え゛っ、まじでドキュメント作成で四苦八苦してるって事で誤魔化せるとか思ってるの?

> 調査費用と時間貰ってドキュメント起こすことになっても四苦八苦は変わらん。
そうすると何が何と変わらんのか説明できないだろw
2020/04/23(木) 11:25:47.51ID:RuZIZsvvM
>>575-576
レスをまとめることもできない無能
しかも内容スカスカw
2020/04/23(木) 11:32:54.64ID:4BIs3zJP0
>>577
えっ?
何度も言ってるのにまだ分からない?

「解析に四苦八苦するのは、時間とお金を貰っても変わらない」という日本語が分からない?

時間と金を貰って無くても、貰ってても、どっちでも四苦八苦はするという意味が理解出来て無かった?

日本人ですか?
2020/04/23(木) 11:35:35.71ID:4BIs3zJP0
日本語が通用しない程だから始末に負えない。
"引き継ぎ"も碌に理解してないぐらいだからな。
581デフォルトの名無しさん (ラクッペペ MM34-eHaU)
垢版 |
2020/04/23(木) 12:11:20.51ID:NJImmJ6MM
>>564
これから2週間が山場
2020/04/23(木) 13:25:04.48ID:UY53iXGX0
うまい
2020/04/23(木) 18:35:48.75ID:9EduGPIyM
レベルの高すぎる人同士での口論はとてももったいない
俺はIf Then ElseとFor nextは辛うじて理解できそうなレベル

Do untillとかNextとかloopとか使いこなしたい条件が山ほどあって泣きそうだけど
ここの上級者たちは独学で覚えた?
同じ事やろうと調べでもどのサイトもいろんなやり方でどれが良いかも分からない

ここで聞くとさらりと答えだしてくれる人ってどういう頭の良さしてんだろ
2020/04/23(木) 18:56:32.85ID:9prkr8SY0
基本的には場数
よい文章を書くには良い文章をたくさん読め
良いプログラムを書くためには良いプログラムをたくさん読めば良いんだが
まあ、よいプログラムをたくさん提供してくれる場がなぁ
2020/04/23(木) 19:20:59.53ID:R7RBEdEaM
>>584
ここ見てけばまぁ覚えやすいとか無難で間違いないとかそういったサイトありますか?
広告たくさんのサイトだろうが藁にもすがりたいほど身につけたくて…ノイローゼ気味

俺の業務に絞った時にVBAで何でもやらせようと無理せずに関数はエクセルである程度制御した方が後々メンテが楽なのがわかったので

恐らくloopの使い方を理解しないと絶対に乗り越えられない大きな壁が。。
それを作れたら後は数値の変更や応用でいけそうだけど脳が焼き付いてる
2020/04/23(木) 20:03:22.67ID:6e93QXlJd
>>583
本当にレベルが高い人は口論なんかしないんだよ
スレを荒らすのはだいたい無職
2020/04/23(木) 20:05:39.90ID:weP1rIDx0
>>585
まずはここにあるサンプルを、コピペせずに自分でキーボードから入力してみ
http://excelvba.pc-users.net/fol6/6_4.html
2020/04/23(木) 20:07:24.44ID:9prkr8SY0
>>585
本買え
初心者むけのをまず数冊

昔はプログラム系の雑誌結構あったんだがなぁ
2020/04/23(木) 20:16:07.01ID:IA7mxVD60
>>583
VBAの本って多いから学習しやすいはず

プログラマなら他言語の経験から
基本的な制御構文くらいは自然と分かる
VBAはプログラム言語としてはやさしい方
2020/04/23(木) 21:01:06.09ID:72/Ynz/da
まずは何をしたいか、エクセルでこんな便利なのを作りたいとか、ヴィジョンをもてれば上達は早いと思う
2020/04/23(木) 21:28:22.57ID:IA7mxVD60
そうだね

エクセルは小物ツール作りやすいから
実益を兼ねた練習を積めば上達するな
2020/04/23(木) 22:53:32.79ID:nGyVitY00
VBAなんて本腰入れてテキストで勉強するにはコスパ悪すぎる言語だと思うが・・・
「VBA」にやりたいことを付けてググったソースをコピペした方が早くないか?
2020/04/23(木) 23:13:30.67ID:/AKn5LJ4d
本を見てプログラミングを勉強する時代は終わりだと思ってる
紙の方が読みやすいと思う人が多いだろうけど、本格的にやろうとしたらオンラインのドキュメントは必須だし、
画面上で文字を読む訓練をして慣れていかないと、いつまでも能率が上がらない
2020/04/24(金) 00:05:26.21ID:4FfGWszI0
>>592
とりあえず動くものが作れればいいというなら、まあそうだな

>>593
学習リソースとしては、本かWEBかに本質的な差はないと思うが
中身の問題で、WEBは本ほど系統立てて編集されていないところが多いと思う

辞書だけで外国語マスターできるような人ならWEBだけでもいいけどな
2020/04/24(金) 00:19:26.49ID:aTlSrVmc0
>>592
>>593
書籍の学習は今でも必要だと
思うしさらにVBAだけでなく
他言語の経験があるといいな

VBAのスレで言うのも何だが
VBAプロパーのプログラムは
垢抜けない泥臭いのが多くて
その辺PHPと同じ感触がする
2020/04/24(金) 02:40:01.82ID:vJ3u9sjq0
>>531
どなたか…四苦八苦して終わりません、、
お時間ある方がいましたらお助けを
2020/04/24(金) 03:41:33.98ID:zeBff4Qi0
>>596
そうだな、取りあえず質問する時に相手に伝わるか考えながら質問した方が良いかな。

>元のVBAのフォーマット
???
これは何のこと?
何を言ってるの?

シートのコピーで書式だけコピーしたいということ?
だったらそんな機能は無いと思うから、あとは工夫でどうにかする。
Rangeの書式だけコピーはあるから、シートの追加と書式だけコピーの複合にするか、俺ならそもそもコピー元の書式を全部コードで実現してシ一トの追加とその書式を実現するコ一ドでやる。

右に追加というのが特定のシート(4月)の右というならコピーだろうがシートの追加だろうがそのものずばりの引数がある。
WorkSheets.Copy、WorkSheets.AddでクグるとMSのぺージが見つかるから、そこにサンプルもある。
一番右に追加していくというなら、上の特定のシートの部分に最後のシートを指定すれば良い。
最後のシートってのはシートの指定方法は名前と番号の2通り有るので、今回は番号で最後を表現する。
最後ってのはシート数が7個あれば7番目になる。
この場合の7個ってのはシートの個数。
シートの個数はこれまたそのものずばりのプロパティがある。
(これも上のページのサンプルそのもの。)
2020/04/24(金) 04:14:59.23ID:zODr3mBK0
>>531
5回読んだけど理解不能
画像や絵使って説明してほしいわ
2020/04/24(金) 09:43:49.82ID:5xvA7bcI0
>>583
いつも同じこと感じています
2020/04/24(金) 12:06:13.25ID:EzpkTm1A0
他の人は知らんが俺は独学でコマンドマニュアル見たり参考書買ったりしてた
例えば数値でも加算を繰り返してどこでエラーがでるかとかを
実際にサンプル作って実行することをひたすら満足いくまで繰り返したりしたな
学校の勉強と並行してやってたからいつも寝不足だったし
2020/04/24(金) 16:20:00.14ID:Enw/zcBV0
>>594
学習するのに何が効率いいかっていうよりも、
VBAを学習すること自体に対するリターンって意味でコスパが悪いと言いたかった

特にオフィス製品上でしか実行できない、やりたいことは単純な事が多いっていう特性上、
学習することでググったソースのコピペ以上に得られる物はあるのか?と。

内容を理解することでちゃんとしたコードが書けるってメリットはあるかもしれないが、
VBAで綺麗なコードを書けてもねぇ・・・
VBAのコードを拘るリソースは他に回すべきだ
2020/04/24(金) 17:35:34.28ID:vJ3u9sjq0
Sub Macro1()
  ChDir "c:\tmp"
  f = Dir("*.txt")
  c = 1
  Do While f <> ""
    Open f For Input As #1
    For r = 1 To 6
      Line Input #1, s
      Cells(r, c) = Split(s, vbTab)(2)
    Next
    Close #1
    f = Dir
    c = c + 1
  Loop
End Sub

ここで↑の
「指定した場所に入ってる全てのテキストのエクセル化した時の特定の列と行をエクセルシートに一気に読み込む」
という神の様なコードを教わったものです。

列と行の開始はこのままでいいのですが、テキストの行が空白になるまでエクセルに読み込む
というやり方に変える事は可能でしょうか。

これが職場の環境を大きく変えすぎて2人、本当に課からいなくなって現場に飛びました。
効率化しすぎて他でも応用できるようにしろと皆の前で大声で怒鳴られ泣けても知恵が出てこない
ゆっくり本読んで覚えていきたいにもまず最優先で作れと室内であんなに大声で怒られて
ネットで調べても調べ方すらわかっていなく
異動したい、何卒すみません
603デフォルトの名無しさん (ラクッペペ MM34-eHaU)
垢版 |
2020/04/24(金) 18:38:54.34ID:GFko4FvkM
>>601
普段の仕事がExcelならコスパいいだろ
2020/04/24(金) 18:40:11.73ID:zODr3mBK0
一から十まですべて教わらないとできないような人はやめたほうがいいわ
実力以上のコードを教わったところで何も応用できず周囲の期待には応えられない
5chで教えてもらって作りました
これ以上は分かりませんって正直に言えばいい
2020/04/24(金) 18:49:29.12ID:4FfGWszI0
ForをDoにして、NextをLoop Until S=""かな
つか、二人分の人件費が浮くような作業なら、ちゃんとした会社にシステム化たのめよ
2020/04/24(金) 18:51:14.82ID:4FfGWszI0
まあこれで動いたら>>602がさらなるドツボにはまるのをニヤニヤしようぜ
2020/04/24(金) 18:53:25.05ID:K658YEair
効率化して上司から怒鳴られるってどんな職場だ
上司がクソすぎ
2020/04/24(金) 19:12:23.15ID:aTlSrVmc0
背伸びしても上手くいかないもんだね?
2020/04/24(金) 19:16:29.79ID:sF/e/OCE0
>>602
ここに解決方法が書いてある
https://www.manpowergroup.jp/column/tenshoku/phrases-and-writing-of-change-wish.html
2020/04/25(土) 00:00:18.00ID:/63/MmUO0
コードくれくれ君
2020/04/25(土) 00:25:36.55ID:gc0CgTOT0
画像上部の21〜20日間隔の日付のセルの塗り潰しを下の1〜30日間隔の日付に塗り潰し変えたいんですがどうしたらいいですか?

・上部をforで2行目の最終列までループ
・ifで塗り潰し判定がTrue
・???
・???
・下部をforで2行目の最終列までループ
・ifで対象年月日間隔だったら塗り潰す

と、こんなイメージなのかなと思ってはいるんですが、??らへんの処理がわかりません。

https://i.imgur.com/I6hiP5r.png
2020/04/25(土) 00:30:28.43ID:XJisoOEM0
次から次へと馬鹿が出てくるのはなぜ?
2020/04/25(土) 00:36:47.04ID:8o24J96M0
Functionの任意引数(Optional)なのですが、初期値はstringかlong型のみだけしかダメなのでしょうか?
シート名objectの引数で、省略したときにActivesheetを返したいのですが、「定数式が〜」のエラーが出てしまいます。
やはり、IFとIsMissingを使うしかないでしょうか。

Function test(Optional objシート名 As Worksheet = ActiveSheet)
End Function
2020/04/25(土) 00:42:53.79ID:l10aoXHL0
そもそも引数とか型の意味理解してる?
2020/04/25(土) 00:44:19.85ID:7EOq2zNJ0
>>613
規定値に使えるのは定数値だけ
変数、プロパティ、関数などは使えない
だからActiveSheetも対象外
2020/04/25(土) 00:50:04.58ID:7EOq2zNJ0
>>611
その画像で説明すると、D3:K3をコピーしてC10:J10に書式貼り付けするだけでは
2020/04/25(土) 00:52:04.34ID:lAut8yEK0
>>611
D2からK3をコピーしてC9に貼り付けて C2をK9に貼り付けるだけじゃないの?
VBA使わない方が早そうなんだけど
2020/04/25(土) 00:53:34.41ID:bDeh6DKGd
>>611
塗りつぶす条件がわからなければわからない
2020/04/25(土) 00:58:07.71ID:a/EKdpBi0
>>602
Ruby なら、row.empty? で空行かどうか、判別できるけど

require 'csv'

CSV.foreach( "input.csv" ) do | row | # 1行ずつ処理
break if row.empty? # 空行なら、終了

puts "#{ row[ 0 ] } : #{ row[ 1 ] }"
end

入力ファイル・input.csv
あ,いう
a,bc

1,23

出力
あ : いう
a : bc
2020/04/25(土) 01:41:16.85ID:7EOq2zNJ0
>>602
読み込みを止める条件が空行とEOFの2つになると、とたんに処理が面倒になるんだよな
こういう時はLine Inputを別Functionに飛ばすとすっきりするんだけど、とりあえず汚い方法で書いてみた

Sub Macro1()
  ChDir "c:\tmp"
  f = Dir("*.txt")
  c = 1
  Do While f <> ""
    Open f For Input As #1
    s = "s"
    r = 1
    Do While Not EOF(1) And s <> ""
      Line Input #1, s
      If s <> "" Then Cells(r, c) = Split(s, vbTab)(2)
      r = r + 1
    Loop
    Close #1
    f = Dir
    c = c + 1
  Loop
End Sub
2020/04/25(土) 02:03:19.21ID:8o24J96M0
>>615
そうなのですね、ありがとうございました。
2020/04/25(土) 05:53:44.03ID:SWq+pauNM
>>613
If 文使うしかないのはその通りだけど IsMissing() は引数の型を Variant にする必要があるのであまり良くない

Function test(Optional objシート名 As Worksheet = Nothing) ' Nothing は既定値なので指定しなくてもいい
If objシート名 Is Nothing Then Set objシート名 = ActiveSheet
End Function

ってやるのが定番
ググると同じことをやってる人がいる
http://akashi-keirin.hatenablog.com/entry/2018/03/01/081945
2020/04/25(土) 13:56:29.68ID:gc0CgTOT0
>>616
>>617
名前は下にたくさん羅列してるし、日付も右にもっとずっとあるからVBでやりたい。
日付間隔が上下で違うからどうやったらいいかと思って。

for 上部名前シートループ
 for 下部名前シートループ
  if 名前同一
   for 上部名前年月日列ループ
    if 塗り潰し
     ※下部シート塗り潰し
    end if
next
end if
next
next

※の部分がどう書くのかがわかりません。

>>618
塗り潰す条件は同じ名前の人に対して同じ日付の所へ塗り潰す。
2020/04/25(土) 14:00:26.62ID:jVtajgfWr
>>623
元データのc列を消せば良いのでは
2020/04/25(土) 14:21:24.23ID:y/AcnKi/d
>>623
上部のD列から見ていって塗ってあったら下部の一つ左の列を塗る
2020/04/25(土) 20:10:34.52ID:Z1BPhcf20
下記のコードで出力範囲1と2をまとめるにはどうすればいいでしょうか
Set OutputRange = Worksheets("Sheet1").Range("B2:C10")
For i = 1 To 9
For j = 1 To 2
For k = 2 To 3
OutputRange(i, j) = WorksheetFunction.VLookup(SerchKey(i, 1), SerchRange, k, False)
だとB,C列ともに列番号3をの値になる、というか列番号2で処理した後列番号3でもう一度処理を
しているため、すべて列番号3の値になるんじゃないかとは思うのですが、具体的にどう直せば
いいか教えていただけるとありがたいです

Sub Test()

Dim SerchKey As Range '検索値
Dim SerchRange As Range '検索範囲
Dim OutputRange1 As Range '出力範囲1 B列
Dim OutputRange2 As Range '出力範囲2 C列
Dim i As Long

Set SerchKey = Worksheets("Sheet1").Range("A2:A10")
Set SerchRange = Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A2:C10")
Set OutputRange1 = Worksheets("Sheet1").Range("B2:B10")
Set OutputRange2 = Worksheets("Sheet1").Range("C2:C10")

For i = 1 To 9
OutputRange1(i, 1) = WorksheetFunction.VLookup(SerchKey(i, 1), SerchRange, 2, False)
OutputRange2(i, 1) = WorksheetFunction.VLookup(SerchKey(i, 1), SerchRange, 3, False)
Next i

End Sub
2020/04/25(土) 20:18:25.81ID:/63/MmUO0
このスレにくる質問見ると、俺に読解力がないのかなといつも思ってしまう
2020/04/25(土) 21:06:29.21ID:OxGSjC7Q0
>>626
VLOOKUPは答えを複数返す関数じゃない
2020/04/25(土) 21:14:48.21ID:OxGSjC7Q0
あ、質問の意味が今わかったわ
入れるセル変えずに関数の列番だけ変えてたらそりゃ同じ値しか入らない
中身がどうなってるか想像じゃなくて実際に確認すればどう直せばいいかわかるだろう
2020/04/25(土) 22:19:20.97ID:Z1BPhcf20
質問が説明不足だったようで失礼しました
出力範囲が複数列ある場合にそれぞれの列を「出力範囲1」「出力範囲2」と設定していけばいいという
ところまではわかったのですが、検索範囲が100列、出力範囲が99列、というように数が多くなった場合、
出力範囲のB列には検索範囲の列番号2  OutputRange1(i, 1)…… SerchRange, 2
出力範囲のC列には検索範囲の列番号3  OutputRange2(i, 1)…… SerchRange, 3
出力範囲のD列には検索範囲の列番号4  OutputRange3(i, 1)…… SerchRange, 4



という処理を99行書かずに変数で処理できないでしょうか、というのが質問の意図です
2020/04/25(土) 22:58:11.29ID:u3Cmop/t0
j の役割って何だろう?
2020/04/25(土) 23:00:40.63ID:OxGSjC7Q0
だから>>626のループの中身がどうなってるか見て順番考えたらいいんじゃないの
2020/04/26(日) 00:49:06.95ID:1a87l4R/0
>>630
同じような処理を繰り返したい時は配列を使う

Dim OutputRange(10) As Range '出力範囲
Dim i As Integer

For i = 2 To 3
Set OutputRange(i) = Worksheets("Sheet1").Range(Cells(i, 2), Cells(i, 10))
Next

みたいな感じで、変数を使えば、何十個あっても簡単にまとめられる
2020/04/26(日) 02:34:49.27ID:LqR8iAxp0
なぜ馬鹿ばっかり来るのか
2020/04/26(日) 06:16:38.34ID:+0ojgInc0
馬鹿ばっかり来るところにいるからじゃね
ってか自力でできるやつは質問なんかしないだろ
2020/04/26(日) 09:08:46.83ID:rBKIu5KT0
>>635
それググレカスキッズだと思う
>>612
2020/04/26(日) 10:18:45.13ID:LS9zyJ5J0
複数あるコマンドボタンをどれを押しても一つの処理に入り、押されたボタンを取得して、ボタンごとに判断処理ってできないのでしょうか。(activeXです)

具体的にはシリアルポートの処理で以下のことをやりたいです。
コマンドボタンが機器名、その機器ごとに存在する複数のコンボボックスにポート名やボーレートを設定。
あるコマンドボタンを押したら、対応するコンボボックス郡の設定を取得してポートを開く。(ポートオープンはモジュールに記述したWritefileでやってます)
ポートオープンで返ってきたハンドラが例外でなければ、押されたコマンドボタンの色を変更し、名前を"機器名+接続中"に変更。
また、コマンドボタンを押した時点で対応ポートのハンドラが存在すれば、そのポートを閉じて(ハンドラも初期化)、押されたコマンドボタンの色を戻す。

現在はボタンごとのプロージャを作成し、同じような処理を逐一書いてますが、機器が複数あって大変見にくいのと、記述が大変なのでまとめたいです。
2020/04/26(日) 10:39:23.22ID:oDDaXD960
>>637
それ、まともにやろうとするとかなり上級レベル。
上級者を自認する人でも出来ない人が結構いる。
2020/04/26(日) 10:39:50.30ID:1a87l4R/0
>>637
「コントロール配列」でぐぐれ
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_100_040.html
2020/04/26(日) 10:44:46.17ID:1a87l4R/0
>>637
同じような処理なら、ボタンクリックのイベントの中で変数にボタン名を設定してから、別に用意した共通部分のSubを呼び出せばいい

ヒント
http://woodbook.kir.jp/excel/vba/button_row.html
2020/04/26(日) 10:46:58.47ID:oDDaXD960
おっ、それを貼るとは。
じゃあ、俺も。
以下の一連を全て理解し、使いこなせれば大分変わる。

http://addinbox.sakura.ne.jp/Breakthrough_P-Ctrl_Arrays.htm
2020/04/26(日) 11:53:55.15ID:LS9zyJ5J0
ありがとうございました
手っ取り早くやれそうな感じではなさそうです
2020/04/26(日) 12:03:24.99ID:3XXXGp1c0
>>639
懐かしいなコントロール配列
昔はよく使ったが最近使ってないな
2020/04/26(日) 12:07:36.34ID:oDDaXD960
>>642
一応言っておくと、途中迄なら出来るかもしれないし(それで十分かも)、読み物としても読んどくと良いと思う。
2020/04/26(日) 14:41:44.01ID:LS9zyJ5J0
>>642
紹介頂いたサイトの大元になるmougを参考にして押したボタンの色変えぐらいまでしかできません
この処理にシート画面上のコンボボックスの値を関連付けて取得する仕掛を入れたいのですが検討つかず
2020/04/26(日) 15:58:20.12ID:io10sll9a
各ボタン押した最初の処理だけわけて
引数つけて共通処理に飛ばせばよくね
2020/04/26(日) 18:40:06.52ID:IAQJrydO0
全部ここの人達のおかげで完全に憑き物が取れて教えて貰ったURLと持ってる本を参考にひたすら初歩のルールから愚直に
打っては実行を繰り返し練習してます

Do loop
For next
特にこれの破壊力は凄いですね
これだけの為に覚える価値すらあると感じました
あとはmsgboxの使い方の面白さ
感謝しかないです

Do loopでwhileとuntilがあるけどよほど複雑でない場合
書き方変えるだけで同じ処理させられる感じですが
基本どっちかでで使い方覚えていったほうがいいものですかね
質問というよりただただ楽しくここの上級者たちにも癖だったり自分ルールがあるのかなと
ああ楽しい
2020/04/26(日) 19:35:22.95ID:1a87l4R/0
>>647
繰り返す条件が明確な場合はwhile、終了条件に着目した方が処理の流れがわかりやすい場合はuntil
適切に使い分けると、プログラム全体が読みやすくなって間違いが減る
2020/04/26(日) 19:37:28.36ID:1a87l4R/0
よくない例
While Not 終了条件

適切な例
Until 終了条件
2020/04/26(日) 20:25:45.60ID:IAQJrydO0
>>649

Sub ループwhile()
 Dim i As Long
  i = 1
 Do While Cells(i, 1) <> ""
 Cells(i, 3) = Cells(i, 1) + 10
 i = i + 1
 Loop
 MsgBox i & "回whileでループ"
End Sub

Sub ループuntil()
 Dim i As Long i = 1
 Do Until Cells(i, 1) = ""
 Cells(i, 3) = Cells(i, 1) + 10
  i = i + 1
 Loop    
 MsgBox i & "回untilでループ"
End Sub

なるほど、空白になるまでループってのを練習してました
後者の方が一般的ですかね
勉強になります。
651デフォルトの名無しさん (アウアウエー Sa6a-WAKu)
垢版 |
2020/04/26(日) 21:08:58.39ID:RAbG8RW6a
僕は wihle しか使わない
理由は c言語にないから

あと、なんとなくだけど、wihle と until は混ぜて使わない方がよい気がする

いや、混在する人がいても文句は言わないと思うけど
2020/04/26(日) 21:11:31.65ID:RAbG8RW6a
>>651
651 ですが、
理由は until はc言語にないから
です
すみません
2020/04/26(日) 21:21:03.37ID:wya5Zv+N0
ド・モルガンの法則なんてのを知ってるとループ条件が
劇的に易しく書けるようになったりするよ
2020/04/26(日) 21:43:11.03ID:Whjp3eXS0
>>653
ドモルガンは法則ではなくて公理すなわち前提条件なのでは?
2020/04/26(日) 22:54:36.35ID:1a87l4R/0
Not Is Nothing
英語の否定文って日本語とロジックが違うから直感的にわかりにくい
2020/04/26(日) 23:37:47.73ID:x2OEBIkDa
少なくとも一回実行する必要があるとき until
一回も実行しないかもしれないとき while
2020/04/27(月) 00:02:16.80ID:i1fhLCEO0
まぁ大事なのは自分の中でしっかりルールを固めておくこと
なんとなくで使い分けてると100%デスマに陥る
2020/04/27(月) 00:02:40.85ID:pzY5bj450
>>656
VBAでは、それはDo側に書くかLoop側に書くか

WhileかUntilかはその条件の意味的なもので使い分けるのが本筋だろうけど
書くときの話ならどちらかに統一するルールでも良いと思う
2020/04/27(月) 00:32:05.13ID:7P4A4QOo0
シート1のA1セルにx1、x2、x3と設定し、このx1〜x3をそれぞれx1をB1セルに設定されている値、x2をC2セルに設定されている値に置換するにはどのようにすればよいのでしょうか
Replaceでは検索文字列および置換文字列を一つずつ指定できないため、検索したい文字列が増えるたびに処理が無駄に増えてしまうように思うため効率的なやり方を教えていただきたいです
2020/04/27(月) 03:31:04.69ID:Rq5FZkLb0
もっとわかるように説明してもらわんと
661デフォルトの名無しさん (ワッチョイ ae63-V/Lh)
垢版 |
2020/04/27(月) 04:12:22.78ID:NMjdVbpJ0
置換と言ってるからセル参照ではない事だけわかった
2020/04/27(月) 04:51:42.68ID:o+TU1QYP0
学習能力のないひとがやってきて
説明能力の貧弱さを露呈する場所か・・・
2020/04/27(月) 05:03:04.57ID:Nsh172gi0
>>647
IF文、For文と配列で簡単な処理はこなせる
上級者はまた別のパラダイムで書いているが
先走る必要もなく基礎を確実に身につけよう

>>654
ド・モルガンは定理になることが多いが
そうなるのは公理系しだいだから
名前がおかしいと感じたことはない
664デフォルトの名無しさん (ワッチョイ 6ee6-eHaU)
垢版 |
2020/04/27(月) 06:05:48.59ID:XYadQOO00
>>659
非効率なコードを上げてくれ
2020/04/27(月) 06:24:43.93ID:3fBcsBz5r
>>659
select case
2020/04/27(月) 08:38:39.18ID:MOHWKMXM0
>>659
x3をd3に入れる
置換にこだわらず、代入しなおす
2020/04/27(月) 09:24:40.63ID:JVYKLC34M
ワークシート名をsheet(i)みたいな感じで配列に格納して、
for i=i to X
sheet(i).cell(row,col) = data
next
の様な、ループで各シートのセルに値を代入する方法を教えていただけないでしょうか。
2020/04/27(月) 10:44:49.67ID:p6J78QU70
>>667
実際の要件知らんが、普通はもっといい方法があると思うが、質問通りに。

https://i.imgur.com/SdMgpZq.png
2020/04/27(月) 10:47:33.37ID:o+TU1QYP0
Dim i As Integer
For i = 1 To 3
ThisWorkbook.Worksheets(i).Cells(1, 1) = 1
Next i

で済むようなものだと予想
2020/04/27(月) 13:38:56.30ID:JH5ykH9R0
・ツールの作成
・バク対応、修正業務
・各種テスト
VBAを用いて上記の業務を行う場合、皆さん(自分の取り巻く環境以外)の現場で求められる頻度や重要度が高いスキルや業務を伺いたいです。
よろしくお願いします。
671デフォルトの名無しさん (ワッチョイ 968e-RPvb)
垢版 |
2020/04/27(月) 15:07:52.31ID:VtI6ihiD0
>>670
馬鹿は死ね
2020/04/27(月) 15:33:05.22ID:uroKfm2Gd
>>667
何でシート名で配列なの?
既にシートオブジェクトの配列として使えるのに。
2020/04/27(月) 15:35:59.76ID:MOHWKMXM0
>>667
シート名は普通に列挙したいんだと思った
コード内に記述したいのか: sheet=Array("hoge","fuga","piyo","puyo")
セル内に記述したいのか: sheet=WorksheetFunction.Transpose(WorkSheets("hoge").Range("a1:a4"))
どうか、わかんないけど
2020/04/27(月) 15:36:24.43ID:uroKfm2Gd
>>670
そいつは現場次第だよねえ。

現場に併せて何でも出来るってことかな。
AccessならSQLは必須だと思うけど。
2020/04/27(月) 16:19:32.17ID:JH5ykH9R0
>>671
生きる!!!

>>674
自分の周り以外だとどんなことにVBA使ってるか気になりましてね。他意はマジでなくて、単純な興味として質問してみますた。
2020/04/27(月) 17:19:41.93ID:H2efCY7TH
既存のVBAをどうしてもメンテせざるを得ないときに使う
新規に使うことはない
2020/04/27(月) 18:02:05.74ID:fDdETITO0
ちょっとデータを加工したい時、軽い処理とか1回限りの計算はVBAでやってる
VisualStudioはその場限りの捨てコードを書くには大げさすぎる
2020/04/27(月) 18:06:27.58ID:JnEQ074MM
>>677
そんな貴方にPowershellオススメ
2020/04/27(月) 18:40:53.81ID:JH5ykH9R0
>>676
>>677
レスありがとうございました。
ちょっとした作業を手軽に(環境構築とかなしで)効率化するときに使ってるってのが分かりました。
何気なく使ってるから頻度も重要度もクソもないと
680デフォルトの名無しさん (ワッチョイ 6ee6-eHaU)
垢版 |
2020/04/27(月) 19:15:08.58ID:XYadQOO00
昔は「値で貼り付け」とかキー割り当てしてたけど最近のは割と便利になったから使ってないな
他には初回印刷日の挿入とか
ファイルプロパティにタイトルの設定とかかな
681デフォルトの名無しさん (ブーイモ MMfd-enkp)
垢版 |
2020/04/27(月) 20:04:15.02ID:GiQWIPCuM
「値で貼り付け」に関して最近のはどう便利になってるの?
2020/04/27(月) 20:24:28.01ID:Jy0k1GG60
VBAでの開発依頼がしょっちゅう来る…
2020/04/27(月) 20:30:04.12ID:XYadQOO00
>>681
https://i.imgur.com/xIc2Szq.jpg
684デフォルトの名無しさん (バットンキン MM0a-N7dq)
垢版 |
2020/04/27(月) 20:34:34.60ID:z3LiCQZGM
配列を使った方が良い場合ってどんな時?
2020/04/27(月) 20:48:23.14ID:XYadQOO00
>>684
相手は誰だ?
ワークシート? Dictionary? CSV文字列?
2020/04/27(月) 23:24:48.65ID:JH5ykH9R0
>>680
自分の素朴な疑問に答えてもらってありがとうございます。
2020/04/27(月) 23:26:56.58ID:g7wz6Zov0
ここの人ら凄い、
いつも感心しながら読んでるけど本当に勉強になる。
これだけ知識や経験あるならユーチューバ―とかになって上手くやれば副業も出来そう
2020/04/27(月) 23:27:29.10ID:fDdETITO0
>>684
処理したい変数がたくさんあって繰り返し同じことをする時
処理したいセルがたくさんあって繰り返し同じことをする時
2020/04/27(月) 23:28:15.08ID:fDdETITO0
office田中もいつのまにかyoutuberになってたけど、こんなおじいちゃんだとは思わなかった
690デフォルトの名無しさん (ワッチョイ 64ad-Btmo)
垢版 |
2020/04/27(月) 23:42:25.59ID:RTbdScdC0
VBAを本を読んだりググったりして勉強中です。
他社システムからいただくCSVファイルをExcelに取り込んで編集する必要があります。
頭にゼロが付いて、長さが不定の数字のフィールドがあるので、そこは文字列で
扱わなくてはならず、そのままExcelで開けません。
querytables.add でインポートしてみたところ、セル内改行の含まれる列があるため、
1行であるべきデータが2行になってしまいます。
POWERQueryを使えば回避できる、という情報にに突き当たり、とりあえずマクロの
記録をしてみて、使えるように変えられないか、と思いましたが行き詰っています。
「ソース = Csv.Document(File.Contents(””CSVのパス””),… 」
のCSVのパスの部分を変数にしたいのですが、変数にすると
「 .Refresh BackgroundQuery:=False」のところで
[Expression error] インポート 変数 がエクスポートと一致しません。モジュールの参照が漏れていませんか?」
と親しげだけど、冷たく突き放されます。
知識が足りなさすぎるのですが、データをきれいにして早く次の処理を作らなくては
いけなくて焦っています。
先輩たちはテレワークで、あまり質問もできず困っております。
どうぞよろしくお願いいたします。
2020/04/27(月) 23:45:46.00ID:3fBcsBz5r
>>689
再生数少ないけど分かりやすいから初心者は見るべきだと思う
schooのは微妙だけど
2020/04/28(火) 01:18:35.72ID:7QVY/xgO0
>>690
Ruby なら、以下をscript.rb に書いて、
CSV データを、input.csv に書いてある時、

ruby script.rb input.csv
と、シェルで実行すると、

require 'csv'

file_path = ARGV[ 0 ] # 引数には、CSVファイルパスを渡す。input.csv

# CSV ファイルを、1行ずつ処理する
CSV.foreach( file_path ) do |row|
puts "#{ row[ 0 ] } : #{ row[ 1 ] }"
end

入力・input.csv
あ,いう
a,bc

出力
あ : いう
a : bc
2020/04/28(火) 02:18:31.92ID:wtscQEd50
Sub ループuntil()
 Dim g As Long
  g = 3
 Do Until Cells(g, 2) = ""
 Cells(g, 6) = Cells(g, 2) + Cells(g, 3) * 10
 g = g + 1
 
 Loop Dim ms As String
 ms = MsgBox(g & "回ループ", vbYesNo, "どうやら")

 If ms = vbYes Then
 MsgBox "更に練習", vbYesonly, "じゃあ"   Else
 MsgBox "論外", vbYesonly, "てめーは"   
 End If
End Sub

何とか練習しつつ
ここにきてデータ型が逆に混乱してきましたわ
バリアントでごまかそうかな
おやすみなさい
2020/04/28(火) 02:51:59.71ID:ro9Vnp/Q0
>>690
こんな馬鹿に仕事をさせるのが間違い
2020/04/28(火) 03:02:31.63ID:OG4s1hHd0
>>693
これ、そこらの入門書にはなかなか書いてないんだけど、MsgBoxの結果はVbMsgBoxResultという特殊な型なので、変数msはこう宣言するのが正解

Dim ms As VbMsgBoxResult

この宣言を書いてからコードを書くと、

If ms =

ここまで入力すると自動的に、vbYesとかvbNoなどの選択肢が出てくる
2020/04/28(火) 04:56:00.09ID:Ok+k67Xa0
Select Case "CSVファイルをExcelに取り込む"
Case "直接開く"
MsgBox "0 padding"
Case "querytables"
MsgBox "inline CR"
Case "POWERQuery"
MsgBox "Syntax Error"
Case "先輩たち"
MsgBox "テレワーク"
Case "2ch"
MsgBox "ググレカス"
Case "自分"
MsgBox "勉強中"
End Select
2020/04/28(火) 05:30:30.28ID:CHpsAleC0
>>689
VBAは年齢層高いだろ?
Pythonとかより
2020/04/28(火) 06:23:10.14ID:fDIatR4a0
最近csvを開くのがはやってるみたいだけど、拡張子をtxtに変えて開き直すといいよ
2020/04/28(火) 08:10:33.21ID:uR1kyCkX0
>>670
ぜ・ん・ぶ
2020/04/28(火) 08:27:27.46ID:F6rfqhbJd
>>684
速度アップの為にあえて使うのはVariant配列。

配列にすることに全く違和感が無いので、"あえて"使うことが少ない。
配列にするのに自然なことがたくさんあるし、普通に使ってる。
2020/04/28(火) 13:36:09.05ID:1XDByXps0
ありがとうございました。
できました。
2020/04/28(火) 13:57:24.45ID:0tfnjkqK0
いえいえ
2020/04/28(火) 17:53:56.69ID:YPs9lugpM
Sub テキスト抽出()
  ChDir "c:\tmp"
  f = Dir("*.txt")
  c = 1
  Do While f <> ""
    Open f For Input As #1
        Line Input As #1,s
    s = "s"
    r = 1
    Do While Not EOF(1) And s <> ""
      Line Input #1, s
If s <> "" Then Cells(r, c) = Split(s, vbTab)(5)
    r = r + 1
    Loop
    Close #1
    f = Dir
    c = c + 1
  Loop
End Sub
2020/04/28(火) 18:04:37.39ID:YPs9lugpM
ここで教えて頂いた>>703の「指定Path内の全txtデータのF列2行目から下に数値が続く限りシートに全部抽出する」コードのお陰で憑き物が取れて運用してるのですが
たまに画像の様な他の列に行がはみ出したデータがあると

実行時エラー'9':
インデックスが有効範囲にありません
で止まりますが

これを「他の列がどうだろうがtxt内のF2から下に数値が続く限り抽出」
に改良するのは難易度高いですか?
というかコードで可能でしょうか
入門編の本には載って無く数字変えたりwhileの位置変えたりしてますが簡単にいくはずもなく
参考になるサイトなどありましたら教えて頂けませんでしょうか

↓こんなデータが混じってるとエラーで止まります
https://i.imgur.com/194ePDL.jpg
2020/04/28(火) 18:19:12.75ID:uYkVg/g/a
>>703
まんなかへんのdo while の後ろはかっこをつけたほうがいいよ
判定の対応がわかりにくいので
2020/04/28(火) 18:35:05.50ID:yXtY+D7s0
>>689
元々有名な人なんだね。
投稿動画多くてあれこれクリックしてるうちにどんどん登録者数が伸びてったからビックリした。
最初見た時は5000ぐらいだったのに、さてどこまで伸びるかな。
2020/04/28(火) 19:06:29.99ID:fDIatR4a0
>>704
>If s <> "" Then Cells(r, c) = Split(s, vbTab)(5)
この行、最後に(5)ってついてるでしょ
読み込んだデータに5+1番目(0スタートだから+1)の要素が無かったら、どうなると思う?

ここは、splitの結果を一旦配列変数に受けて、配列の大きさを確認する判定をいれるといいよ
実を言えば、s<>"" の判定も不要だったりもする
2020/04/28(火) 19:48:07.59ID:uR1kyCkX0
都道府県別の7日移動平均線を出すグラフ組めないかなあと
思って、「都道府県別の日々新規感染者数」を探したけど見つからん…。

なんで役人は pdf にしたがるんだろう。
2020/04/28(火) 20:13:54.22ID:ZPYYxv13M
>>707
正直ほとんどさっぱりわからないです。
が、ありがとうございます。そこらへんをいじればなんとかしろなりそうってことですかね。
まだ変数の使い方もよくわかってないのでsplit関数で検索して集中的に勉強していじれるようにがんばります。
2020/04/28(火) 21:00:00.12ID:CHpsAleC0
>>706
VBAはハードル低くて
エクセルが実用的だから
ユーザが多いんだろう
2020/04/28(火) 22:51:18.67ID:7QVY/xgO0
データは、PDF じゃなくて、アプリで処理しやすいように、
同じ場所に、CSV ファイルも置いておくのが基本!

役人は、データ処理の素人w
2020/04/28(火) 23:02:38.82ID:IT0hJXXxM
EOF関数?
なんじゃこりゃ
713デフォルトの名無しさん (ワッチョイ ae63-0s/K)
垢版 |
2020/04/28(火) 23:21:24.84ID:7mVXavmj0
>>708
各都道府県毎にオープンデータでCSV配布してるのに何言ってんだ?
2020/04/29(水) 01:03:36.89ID:j7HdUAEO0
VBAから参照設定をせずにoutlookを操作しようとしていますが、
「Set mailItemObj = oApp.CreateItem(oApp.olMailItem)」のところで、
「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」と
エラーが出てしまいます。どうすれば解決できますでしょうか。。。

Sub sendmail_sample1()
Dim oApp 'As NEW Outlook.Application OutlookのApplication
Dim myNameSpace 'As Outlook.NameSpace
Dim myFolder
Set oApp = CreateObject("Outlook.Application") 'VBAで参照設定をした場合は不要
Set myNameSpace = oApp.GetNamespace("MAPI")
Set myFolder = myNameSpace.GetDefaultFolder(9)
'---コード1|outlookを起動する
Dim toaddress As String '変数設定:To宛先
Dim subject As String '変数設定:件名
Dim mailItemObj 'Outlookで使用するオブジェクト生成
'---コード2|差出人、本文、署名を取得する---
toaddress = Range("B2").Value 'To宛先
subject = Range("B5").Value '件名
'---コード3|メールを作成して、差出人、本文、署名を入れ込む---
Set mailItemObj = oApp.CreateItem(oApp.olMailItem) '★★★ここでエラー
mailItemObj.BodyFormat = 3 'リッチテキストに変更
mailItemObj.To = toaddress 'to宛先をセット
mailItemObj.subject = subject '件名をセット
'---コード7|outlookを閉じる(オブジェクトの解放)---
Set oApp = Nothing
Set mailItemObj = Nothing
End Sub
2020/04/29(水) 01:10:43.62ID:ICnUrfUx0
>>714
こうかな?
Set mailItemObj = oApp.CreateItem(olMailItem)
2020/04/29(水) 01:34:35.47ID:L1oMckOiM
配列変数難しすぎて笑える
2020/04/29(水) 01:35:24.04ID:j7HdUAEO0
>>715
レスありがとうございます。
「変数が定義されていません」エラーが出てしまいます・・・
718デフォルトの名無しさん (ワッチョイ e709-LlFz)
垢版 |
2020/04/29(水) 01:40:00.70ID:j7HdUAEO0
>>714です。自己解決いたしました。
olMailItemを値指定でゼロ(0)にしたらできました。。。
謎ですが。。。ありがとうございました。。。
2020/04/29(水) 09:03:38.75ID:osglNTbf0
定数ってoutlook.olMailItemみたいに書くんじゃなかったっけCreateObjectで別定義する必要があったはず
Excel上だとリファレンス入れないと>>715は機能しない
2020/04/29(水) 09:13:47.90ID:EmE7DP7rx
ただのパラメータ定数参照だから普通に数字を入れればいいだけ
olMailItemは0だったかな
721690 (ワッチョイ a7ad-LlFz)
垢版 |
2020/04/29(水) 09:22:41.65ID:sSCyRYOw0
>>690です。
みなさんありがとうございました。
もっと勉強します。
>>696
ちょっと楽しい気持ちになりました。恩に着ます。
2020/04/29(水) 18:51:15.87ID:IoQm9XvmM
msgboxの使い方
inputboxの使い方
Do loop
For next
if then else
初歩だけどここらを色々繰り返し勉強してると楽しい
msgboxは使い方もっと応用していきたい
楽しみながら勉強するといいですね
他にもっとお勧めの処理ありますかね。

あとさらに低レベルな疑問なんですが
vbYesNo
vbOkCancel

これってみんな細かに使い分けます?
タイトルとメッセージで誘導してあげて
elseで何もしないにするとほぼ通じちゃいますよね
これも使い分け必須だったりするのでしょうか
2020/04/29(水) 20:00:57.74ID:ZY0E7GgZa
やってみればわかると思うが
2020/04/29(水) 22:30:45.80ID:sZxShGZL0
メッセージBOXが出ている状態でESCキーを押された時の挙動が違う。
725デフォルトの名無しさん (ワッチョイ a78e-DBwA)
垢版 |
2020/04/29(水) 23:54:48.02ID:GcIsSLnW0
>>722
そろそろ馬鹿は死ね
2020/04/30(木) 00:04:19.84ID:UCocORui0
vbaって必要に迫られてやることが圧倒的な気がする
だからおすすめの処理とか言われてもな
2020/04/30(木) 02:12:11.10ID:e+nUl/nvH
同意
VBAは使わなくていいなら使わない方が望ましいわけで、
おすすめと言われると「まずはVBAを使わなくてよい方法を考えること」としか言いようがない
2020/04/30(木) 03:10:10.69ID:mLi4d9n50
道具なんて使う人次第
手作業とワークシート(数式)とVBAと別アプリと、何でやれば一番楽で間違いが起きにくいか比較検討して使い分けるのが理想
2020/04/30(木) 03:36:49.13ID:gai1ourp0
>>722
きびしめの意見が続いてかわいそうになったので
めげずにがんがれ
2020/04/30(木) 03:50:06.96ID:HupizHgZ0
数式だとすぐぶっ壊されてその修正に手間がかかるのでVBA使うのが好き
仕方なく数式に頼ったとしても、数式を一括修正できるボタンとかVBAで作っちゃってる
数式入ってるセルに保護かければいいじゃんって思うだろ・・・・
そうするとな、なんでここには入力できないんだよ!ってクレームがな、
いや、そこはここのシートのこの値が転記されるようになってて・・・とかいう説明を聞き入れる輩じゃないんだ
2020/04/30(木) 04:08:29.30ID:mLi4d9n50
人に渡すブックなら、VBAは消してシートはバックアップを取っておく
何やったっていじるやつはいじるし文句を言うから、結果だけを渡すようにしとかないと
2020/04/30(木) 04:41:41.42ID:HvDy85U60
>>722
>お勧めの処理
VBAが初心者でも簡単に扱えるのは
エクセルというGUIがついてるから

だけど普通のCUIプログラミングも
できると技術的に幅が広がるだろう

たとえばPythonとかRubyとかでね
2020/04/30(木) 04:48:14.38ID:HvDy85U60
>>730
>>731
複数人利用で関数メインだと
すぐぶっ壊されるのは分かる

あと壊れなくても長期的には
VBAの方が修正が楽だよな?
関数は処理の全体像が不透明
734デフォルトの名無しさん (ワッチョイ c763-+JA7)
垢版 |
2020/04/30(木) 06:40:13.36ID:PqPYAyi70
まぁ関数でできる処理は関数でした方が処理自体速いんだけどな
悩ましいけどセル保護だけじゃなく列や行を隠しとかもするけど、いじる人は何しようと結局いじるからね…

VBAと関数で使い分けしないとVBAはどんだけCPUのコア数あっても1コアでしか動作しないから、重たい処理になると頭打ちになる
2020/04/30(木) 07:48:59.33ID:OrbFqVlKx
ワークシート関数が処理の全体像が不明っていってる奴はたぶん関数がセル内できるのを知らないとか、テーブル機能を知らないとか、たぶんそんな感じだろう
ワークシート関数もVBAも下手くそに作ればカオスになる
2020/04/30(木) 08:27:32.50ID:/wWgOKjWM
なるべく関数はエクセル内で完結させてる
何かの呼び出しや処理のみにVBAにやらせてる
マスター版を個人で持っておく
いじられてもよほどのことが無い限り知らんふり
2020/04/30(木) 08:46:50.92ID:HvDy85U60
一年後に処理の内容全部忘れてから
もう一回見てご覧?
関数よりVBAの方が分かりやすいから
2020/04/30(木) 09:38:23.87ID:OrbFqVlKx
ワークシート関数の見通しが悪いのはシートの使い方や関数の書き方が悪いから

テーブルで構造化参照させる
多重ネストをしないように作業列を積極的に使う
多重ネストが避けられない場合ははセル内改行する
静的変数として固定セルを参照する場合は名前付きセルにする

こういう配慮をしているかどうかが大切

可読性はVBAと大差ない
VBAだって下手に書くと二度とメンテナンス出来なくなる
2020/04/30(木) 10:14:10.91ID:dUO320lFH
>>737
VBAだけ見りゃ理解できるように書いてあるんならいいさ
ハイスキルな君の書くVBAもきっとそうなのだろう
ただ、世の中のほとんどのVBAマクロはワークシートのレイアウトに激しく依存しており、
シートと見比べないと意味不明だし簡単に壊れる
2020/04/30(木) 10:50:37.55ID:KvTMWgJl0
>>713
そうなの?じゃあ俺の検索力不足だ。
教えてもらえるとありがたい
2020/04/30(木) 11:52:42.58ID:RI8oXcu50
シート連結部分はクラスにしようぜ
2020/04/30(木) 18:07:04.25ID:R8msXZW7a
クラスターつくるのか
2020/04/30(木) 20:10:03.51ID:6PshQwim0
>>737
これは分からんでもないわ
744デフォルトの名無しさん (ワッチョイ 671d-sUpK)
垢版 |
2020/04/30(木) 23:50:21.31ID:b9TIw4B40
実務経験1年で月収80万稼げるエンジニアになった理由
https://www.youtube.com/watch?v=DrbbyGsHQic
意識が低いエンジニアこそフリーランスになれ
https://www.youtube.com/watch?v=nSEaAJlgjbQ
フリーランスエンジニアの週3労働ってどんな感じ?
https://www.youtube.com/watch?v=8yjoDCdbzMc
ぼくがスキルのない社畜ならこうやって脱する
https://www.youtube.com/watch?v=aae8xxbUlMM
初めて人を雇ったらもう二度とサラリーマンをやりたくないと思った話
https://www.youtube.com/watch?v=U0OCGRVLFsM
プログラミングは文系でも余裕で出来ます!理由を現役プログラマーが解説
https://www.youtube.com/watch?v=iBOeiSKBIW8
貧乏人こそ社会不適合者
https://www.youtube.com/watch?v=O3BT72BIBJI
元ド貧乏が教える】貧乏を抜け出すための2つの考え方
https://www.youtube.com/watch?v=IRrCgTy3ckc
より良いオファー貰ってるのに転職しないとか何考えてるの?
https://www.youtube.com/watch?v=i0J6uRhlj7o
745デフォルトの名無しさん (ワッチョイ a7f1-trzR)
垢版 |
2020/05/01(金) 00:54:45.32ID:+DHzH5tv0
>>744
この人タイでエッチするため在宅プログラマーになったって言ってるけど
うらやましいな
2020/05/01(金) 09:08:51.86ID:GU+C/Jnt0
はいつぎの方
2020/05/01(金) 10:00:32.66ID:6b7IUzcd0
Sub Sample2()

Dim Date1 As Date
Dim Date2 As Date
Dim i As Long

Date1 = "2018/1/1"
Date2 = "2018/4/30"

For i = 0 To DateDiff("d", Date1, Date2)

Cells(i + 1, 1) = DateAdd("d", i, Date1)
Exit For
Next i

End Sub

VBA初心者です
上記を実行すると強制終了してしまいます
どうしてなんでしょうか?
2020/05/01(金) 10:50:57.53ID:eM3SnLnx0
>>747
Exit Forを消す
あと、自分のミスで思った通りにならない時は強制終了とは言わない
2020/05/01(金) 12:14:21.59ID:gUWwrcBK0
"4/30/2018"
750デフォルトの名無しさん (アウアウエー Sa9f-kSwD)
垢版 |
2020/05/01(金) 13:10:21.56ID:n1w4ahs6a
#で括ってみては
751デフォルトの名無しさん (JP 0H9f-r+sk)
垢版 |
2020/05/01(金) 14:08:14.73ID:Lu25V/ckH
学術巨大掲示板群: アルファ・ラボ
ttp://x0000.net

物理学 化学 数学 生物学 天文学 地理地学
IT 電子 工学 国語 方言 言語学 など

PS 連続と離散を統一した!
ttp://x0000.net/topic.aspx?id=3709-0
2020/05/01(金) 14:08:57.29ID:GU+C/Jnt0
>>747
回答としては748の通り

なぜこうなるのかわからない場合
 ・ブレークポイントを使ってどういうふうに処理が進んでいるか確認してみ?
 ・気になる行をコメントアウトをしてみる

などをするがよろし
753デフォルトの名無しさん (ワッチョイ a78e-MvRk)
垢版 |
2020/05/01(金) 15:46:49.34ID:O26w7br10
どうして馬鹿ばかり来るのか
754デフォルトの名無しさん (ラクッペペ MM8f-aR2J)
垢版 |
2020/05/01(金) 15:48:19.31ID:e9rmxAXgM
>>753
ようこそ!
2020/05/01(金) 16:42:17.98ID:w4TGDP35H
>>753
Welcome to the real world !!
2020/05/01(金) 17:52:33.49ID:XmUvZ7vC0
>>747
単純にすべての単語の意味を
把握したらそれだけで分かるよ?

最初の内は意味が分からないまま
コピペプログラミングだろうけど
ずっとそのままだと上達しない
2020/05/02(土) 03:52:34.32ID:gsxD2EFS0
皆さんありがとうございます。
初心者から脱出できるように勉強します
2020/05/02(土) 04:16:39.04ID:WlPNyw+i0
がんばれ
2020/05/02(土) 07:47:42.55ID:8I2uZvpu0
会社が休みに入って書き込みが減ったな
2020/05/02(土) 09:40:27.37ID:7uDOF2SH0
IE自動操作のマクロで

今まで動いていたが動かなくなる

コードに変化を加えると動く
(スペースでも改行でもコメントでも、プロシージャに変化があると動くようになる)

これはどういうあれなんや
2020/05/02(土) 10:47:09.64ID:8Sc54whm0
全角のスペースとかキーワード途中での改行とか

無意識にやらかしたんでないの
762デフォルトの名無しさん (ワッチョイ a7ad-ur4w)
垢版 |
2020/05/02(土) 11:30:23.32ID:Z+zF8E0a0
PowerQueryをVBAで使いたい初心者
>>690です。
変数に入れるファイルパスを、テーブルにしておかないと
PowerQueryは読んでくれないんだ。そのテーブル名とか列名も
指定するんだ、へ~、という現状からこの連休中に抜け出したいです。

テレワークからの連休突入前に先輩たちに投げた質問の答えは
「zoom飲み会やるから、入れとけよ。」でした。
2020/05/02(土) 11:33:04.58ID:qrZctUhv0
VBAむずいが努力だわ
昇級幅が大きい時代の残りカスの50代の職場のおっさん達が給料ばっかり高くて
ExcelのSUM関数すらわからないレベルで
電卓で計算してテンキーで手打ち
そんな信じられない存在がいる職場
「俺のやり方があるんだよ!」
とか、心の底から腹が立つ
大手で組合もあるからリストラはされないんだが
そんなやつを駆逐したい
エクセル関数は職場で使うものはだいたい使っておっさん共の10倍は早くやってきたが
更なる憎しみだけが俺のVBA勉強へのモチベーションになってる
2020/05/02(土) 11:34:32.51ID:jcfx6zQ80
>>760
そもそも、どう動かなくなるんだ?
エラーが出るのか?
Excel再起動で動くようになるか?
PC再起動で動くようになるか?

昔よくあったのがデバックやStopのように勝手に途中で止まるという奴。
F5で続行出来るんだけどまた途中で止まる。
Excelの再起動では治らんがPC再起動で治る。
2020/05/02(土) 11:44:58.03ID:u3ozWGyy0
>>760
Win10ではIEの動作が変わったのでVBAからコントロールするのがかなり大変になった

うまく動かない時は、ブラウザのキャッシュとかクッキーとか、WEBサーバの応答のタイミングとか調べる
変更しなくても時間を置けば動かないか、Excelを再起動したらどうか、パケットモニターとか調べた?
766デフォルトの名無しさん (アウアウカー Sa3b-QanA)
垢版 |
2020/05/02(土) 11:52:59.52ID:be7YjfFea
初めてのマクロでやりたいことはほぼ出来たのですが、新規ブックをコピー元のマクロごとコピーする方法が分かりません
xlsmで保存することは出来るのですが、どうもマクロの参照先がコピー元になっているらしく、新規ブックからマクロを実行するとコピー元のファイルをわざわざ開く形になってしまっています
マクロごとコピーする方法があればご教示ください
2020/05/02(土) 11:53:28.87ID:jcfx6zQ80
>>762
初心者がPowerQuery使うの?
その前にやることがあると思うんだが。

まず、テキストファイルを扱えるようになりなよ。
自在にテキストファイルを扱えるようになれば、どんな形式のCSVでも関係無い。
セル内改行も、そのCSVのフォーマットが分かってないのが原因。
普通はデ−タに改行が入ってるならレコード間の改行と区別する何かがある筈。
1レコードの項目数が必ず決まっている(1レコードのカンマの数が決まっている)とか、そのテキストデ―タは必ずダブルクォーテーションで挟まれており、データ内の改行はダブルクォーテーションのInとOutの間のどこかにあるとか。

もちろんPowerQueryでも良いんだけど、それでたまたま解決出来そうだから飛び付くのは良くない。
こんなもの基本的な処理の組み合わせで出来るんだから、PowerQueryで有利な何かも無いのに無理矢理使おうとしてるように見える。
2020/05/02(土) 12:25:11.14ID:E33c3GVR0
>>766
自分ではやったことないけどモジュールをそのままコピーするなら
http://officetanaka.net/excel/vba/vbe/07.htm#sample04
こういう方法じゃないかな

自分でやったことがあるのは
https://oshiete.goo.ne.jp/qa/756026.html
こちらの方法で、コードを一行ずつ書いていくことになります

ほんとにまるごとコピーでいいなら上の方法でしょうけど、thisworkbookとか
activeworkbookとか場合によって挙動が変わるような内容なら下の方法
じゃないかな
2020/05/02(土) 12:32:45.18ID:u3ozWGyy0
>>766
モジュールのエクスポートとインポートでやってみるとか
https://jizilog.com/vba-modadd
770デフォルトの名無しさん (アウアウカー Sa3b-QanA)
垢版 |
2020/05/02(土) 13:09:24.75ID:me7NM96ka
>>768
>>769
ありがとうございます
お恥ずかしながら、今更ながらアドインと個人用マクロブックの存在を知りました
マクロの数も多いので、毎回記述する方法は重くなりそうですし、インポートも考えたのですが、管理するのが大変そうだと躊躇していました
とりあえず、個人用マクロブックで一括管理してやってみようと思います
2020/05/02(土) 15:03:15.18ID:fjHWXn6td
>>768
これは、セキュリティ上の危険を承知するなら良いんだけどね。
今のExcelはデフォルトで動かないように設定されてるよ。

動作原理はマクロウィルスと全く同じなんで。
2020/05/02(土) 15:03:21.75ID:HkfyT0U40
>>770
マクロブックだと、最後の1ファイルを閉じてもアプリ画面が残っちゃう。
アドインだとこれを回避できる。
2020/05/02(土) 15:06:50.76ID:HkfyT0U40
>>771
そそ。D&Dでパワポにノートを読み上げるマクロをぶっ込めるvbs作ったんだけど、よく考えるとちょつと怖くなった。
774デフォルトの名無しさん (ワッチョイ a7ad-ur4w)
垢版 |
2020/05/02(土) 15:24:24.68ID:Z+zF8E0a0
>>767
あ、ありがとうございます。
テキストファイルから…。
連休の課題にします!
2020/05/02(土) 15:37:35.14ID:lt4kIJ5o0
>>767
VBAのスレで言うのもなんだが
PowerQueryの前にやることがVBAなのかと
2020/05/02(土) 15:54:13.09ID:WuBkO5o5x
>>762
テーブルとしての構造化参照が不要なら別にテーブルにしなくても「空のクエリ」でリテラル定数を返す接続クエリを作るなり、パラメータを登録するなりすれば良い
詳細エディタに
= "テーブル名"
って一行書けば"テーブル名"を返す定数クエリが出来上がる

あと、Letの前行に
(path as text, table_name as text, column_name as text)=>
とか追加すれば、path とtable_nameとcolumn_nameという三つのtext型の引数をダイアログ入力でクエリに渡せるようになるので、クエリ式の側をソース=Csv.Document(File.Contents(path))みたいに書けば良い。


どうしてもVBAからPower Queryをいじりたいなら
Workbook.Queries(Index).Formulaでクエリの式が読み書きできるので、Replaceを使うなりして好きにいじったらいいんじゃないの
777デフォルトの名無しさん (アウアウカー Sa3b-QanA)
垢版 |
2020/05/02(土) 16:19:14.33ID:be7YjfFea
>>772
なるほど、それはちょっと嫌かも
この際だからアドインも試してみることにします
778デフォルトの名無しさん (アウアウカー Sa3b-QanA)
垢版 |
2020/05/02(土) 17:01:28.47ID:be7YjfFea
何度もすみません
アドインを通常のマクロのように、図形などで作ったボタンに割り当てることはできないのでしょうか?
2020/05/02(土) 19:33:07.66ID:I/r+DzJx0
デバッグ中からリセットをかける際に特定の処理をさせるようなイベントプロシージャって無いでしょうか
2020/05/02(土) 21:25:13.04ID:fjHWXn6td
>>779
それは俺も知りたいね。
リセットすると確実にExcelが落ちるプログラムを安全に終了したい。
2020/05/02(土) 21:28:27.20ID:fjHWXn6td
>>778
アドインの場合、メインは別のブックになるわけだからアドインのシートとかは表示されないという基本は分かってる?

それが分かっていれば図形等で作ったボタンを配置する場所もないと分かる筈。

普通はメニュー(リボン)に作る。
2020/05/02(土) 22:09:54.71ID:7uDOF2SH0
>>764
>>765

数か月前の事なので返ってくるエラーは忘れたけど
どこかの部分で止まるのではなく、開始時に起きるエラーだったと思う
そのファイルを複数のPCで試したけど全てで同じ現象が起こる

で、subプロシージャのコードを一部変更して実行すると動く

コードの変更は何でも良くて
改行、何も書いていない行にスペース追加、コメント追加、コードを消して同じコードを書く
とにかく変化があれば再起動も何も必要なく正常に動く
変更後上書き保存してからは同じエラーは起こっていない

今は問題なく動いてるから困っては無いんだけど
あれは何だったのかなと思った
2020/05/02(土) 22:19:21.49ID:8I2uZvpu0
はあ、そうですか。しらんがな
2020/05/02(土) 22:37:34.51ID:zUyEitTf0
>>760
俺もさんざん悩まされたが、ByVal/ByRef問わず、関数にオブジェクト渡すのやめたら改善したわ。
何でもかんでもパブリックにすんなアホって言われてたから、パブリックという発想が中々でなかったが。

>>764
俺の場合は何の音沙汰もなく強制終了だな。
エラーが出ないし、PCによっては動くし、改行いれるだけで変わることもあるから、
どこがおかしいのか全然わからんかった。
互換表示とか保護モードの有無も関係ないし。
2020/05/02(土) 22:45:55.01ID:zUyEitTf0
多分、

Readystateコンプしてるのにエラーでるな〜
↓こうしちゃえ

On Error Resume Next
Do
 IEにカキコ
 Sleep 1000
Loop While なんとか
On Error Goto 0

長くて面倒くせえなぁ〜
関数化しちゃえ

で、オブジェクトを関数に渡して嵌る罠なんだと思う。
2020/05/02(土) 23:09:24.77ID:FzDABaHmM
>>782
それ、IEと関係なく、Excelの更新が原因でvba関係にエラー起きてるやつでは?
ファイル開くときに「エラーがあります、可能な範囲で修正しますか」みたいなアラートがでて、はいを押すとコードが全削除される。
2020/05/02(土) 23:36:58.40ID:qrZctUhv0
教えてくださいまし。。
画像のように日によって参加人数も競技した数も違うものを
受付した人と競技の範囲の値のみ
隣のシートに貼り付けるようにしたいですが
エクセル関数のエラーや未計算が都合上どうしても残ってしまい残ってうまく行かず…
https://i.imgur.com/Sd2Afas.jpg
https://i.imgur.com/MfnIQSU.jpg
https://i.imgur.com/lEQTEIe.jpg

受付した人の数字が空白になるまでは空白になるまで、競技も空白になるまで
その範囲のみをコピーというか可能でしょうか
2020/05/02(土) 23:39:12.79ID:qrZctUhv0
Sub 貼り付け()
Dim gy As Long
Dim re As Long Dim
Dim Tensu As String
Dim Kekka As String

Sheets(Tensu) = "点数"
Sheets() = "結果シート"

Sheets(Tensu).Select
With Range("C5")
gy = .End(xlDown).Row
If .Offset(1).Value = "" Then
gy = .Row re = .End(xlToRight).Column
If .Offset(, 1).Value = "" Then
re = .Column With .Resize(gy - .Row + 1, re - .Column + 1)
Sheets(Tensu).Select Range("H8").Resize(.Rows.Count, .Columns.Count).Value = .Value
End With End With
End Sub

これで作ってみたのですがやはり関数エラーが
邪魔してエラーになります
行も列も両方を空白までループして貼り付け
むずぃす
2020/05/02(土) 23:46:04.45ID:zUyEitTf0
画像から式を逆算するクイズみたいになっとる。
2020/05/02(土) 23:48:07.49ID:TR3WF5Jt0
人、それをデバッグと呼ぶ
2020/05/02(土) 23:48:58.13ID:zUyEitTf0
エラーってそっちのエラーかい!

If IsError(セルの値) = False Then の時だけ実行とか。
2020/05/02(土) 23:51:07.35ID:zUyEitTf0
それか、ValueじゃなくてTextでエラー回避。
2020/05/03(日) 00:01:44.09ID:fR4zqWYb0
>>788
全体的にめちゃくちゃで、それじゃ関数エラー以前にまったく動かないはずなんだけど、本当にそれで途中までは動いてるの?
スマホでポチポチ書き写すんじゃなくて、できるだけPCでそのままコピペしてくれない?
2020/05/03(日) 00:26:05.49ID:EGR1WLcw0
>>793
Sub test()
Dim gy As Long, re As Long
With Range("C5") gy = .End(xlDown).Row
If .Offset(1).Value = "" Then gy = .Row
cl = .End(xlToRight).Column
If .Offset(, 1).Value = "" Then re = .Column With .Resize(gy - .Row + 1, re - .Column + 1) Range("AA5").Resize(.Rows.Count, .Columns.Count).Value = .Value
End With
End With
End Sub

元々作これで動いたのを確認しやしたが
無力過ぎて悔しいっす
そもそもエクセル関数の方のエラーが出ないようにif関数で空白の場合はセルも空白にしようかと思ったけどそもそも他部署の管轄
俺の圧倒的力の無さですわこりゃ
2020/05/03(日) 00:31:44.93ID:EGR1WLcw0
というか完全に圧倒的勘違いでした

動いたと思っていざ使おうとしたら
他部署からのデータが画像のように
参加してない選手のところにセルにエラーがついてくる仕様なのに気付いて動かなかった
これが正解です
頭おかしくなってますわ
2020/05/03(日) 00:38:44.40ID:fR4zqWYb0
>>794
ワークシートの数式を消しちゃっていいんなら、エラーの出てるセルを全部空白にするのは簡単
Sub エラー全部消す()
 Dim c As Range
 For Each c In ActiveSheet.UsedRange
  If IsError(c.Value) Then c = ""
 Next
End Sub
2020/05/03(日) 01:01:50.07ID:fR4zqWYb0
>>795
コピーしたいのは、赤枠の範囲でいいの?
https://i.imgur.com/hJcIMrT.jpg
2020/05/03(日) 01:03:01.84ID:fR4zqWYb0
それとも選手名も必要?
2020/05/03(日) 01:37:52.66ID:EGR1WLcw0
>>796
教えてくれてありがとうございやす
ただシート内の別のところにも数式待ちのエラーのセルがあって俺の管轄じゃないので全てのエラーを消すわけにはいかず…範囲指定するスキルもなく…

>>797
>>798
完全にその赤枠のところの「値」のみをコピーしたいです

それが毎回、選手の数と競技の数が違う
という感じです

選手Cが空白なのに選手Dは数値が入る
ということはないので
受付の列が空白になるまでコピーを
ループ?とか考えながら挫折してます
2020/05/03(日) 01:46:13.78ID:EGR1WLcw0
受付の行が空白のセルになるまでループしつつ
競技の列が空白になるまでループ??
んん?違うか

GWになのにExcel開いてずっとマクロで悩むとは…とんだステイホームですわ
2020/05/03(日) 01:55:50.90ID:yO9oP2CW0
ここに書かずなぜ動かして試さない…
2020/05/03(日) 02:10:58.89ID:fR4zqWYb0
>>799
はい、できたよ

Sub 数字だけコピー()
  Dim rr As Long
  Dim cc As Long
  Dim dat As Variant
  rr = Cells(Rows.Count, 3).End(xlUp).Row - 4 '高さを求める
  cc = Cells(5, Columns.Count).End(xlToLeft).Column - 2 '幅を求める
  dat = Range("C5").Resize(rr, cc).Value 'データを変数に入れる
  Range("AA5").Resize(rr, cc).Value = dat 'コピーする
End Sub
2020/05/03(日) 02:15:53.76ID:fR4zqWYb0
ごめん
ちょっとだけ修正させて

Sub 数字だけコピー()
  Dim rr As Long
  Dim cc As Long
  Dim dat As Variant
  rr = Range("C4").End(xlDown).Row - 4 '高さを求める
  cc = Range("B5").End(xlToRight).Column - 2 '幅を求める
  dat = Range("C5").Resize(rr, cc).Value 'データを変数に入れる
  Range("AA5").Resize(rr, cc).Value = dat 'コピーする
End Sub
2020/05/03(日) 03:59:51.25ID:PK0PPm520
この程度のものを人に聞かなきゃできないようじゃ先が思いやられる
これで職場の50代批判できるのかと・・・・
しかも最初のこれ>>787
もう少し日本語の説明能力上げたほうがいいんじゃないか
君何度もここでいろんな質問してるよね?質問の仕方からして酷すぎる

説明の例1:
この画像で言えばC5からE13の範囲を別シートにコピーしたいです
https://i.imgur.com/Sd2Afas.jpg
コピーしたい範囲は変化します。例えばこの場合はC5からI9までをコピーしたいです
http://i.imgur.com/MfnIQSU.jpg

説明の例2:
こういう画像をペイントで作る
https://i.imgur.com/u9Vhnj1.jpg




はぁ・・・おれ深夜に何やってんだか・・・
805デフォルトの名無しさん (ワッチョイ a7ad-ur4w)
垢版 |
2020/05/03(日) 09:15:39.22ID:iPr/hZRI0
>>776
ご助言ありがとうございます!
教えていたことの意味を調べながら勉強します。

ちなみにうちの職場では55歳のオバハンが独学で書いてるVBA
が一番「きれい」だそうで。教科書通りで、整理整頓されてる感じで
非エンジニアには優しいんです。(簡単なものしか作らない人ですけど。)
でも「リーダブルコード」とか「VBA実践のためのなんちゃら」とか
読んで勉強してるの見かけたので、心がけは見習いたいです。
2020/05/03(日) 09:19:57.52ID:6v/wuiGx0
> Sheets(Tensu) = "点数"
> Sheets() = "結果シート"

きれいだとか汚いとかいう以前に読む気が失せるな
入門書買ったとか言ってなかったっけ?
2020/05/03(日) 09:20:36.28ID:2hdRjZho0
>>805
>独学で書いてるVBAが一番「きれい」
>教科書通りで、整理整頓
それはあるかもな

プログラマだとなまじ他言語の知識があるために
トリッキーなことやりだす奴が一定数いるからな
効率が良い面もあるだろうが他人が理解しにくい
2020/05/03(日) 09:35:40.45ID:6v/wuiGx0
>>803
生血プログラマーなら1行にするべきである
2020/05/03(日) 10:26:05.54ID:9LS/Ekj10
ああ、

If a = True Then
a = False
ElseIf a = False Then
a = True
End If

みたいなやつか。
大っ嫌いだけどな。
2020/05/03(日) 13:07:08.60ID:T/wh1/tE0
a = Not(a)
でいいんじゃね
2020/05/03(日) 13:43:00.43ID:AWBCl49n0
エスパースレと化してる
2020/05/03(日) 14:21:40.36ID:jHKSsTzt0
>>810
そもそも>>809が何を言いたかったのかわからんが
それaがBooleanじゃないと同じじゃないからな
2020/05/03(日) 16:23:21.84ID:7ZZm2K4r0
たしかにそうだ
2020/05/03(日) 18:57:16.84ID:hVYH2JxT0
うん、>>809が何を言いたいのか不明瞭だな。
あのIf文も自分は嫌いじゃ無い。
見てすぐ分かるんで。

長くても短くてもすぐ分かれば問題なし。
a=not aでも別に良い。
2020/05/03(日) 20:02:39.59ID:GBCMW2mVM
If a = True Then
の時点で嫌い
2020/05/03(日) 20:33:25.77ID:INbjbW0w0
If a Then は気持ち悪いわ
2020/05/03(日) 20:35:39.32ID:9LS/Ekj10
>>814
オバハンが独学で書いてる綺麗なコードって、
a=not aを>>809みたいに書いてるやつかなと思って。
2020/05/03(日) 20:41:41.89ID:jHKSsTzt0
俺はBooleanにたいして= Trueは大概は冗長に感じるけどな
VBAは型がゆるいからなぁ
If a Then は気持ち悪いが、これは変数名が悪い
2020/05/03(日) 22:08:11.47ID:dDcWYHiB0
>>807
perl で組んだテトリスだったかな。あれ見たときはぶったまげた。

元々ワンライナーをやりやすい言語とは言え、あれはもう
何が何やらわからない世界だった。どんだけ頭いいんだよと。

でも、「こんなの理解できないの?ふ〜ん(にやにや)」みたいな
のは生産性的には駄目だよね。


美しさをトリッキーさに見出すか可読性に見出すかは人それぞれ
だけど、自分よりスキルが下の他人に保守させるとか、未来の自
分が保守しないといけないかもとかなら冗長性持ってるほうがいい
かも。

いちばん大事なのは懇切丁寧なコメントだろうけど。
2020/05/03(日) 22:21:26.63ID:dDcWYHiB0
>>805
> ちなみにうちの職場では55歳のオバハンが独学で書いてるVBA
> が一番「きれい」だそうで。教科書通りで、整理整頓されてる感じで
> 非エンジニアには優しいんです。(簡単なものしか作らない人ですけど。)
> でも「リーダブルコード」とか「VBA実践のためのなんちゃら」とか
> 読んで勉強してるの見かけたので、心がけは見習いたいです。

あえて長文引用させてもらったけど、あんた程度の人間がなんで
その55歳の女性を貶めてるの?
2020/05/03(日) 22:55:28.97ID:hVYH2JxT0
>>817
いや、想像はついてた。
大嫌いというのが分からんかった。
2020/05/03(日) 22:57:44.37ID:8sSb2t20H
まともなプログラマなら周りのレベルに合わせて読みやすいコードを書けるよ
VBAの仕事なんかやってる時点でその程度のレベルなんだから仕方ない
2020/05/03(日) 22:58:39.80ID:hVYH2JxT0
>>819
コメントもたくさんあれば良いというもんじゃない。

Dim blFlg AsBoolean 'フラグ

こんなコメントはアホ。
フラグかどうかは名前と型で分かってる。
残すべきはどういうフラグかだ。
2020/05/03(日) 23:00:42.93ID:dDcWYHiB0
>>823
それは確かにコメントっつうより、「ノイズ」だなw
2020/05/03(日) 23:03:28.37ID:hVYH2JxT0
>>822
まともなプログラマなら周りのレベルにあわせて読みやすいコードをかける。
お前とは違ってなw
2020/05/03(日) 23:06:45.24ID:oMB0K2Jka
>>823
こんな奴いるのw
2020/05/03(日) 23:07:47.50ID:hVYH2JxT0
>>824
意外に近いのはある。
コメントより元々の変数名を伝わるものにするのが第一義。
それで伝わりにくい時にコメントで補足する。
2020/05/03(日) 23:13:29.74ID:dDcWYHiB0
ただ、伝わりやすい変数名ってのが読む方の英語の素養に
大きく左右されちゃう不幸が。

TOEICで600くらい(英語の得意な高校生あたり)を想定するのが
いいかなあ。
2020/05/03(日) 23:19:40.85ID:hVYH2JxT0
Cプログラミング診断室の第三章の中盤に出てくるフラグの所に似たようなのが出てくる。
言語は違うが読んどくと良い。

http://www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.3.7.html
2020/05/04(月) 01:56:50.66ID:6MBl5GGH0
ここのスレ見てると、共同で保守してるのに細かい仕様書作ってない感じ
VBA使いって連携取るの苦手だろ
2020/05/04(月) 02:26:38.20ID:5comiU6qd
自分だけ楽するために片手間に作ったやつがいつのまにか広まって、ドキュメントなんかもちろん作ってなくて、最初に作った人は異動しちゃって、みたいなことVBAではよくある
832デフォルトの名無しさん (ワッチョイ e794-C/EQ)
垢版 |
2020/05/04(月) 04:29:56.94ID:eaaQNpcs0
VBAは事務員のオバさんが作る程度のオモチャ
仕様書とか本気で言ってんの?
キモいわ
2020/05/04(月) 06:18:26.16ID:XD3JqXFe0
仕様書を書くような立場で仕事をしたことない人は黙ってな
2020/05/04(月) 08:36:53.65ID:NmZgEDtP0
会社のファイルで仕様書作ってあげてもいいんだけど今の職場では上司が理解できないからあえて作らないでいる
2020/05/04(月) 08:37:36.33ID:NmZgEDtP0
俺は832ではない
2020/05/04(月) 09:29:50.78ID:eyf9VoYQM
全社に配布するようなものは仕様書も作るしテストもやるけど、自分とか課内で使うようなツールだと作りっぱだな
別に他の言語でも変わらんと思うが
2020/05/04(月) 09:55:22.79ID:oqIKeiQj0
最近よく来る馬鹿どもが仕様書作れると思うのか?
2020/05/04(月) 10:02:07.63ID:cVQIuVcH0
共同開発やドキュメントが必要になるレベルのプロジェクトには別の言語を使うのが普通
VBAスレで仕様書の話題はスレ違い
2020/05/04(月) 10:28:02.39ID:ESbXk+mE0
はいつぎの方
2020/05/04(月) 10:39:56.70ID:EYE1xMNJ0
うちの職場じゃボタン押すことぐらいしか出来ないような連中ばかりだから
仕様書どころかマニュアル作っても1割ぐらいしか理解してもらえないだろうな
目の前で説明しても少し込み入った設定になると覚える気一切ないしな
俺がいなくなったら終わりと思ってる
コメントすら残してない
841デフォルトの名無しさん (ワッチョイ a7ad-ur4w)
垢版 |
2020/05/04(月) 11:03:15.13ID:mKy38ERH0
こんにちは。
このスレを見て勉強しようと思って色々読んでは、たいてい
なんの話をしているのかもわからない、プログラマではない層の者です。
上の方で、
>>809
If a = True Then 
a = False
ElseIf a = False Then
a = True
End If
みたいな書き方っていやだね。
>>810
a = Not(a)  でいいんじゃ?

という会話があったのですが、>>809 って
どんな時に使うのかさっぱり???でした。
どなたか暇つぶしにでもご教示いただけませんでしょうか。
2020/05/04(月) 11:58:39.88ID:oqIKeiQj0
>>841
死ね
2020/05/04(月) 11:59:42.54ID:zFV2kJYS0
ドキュメントが必要かどうかに言語は関係ない
プロジェクトの内容次第
2020/05/04(月) 12:35:48.74ID:NmZgEDtP0
>>841
例えばテレビのリモコンの電源ボタンとか消音ボタンのような使い方をするイメージ
2020/05/04(月) 12:43:46.28ID:RsDc9cGOM
>>838
お前の所の普通が世間一般の普通じゃないだけが
2020/05/04(月) 12:48:54.23ID:cVQIuVcH0
>>841
誰も使わない悪い例を書いただけ
2020/05/04(月) 13:16:33.95ID:c8yfA7Q3M
>>845
お前いつも質問スレに無関係な書き込みばっかだな
どうせPC-VANやってた老害だろ
2020/05/04(月) 13:17:26.32ID:n6lRLUl70
If a = True Then

誰にでもわかる書き方でとても良いと思う

今VBAを勉強する人は本職プログラマではなく
別に仕事があって、その効率化の為に学んでる人が主でしょう

そしてそれを非プログラマ同士で共有するのなら
どの本にでも書いてある書き方の方が望ましい
匿名の名人様の言葉に右往左往する必要はないよ
2020/05/04(月) 13:43:10.72ID:/ITc8kQd0
>>847
自己紹介かよww
2020/05/04(月) 14:09:51.63ID:9S16/cFq0
Debug.Print xml.getElementsByTagName("タグ名").Item(0).Text

Microsoft XML, v3.0 参照 → OK
Microsoft XML, v6.0 参照 → エラー

何でやねん。
2020/05/04(月) 14:14:20.30ID:r232eNWS0
>>841
卜グルボタンとかチェックボックスのようなオンオフするようなものを変数で管理しようとした時に、変数がTrueならFalseに設定し、FalseならTrueに設定する処理を書いている。

最初のIf文の方は英文が分かれば簡単に理解出来る。
Notを使う方はTrue/Falseだから変数を変数自身と反対にすることで実現してる。
2020/05/04(月) 14:35:44.64ID:m3H0OQVZ0
検索Dialogの検索場所(WithIn)をVBAから切り替えるアイデアをお持ちの方いたら教えていただけないでしょうか。
全シートから検索するのが目的ではなく、ブック全体検索後に何気に範囲指定置換を実施して引き起こされる惨状を回避したく。
(または別視点による工夫でもOKです)
詳しい方、よろしくお願いします。
2020/05/04(月) 15:43:06.15ID:ESbXk+mE0
>>852
意味不明な点が多すぎる。
>ブック全体検索後に何気に範囲指定置換を実施して
 検索と置換ダイアログでは検索、置換は違うタブだから操作ミスは起きずらいが、
 そこまでしなきゃならないのか

>引き起こされる惨状を回避したく。
 惨状って具体的になにか

そもそも惨状とやらが起きるのは、GUIの話なのかVBAの話なのか
854デフォルトの名無しさん (スップ Sd7f-C/EQ)
垢版 |
2020/05/04(月) 15:44:13.44ID:gO9XNStOd
今からVBAなんて覚える必要は全くない
855デフォルトの名無しさん (ワッチョイ a7ad-ur4w)
垢版 |
2020/05/04(月) 18:17:24.80ID:mKy38ERH0
841です。
丁寧な解説、みなさんありがとうございました。
勉強になりました。
856デフォルトの名無しさん (ワッチョイ 67f9-qVEi)
垢版 |
2020/05/04(月) 19:20:35.81ID:V2+TGFiQ0
>>855
アンカーも書けず全角で数字を書くよな馬鹿は死ね
2020/05/04(月) 19:40:04.11ID:m3H0OQVZ0
>>853
説明が不足していました。

検索と置換のタブはパラメータ設定の記憶が共通となっております。
ブック全体検索を行った後に範囲を選択して範囲内置換を実施しようとCtrl+Hを押します。
すると前回検索時の "検索場所=ブック"が活きている状態になっております。
気づかずに実施すると全シートの指定文字列が置換されてデータが破壊されてしまいます。
コロン ":" でも削除置換しようものなら全ての時刻書式が破壊されます。
お試しください。

これを防ぐには、ブック内検索を実施した際は引き続きシート内検索を実施して設定を戻しておく必要があります。
普段ブック内検索ってあまり使わないのでこんな時に限って忘れてしまいます。
VBAはどうなっているかというと、.Find .Replace共に、WithInパラメータが存在しないため引数指定できず、直前のUI操作依存となるわけです。
自動化された置換処理があったりすると、事故が起こるわけです。

本件、GGってよく捜してみたら同様の悩みに対するQAありました。

 Range("A1").Find("*")

この1行を実施するだけで検索場所をシートに戻せるようです。
逆に検索場所をブックにする方法を探しているところです。

ご存じの方おられましたら教えてください。
2020/05/04(月) 20:21:19.69ID:2XIJsT+F0
.OpenTextで開いたテキストファイルを操作したいのですがやり方がわからなくて困っています。
拡張子CSVなら通常のエクセルワークシートと同様に扱えますが、テキストファイルは無理なのでしょうか?
Workbooks.Countは開いたテキストファイルの分増えているようですが…
ご教示お願いいたします。
2020/05/04(月) 20:24:42.58ID:mUlUr63md
テキストファイルの中身はどのようなフォーマットで、どう操作したいのですか?
860デフォルトの名無しさん (ワッチョイ 87e6-aR2J)
垢版 |
2020/05/04(月) 20:40:40.91ID:c199Arvf0
1セルに1文字づつならExcelチックに楽しめそうだな

知らんけど
861デフォルトの名無しさん (ワッチョイ a78e-MvRk)
垢版 |
2020/05/04(月) 20:56:39.11ID:oqIKeiQj0
次から次へと馬鹿が来る
2020/05/04(月) 21:05:25.33ID:ESbXk+mE0
>>857
まず、問題としてる事象は提示している方法で解決するんだよね
そのブック開いたときとか操作したときに実行すればいい

>「ブック全体検索を行った後」に「範囲を選択」して「範囲内置換を実施」(ブック全体と指定しているオプションを開いたまま)
 → その悪意に満ちた行為のみを想定するの?
   検索ダイアログのオプション設定は起動中のExcelアプリ(プロセス)に記憶されるから、
   Excelアプリを開いたまま同じPCで同様の操作をしないと再現しないはず

>気づかずに実施すると全シートの指定文字列が置換されてデータが破壊されてしまいます。
 → さっきの操作をすると検索オプションは開いてるはずだけど、
   それでも気付かずファイル保存するっていう悪意ry
   GUI操作->GUI操作で出る問題なら、運用で禁止するか保護するか、影響に基づいて運用システム自体を見直す

>逆に検索場所をブックにする方法を探しているところです。
 → 問題としてる事象の解決は自分で提示しているようだけど、
   逆に引き起こしたいってことは、単にやりたいから?
   VBAで置換するなら別に全シートをReplace擦ればいいだけだし
   GUIでブックにしたいならそう操作すればいいけど、何が必要なの

検索と置換ダイアログの操作はCommandBars.dialogsとかExecuteMsoとかで表示は出来る
ウィンドウ操作にしても他のダイアログ操作と似たようなもんだろう(APIが多分必要)

GUIとVBAをごっちゃに対応するから要らない悩みを抱える
運用やコストを考えない妄想の機能なら、それこそ趣味でアドインでも作ればいい
2020/05/04(月) 21:24:09.39ID:2XIJsT+F0
説明足らずで申し訳ありません。
カンマ区切りのテキストファイルに対してOpenTextを使います。これでカンマごとにセルに値が分けらたエクセルブックが開きます。
このブックのシートを通常のエクセルシートと同様に、例えばRange("A1").Activateとしたいのですが、ブックをどうやって指定すればいいのでしょうか?

以下の方法を試しましたがうまくいきません。
元々開いているブックが一つのとき、テキストファイルはWorkbooks.CountWorkbook=2として開かれることを確認。このときWorkbooks(2)をVariant型の変数に代入しようとしました。

Set myBook = Workbooks(2)

ウォッチ式でmyBookの値を確認すると
型 Variant/Object
値 <変数なし>
となり値が取得できません。

テキストファイルの拡張子をCSVに変更すると問題なく値が取得できます。

すみませんがよろしくお願いいたします。
2020/05/04(月) 21:39:32.81ID:m3H0OQVZ0
>>862
ご回答ありがとうございます。

>オプションを開いたまま
これの意味がわからないですが、ダイアログを開いたままという意味なら、閉じても記憶は維持します。
全体検索実施と範囲選択実施は一連の動作じゃないです。
例えば複数のファイルを開いて作業していて、全体検索を実施したファイルは既に1時間前に閉じていたとしても設定は維持されます。
これを悪意と言われましても、、
まあ、この点は前述のコードをシートイベント等に挟むことで防げそうです。
(設置Bookに限られるかな?まあ、良い方法を考えてみます)

>それでも気づかずに
キーボード主体でマウスはほぼ使わない派なので、範囲選択→ダイアログ開く→検索語、置換語入力→Enterの動作は
一連の操作で、ガッ、ガガガッで感じでやっちゃうのでダイアログのパラメータいちいち確認しないんですよね。
ちょっと落ち着けよって話なんでしょうけど。

>問題としている事象の解決は自分で提示しているようだけど、
最初に掲げた命題が "VBAで検索場所(WithIn)を切り替えたい" だったので逆の操作もできれば知りたいという程度です。
破壊リスクは回避できそうですが、例えば範囲が”シート"の状態からVBAで"ブック"に変更して全置換も可能なのかな、という疑問です。
結論としては通常の方法では出来なそうですね。
Worksheets.Select: Cells.Select を実行すれば、シートをForで回さなくても
 Selection.Replace できることもわかりましたのでこれで解決としたいと思います。

>GUIとVBAをごっちゃに対応するから要らない悩みを抱える
GUIの設定がVBA操作にも影響を与えてしまうから制御できないかなと思った次第です。

お付き合いいただきありがとうございます。
2020/05/04(月) 21:50:38.13ID:6MBl5GGH0
>>863
txtファイル開いた時点で何かしらのファイル名が付いてるでしょ
2020/05/04(月) 22:13:52.11ID:HiZbEqQh0
特に目的があるわけではないけど、興味があってVBAを勉強しようと思ってます。
皆さんどんな勉強法しましたか?おすすめの本とか有りましたら知りたいです
2020/05/04(月) 22:16:36.67ID:ESbXk+mE0
>>864
まあ終わってるからいいけど・・

>>オプションを開いたまま
>これの意味がわからないですが、ダイアログを開いたままという意味なら、閉じても記憶は維持します。
 →これは、「検索と置換」ダイアログの
  「検索場所」ドロップダウンはGUIだと「オプション>>」ボタンで開かれる拡張エリアにのみ表示されて、
  「ブック全体を選択した」=「オプションを展開表示している」から、GUIなら気付かないわけがない。
  ということ。
  ダイアログ内の設定値同様、オプション展開状況もExcelプロセスで共有してるから、
  他のファイルで展開してるなら違うブックでも展開されたままダイアログ表示される。

>GUIの設定がVBA操作にも影響を与えてしまうから制御できないかなと思った次第です。
  VBAもGUIで行った設定の影響を受けないような、Rangeを指定する記述を普通は心掛けるべきだな
2020/05/04(月) 23:21:11.46ID:igVQrW+K0
今までそーいうものだと思い込ませて放置していたことなのですが、
引数を使うのにカッコつけなきゃいけないメソッドと、使わなくてもいい
メソッドって、なにが違うんでしょうか?なにか理由があるのでしょうか。

Dim a As Range: Set a = Cells.Find(What:="test")
ThisWorkbook.ActiveSheet.PrintOut copies:=1

それに付け加えて、findした結果をcolllectionに格納する際、
カッコをつけるとdouble型、つけないとrange型となりました。

検索結果を格納するcollection.Add 検索range
検索結果を格納するcollection.Add (検索range)

ご教授何卒宜しくお願いいたします。
2020/05/04(月) 23:58:21.23ID:m3H0OQVZ0
>>867
オプションが開かれてるという意味でしたか。
なるほどですね。
呼吸レベルでキーコンビネーションで通り過ぎちゃうので、、しっかり見るべきだと。

>VBAもGUIで行った設定の影響を受けないような
ごもっともです。

普段は .Find系は滅多に使わないのですが、あるとき大被害にあって、、、
どちらかというとGUI操作のほうが悩ましかったので、、、

API制御の方法にも辿り着けて、各Controlの制御もわかりました。
一瞬表示されてしまうのが難点ですが。良い情報をいただきました。

ご助言感謝します。
2020/05/05(火) 01:19:15.50ID:nv2gdYIy0
>>868
とりあえず戻り値があるかないかの違いとでも思っとけばよい
2020/05/05(火) 03:17:48.98ID:SDhPW+o/0
12121212111211121112みたいな数列で、
1212..と続くものにはA、
11121112..と続くものにはBと置き換え、
AABBBのような文字列を作成することはできますか?
2020/05/05(火) 04:45:25.58ID:a+XprBAt0
その数列を文字列に直しておく

これをReplace関数で
1212 → AA
A12 → AA
に置換する

同様に 1112 についても行う
2020/05/05(火) 12:25:05.11ID:hJBFA35lM
>>870
868です。ありがとうございました。
2020/05/05(火) 21:19:05.44ID:lsW1yIjx0
vbaのエディタの話なのですが、皆様はコードの複数行を選択したいとき
ショートカットかなにか使っているのでしょうか?
たとえば、一部のコードが不要になって削除や切り取りしたいときに、
ちゃんと行頭から行末までしっかり選択しないとtabやスペースが残ってしまい、
その後コードがズレたり色々と不都合が生じています。
現在は、Homeで行頭、Shift+下矢印で選択しています。
マウスで左端をドラッグすれば選択できるのは知っていますが、これの
キーボードショートカットとかないんですかね・・・
2020/05/05(火) 21:34:38.69ID:wmeBDlBR0
行選択は知らんが、行削除ならCTRL-Yでよくね
2020/05/05(火) 21:52:41.57ID:PgjsbAaO0
検索すれば出てくるよな、俺は shift+上/下 をよく使うけど
https://excel-ubara.com/excelvba1/EXCELVBA485.html
2020/05/05(火) 22:03:15.71ID:lsW1yIjx0
>>876
web拝見しましたが、「複数選択→tabで行範囲が作成される」という部分
でしょうか?確かに、削除ならこれでいけそうです。
(コピーや切り取りのときにはtab→shift+tabで元通りにしなきゃならないかもですが)
私はずっとvbaを使わずエクセル本体の操作に慣れていたのですが、よく使っているのが
適当な複数のセル範囲を作成⇒それらをshift+spaceで行範囲化
という動作だったので、ここにいる方たちはvbaではどんな操作を
しているのか気になって質問いたしました。ありがとうございました。
2020/05/05(火) 22:06:50.95ID:PgjsbAaO0
ちがうだろ
879デフォルトの名無しさん (ブーイモ MM2b-trzR)
垢版 |
2020/05/05(火) 22:11:42.93ID:NpEa/agLM
このハゲー
2020/05/05(火) 22:30:50.81ID:lsW1yIjx0
>>878
すみません、何回webを読み返しても分かりません…
自分でショートカットを作れる(ユーザ設定のコマンド)という部分
かなとも思ったのですが…
881デフォルトの名無しさん (ワッチョイ 738e-jYUs)
垢版 |
2020/05/06(水) 00:51:48.50ID:Kd1uYxyM0
>>880
馬鹿は死ね
2020/05/06(水) 00:55:04.24ID:zRh9yAG10
>>881
酷いこと言うね
2020/05/06(水) 01:03:21.11ID:6rAOvRF50
コメントアウトだけはctrl+/でデフォルトでできるようにアプデして欲しいわ。。
設定もボタンクリックもめんどい
2020/05/06(水) 08:05:52.83ID:p05hHIhJ0
うーむ…どういじっても分からない…
Ctrl+Yは現在の行だけしか削除されないし、そもそも選択範囲は
作成されないし…
おっさんになった私の限界ですかね汗
2020/05/06(水) 09:03:13.32ID:1Pr5leMy0
>>884
やろうとしていることに何の意味がある?
2020/05/06(水) 09:22:21.96ID:iCjbaALk0
意味のある事しかしなかったら進化しない
2020/05/06(水) 10:57:23.06ID:6rAOvRF50
くっそどうでもいいことに時間かけてるな
2020/05/06(水) 12:16:06.30ID:j2svN8neM
クラスに対してモジュールという概念がよくわかりません。Cで言うところ外部ヘッダファイルとソースみたいなものでしょうか。クラスを使ってたら基本的に出番がない?
2020/05/06(水) 12:56:23.88ID:Z893TlLs0
クラスはOOPに出てくるクラス
newする必要がないならモジュール
2020/05/06(水) 13:46:31.67ID:gPSsYrwFa
馬鹿が進化してどうにかなるのか
2020/05/06(水) 14:02:43.27ID:OIN1lY2H0
モジュールはVBがオブジェクト指向になるまえからの互換のためだから
クラスを使うなら忘れてもいいよ

広域で静的なクラスだと思えばいい
2020/05/06(水) 15:26:50.64ID:G9W2eJpB0
>>865
そのファイル名を使っても値が変数なしになってしまいます…
2020/05/06(水) 16:43:25.70ID:OIN1lY2H0
>>863
それウォッチがちゃんと出ないだけで、ブックそのものはとれてるだろ
試しにやってみたが、myBookのウォッチで展開すると変数なしだが
myBook.Sheets(1).Range("A1").Activate でちゃんと動作するぞ
2020/05/06(水) 18:09:01.45ID:iCjbaALk0
どうにかなるのかと思考停止するバカが炙り出される
2020/05/06(水) 18:27:07.81ID:1Pr5leMy0
目的と手段が逆になる人たまにいる
2020/05/06(水) 18:39:41.01ID:6rAOvRF50
基本的にプログラミングがうまくなる人って、
早い段階で、特定のやり方にこだわらず最終的に要件を満たせればいいってことに気付けるんだよな
2020/05/06(水) 19:32:27.36ID:1Pr5leMy0
本末転倒か、言葉が出てこなかった
2020/05/06(水) 19:37:46.56ID:aLD+Grz6a
それはプログラミングをするという前提を置いている時点で矛盾している
手段はなんでもいいから目的達成できりゃいい、だと、だいたいのことは出来合いのSaaSを契約して使うのが最良
2020/05/06(水) 20:34:47.68ID:6rAOvRF50
仕事ならそうだよね
代わりにSaasでってのは範囲が違うので当てはまらないけど
2020/05/06(水) 20:38:43.01ID:prm5gj7H0
普段の自分のやり方じゃ対応できない場面が出た時は、
変に拘らずに完成優先でやるべきって意味でしょ
2020/05/06(水) 20:48:48.08ID:p05hHIhJ0
>>885
余計な操作が無くなることでかかる時間とストレスが減って、その分
新しい知識や技術を取り入れることに割ける、という意味があると思って
質問してみました。
>>878のちがうだろの結局何が違うのかは分かりませんでしたが…
まあ、ググレカスは昔からある2chの風習だと思いますが。
902デフォルトの名無しさん (ワッチョイ 8f63-07dd)
垢版 |
2020/05/06(水) 22:29:01.29ID:k50qIlTz0
>>901
残念ながら設定でこれだけ躓いて立ち止まるような人は言ってるような時間の有効活用できるとは思えんな
ツールはツールと割り切ったり慣れたりする事ができないなら、今後時間の有効活用できるようにもなれないよ
903デフォルトの名無しさん (ワッチョイ 738e-jYUs)
垢版 |
2020/05/06(水) 22:34:53.59ID:Kd1uYxyM0
>>901
馬鹿は死ね
2020/05/06(水) 23:47:22.90ID:G9W2eJpB0
>>893
できました
ありがとう
2020/05/07(木) 10:28:01.40ID:nnhcaKI70
頭のおかしい人の書き込みを読むのが無駄なので無視しますね
2020/05/07(木) 12:26:16.72ID:D07kRcpQr
はいつぎのひと
2020/05/07(木) 13:12:49.35ID:MibsCGor0
>>896
そいつは違うな。
拘るのは必要だ。

最適なのに拘るの。
だから動いたで終わりにしないで他にもっと良い方法はないかを常に考える。

自分が知らなかった技術を手に入れた時に、これを使えば5年前のあの件はもっと上手く出来たかもと考える。
2020/05/07(木) 14:10:36.95ID:2qiR+IIc0
>>907
ヒマなんだな
2020/05/07(木) 14:23:33.98ID:cpirF9cIa
本気でやり方に拘ったらExcelなんて大半が無駄なわけで
自分達の仕事を守るためにも割り切りは必要
2020/05/07(木) 14:42:35.85ID:O8jL8wQb0
>>896
>>907
短期では手段にこだわらない方が早いが
長期では技術向上になるから両方必要だ
2020/05/07(木) 14:50:52.35ID:2qiR+IIc0
そんな1つのVBAに何日もかけれんわ

時間かけれるならWebサービスとかAPIとかもっと皆が幸せな解決方法が大体あるわ
2020/05/07(木) 17:22:17.83ID:IeUYmiVSd
VBAとか関係無く、プログラミング全般の話なんだけどね。
動きゃ良いとかいう奴はいつまで経っても出来るようにゃならんよ。
2020/05/07(木) 17:23:34.85ID:IeUYmiVSd
>>911
無い。
VBAが使われる所は殆どVBAじゃないとどうにもならんから使われてる。
2020/05/07(木) 17:24:33.58ID:IeUYmiVSd
>>908
出来る奴は瞬時に何通りかは思いつく。
915デフォルトの名無しさん (ラクッペペ MMe6-r6hg)
垢版 |
2020/05/07(木) 17:29:14.38ID:OBEeDnS1M
無知の知
2020/05/07(木) 17:50:13.55ID:oG7+JCgx0
Application.CentimetersToPoints(1)
で列幅1cmにしたいんですが、
何度やっても5.64cmになります。

Rows(n).RowHeight = Application.CentimetersToPoints(1)
はちゃんと行幅1cmになりました。
Columns(n).ColumnWidth = Application.CentimetersToPoints(1)
だと何故か列幅5.64cmになります。
この事についてどう検索しても誰も言及してないことも含めて謎が尽きません。
煮詰まり過ぎて焦げ付いてきたのでどなたかアドバイスお願いします。
2020/05/07(木) 17:58:41.98ID:oG7+JCgx0
あっまさか列と幅のポイントは同じポイントでも数値としては別物って聞いた気もする
そして行幅のポイントの方がVBAのポイントと合致しているという訳か
だとすると列幅のポイントに変換するのはどうしたらいいのか…
2020/05/07(木) 18:13:16.48ID:k5uIH00p0
>>913
列幅の単位は違う

列幅の設定の仕方も
「application.centi〜 列幅」
で検索すればサンプルがいくつか出てくるけどね
2020/05/07(木) 18:13:25.52ID:z+lCu/T70
>>917
ページレイアウトにして、列幅1cmをマクロ記録
2020/05/07(木) 18:13:45.51ID:k5uIH00p0
あ、間違えた
アンカ>>916
2020/05/07(木) 18:17:19.51ID:k5uIH00p0
>>914
瞬時に思い付くのに5年前のコードのこと修正するのかよw
5年間もずっとVBAばっかやって、しかもそんな昔のコード引きずってるのw
2020/05/07(木) 19:06:33.04ID:IeUYmiVSd
>>921
あれ、分からんかった?
瞬時に5通り思いついたとして、5年後に知らない技術を獲得した時に、あの時これ使えばもっと良くなったなあと思うとか。
あるいは昔、どうしても解決出来なかった問題が解決出来たとか。

俺の場合はデフォルトのプリンター設定のポートを変更するプログラムが出来なくてね。
PRINTER_INFO_5構造体を使ってプリンターのプロパティ設定変更するのは出来てたけどポートはさらに先のポインタでその時は出来なかった。

もっとも、これ10年以上前の話だし、それで修正するとかいう話でもないけどな。
2020/05/07(木) 19:59:41.10ID:k5uIH00p0
>>922
効いてて草、必死すぎw
2020/05/07(木) 20:18:07.38ID:IeUYmiVSd
>>923
理解出来なくて悔しいからって、そうまでして絡みたいの?
2020/05/07(木) 20:58:22.79ID:SRAFxxem0
効いてる事にして勝ったつもりになってるけど実は・・・
2020/05/07(木) 21:20:02.04ID:k5uIH00p0
>>924
別に古臭いVBAおじさんに絡みたいとかないけどなw
その程度でどや顔して、こんなところで長文まで書いて哀れだなあってねw

・瞬時に5個思い付く(ドヤア)
・10年以上前の話(ドヤア)
・どうしても解決出来ない問題が解決できた(ドヤア)

いい年して恥ずかしいww
2020/05/07(木) 21:20:55.13ID:XMGIuLDd0
>>916
煮詰まったなら完成じゃん。
2020/05/07(木) 21:29:03.52ID:vCXp7vkf0
4月、5月、6月というシートを請求書という新しいブック名のシートに追加していきたい場合

請求書というブックがなかったら
請求書というブックを作成して○月のシートをコピー
既に請求書というブックがあったら
そのブック内に○月のシートをコピー

という考え方でいいですか?
というか可能ですか?
2020/05/07(木) 21:34:48.09ID:wHiSIw2F0
既にあるブックを変えて問題ないんならいいんじゃないの
2020/05/07(木) 21:46:21.07ID:IeUYmiVSd
>>926
悔しいと素直に言えば良いのにw
2020/05/07(木) 21:58:23.82ID:k5uIH00p0
>>930
あ、恥ずかしくなってるwかわいーねーw
2020/05/07(木) 22:16:17.23ID:oG7+JCgx0
色々調べ直して列幅1cmできた! ありがとうございます。
それにしたって、なんと解りにくい…
CentimetersToColumnPointsみたいにしてくれればいいのに…
2020/05/07(木) 22:22:20.56ID:IeUYmiVSd
>>931
自分の技術が足りないのがそんなに悔しいのかねw
2020/05/07(木) 22:33:54.55ID:k5uIH00p0
>>933
恥ずかしくて言えることないの草
黒歴史だねーww
2020/05/07(木) 22:35:53.74ID:k5uIH00p0
>>933
あ、>>928とか5通り早くコード付で答えてあげなよww
あと5年後まで改善策見つけたら書き込んでねw
2020/05/07(木) 22:48:13.57ID:IeUYmiVSd
>>934
君が初心者に毛が生えたレベルなのは俺の責任じゃ無いんだ。
悔しいからって絡むのは辞めてくれw
2020/05/07(木) 22:50:20.24ID:IeUYmiVSd
だいたい、バカにしようととしたら自分より上のレベルで悔しくても、それは自分が悪いんだろw
2020/05/07(木) 23:08:01.99ID:ATN3rOjQ0
array関数で要素を代入する際に、プロシージャ引数のヒントの様にカンマで区切ると何を入力すべきか表示させることは出来ないでしょうか。要素が多いので解りづらくて
戻り値ありの関数作るべきなのでしょうか
2020/05/08(金) 00:15:43.02ID:7LgH0Xf00
>>938
入力に困るほど大量のデータをプログラム中に直接書くのは設計が悪いと思う
せめてワークシートに見出しを付けて並べたら?
2020/05/08(金) 00:44:49.38ID:NrG+fdAu0
>>936
恥ずかしい書き込みするやつの言うことは違うなあw
10年以上前の話とか言っちゃうんだもんなあww
で、5年がなんだって?w
2020/05/08(金) 02:37:36.79ID:LrYvIqoM0
>>940
だから絡むの辞めてくれ。
初心者のプライドが傷ついたのかよw
2020/05/08(金) 09:10:24.43ID:gaKPf4O20
1000とった方が勝ち
2020/05/08(金) 09:39:57.65ID:NrG+fdAu0
>>941

>出来る奴は瞬時に何通りかは思いつく。

>もっとも、これ10年以上前の話だし、それで修正するとかいう話でもないけどな。

>瞬時に5通り思いついたとして、5年後に知らない技術を獲得した時に、あの時これ使えばもっと良くなったなあと思うとか。

ん?早く質問者に5通りコードで回答してあげなよ、プロVBAおじさんww
2020/05/08(金) 10:17:39.27ID:SGzHt0H00
このスレにコロナでも混ざってんの?
2020/05/08(金) 12:21:01.99ID:KpBIrL5Ad
>>943
その返しもバカっぽくね?
質問の内容とか考えた?
2020/05/08(金) 12:25:59.54ID:KpBIrL5Ad
>>943

>早く質問者に5通りコードで回答してあげなよ

日本語をちゃんと理解することができる?
2020/05/08(金) 12:27:38.79ID:EoiUnzGX0
static変数の宣言と同時に初期値入れても、Cと違って毎回初期値が入るようなんですけが回避方法ってありますか
2020/05/08(金) 12:37:08.32ID:NrG+fdAu0
>>945
ほらほらー、10年以上やってこの程度も5通り分からないの?ww

「出来る奴は瞬時に何通りかは思いつく。」
んだろwwほらほらww
2020/05/08(金) 18:51:21.09ID:F9AE4+4ta
バッチを非同期で実行したいんだけどShellでやってもWSHShellでやっても
バッチの終了まで待たされるんだけど何故?

やってることはIEを操作してファイルをDLするところまでVBAでやって
それ以降の処理をバッチでやりたいんだけど…
950デフォルトの名無しさん (ワッチョイ cfe6-r6hg)
垢版 |
2020/05/08(金) 19:02:53.06ID:XNwDJZFz0
非同期オプション付けても出来ないのですか?
不思議ですね
2020/05/08(金) 19:59:31.15ID:swHMPSPD0
最大で何行くらい組んだことある?
2020/05/08(金) 20:43:59.77ID:1Hremoh70
2000
953デフォルトの名無しさん (アウアウウー Sa1f-2+Ho)
垢版 |
2020/05/08(金) 21:13:02.00ID:oLBub1X/a
vbaでハイパーリンク設定済み場所から
フルパスを取得したいです。

https://www.google.co.jp/amp/s/gamp.ameblo.jp/ksej/entry-11288945247.html

このサイトの方法でネットワーク上のアドレス取得して
あるセルにフルパスを貼りたいんだけど
カレントディレクトリが¥¥A¥B¥C
とあったら、¥¥A¥Bまでしか貼り付けに反映されないのってなぜかわかりますか?

msgboxでカレントディレクトリだけ表示させたら
Cまで表示されますが貼り付けたらBまでしか表示されない感じです。

あとカレントフォルダの設定はこのサイトの方法です。
https://vbabeginner.net/vbaでネットワークドライブにカレントを変更する/
2020/05/08(金) 21:31:38.77ID:KpBIrL5Ad
>>948
くだらねえ煽りの前にお前が日本語を理解出来て無かったのが分かったのか?
そして今は理解出来てるんだろうな?
2020/05/08(金) 21:32:10.12ID:KpBIrL5Ad
>>948
そしてもう1つ。
質問の内容とか考えた?
2020/05/08(金) 21:43:28.38ID:KpBIrL5Ad
>>949
Shellは待たされないと思うぞ。
待つにはタスクからプロセスハンドルを得て、WaitForSingleObjectとかを使う筈。
←たしかこいつは古いんで今は似た名前の奴を使う。
957デフォルトの名無しさん (ワッチョイ 738e-jYUs)
垢版 |
2020/05/08(金) 22:58:17.96ID:AMoglHga0
>>953
ただのコピペしかできない馬鹿だからだろ
958デフォルトの名無しさん (アウアウウー Sa1f-2+Ho)
垢版 |
2020/05/08(金) 23:39:12.99ID:oLBub1X/a
>>957
他のサイトも色々見て調べたり試行錯誤したのですが
Cが表示されなくて。

何か縛り的なのがあるかわかりますか。
貼り付け時の表示文字数に制限があるとか。

最悪わからなければ、
¥¥からCまでを取得したものをセルに貼り付けて
C以降を貼り付けたものを&で繋げて使おうか迷ってます。
2020/05/08(金) 23:49:29.90ID:7LgH0Xf00
>>953
最小限のコードで実験してみ?
(1)ワークシートにハイパーリンク設定
(2)FSOでフルパス取得
(3)MsgBoxで確認
(4)セルにフルパスの文字列を入れる
960デフォルトの名無しさん (アウアウウー Sa1f-2+Ho)
垢版 |
2020/05/08(金) 23:56:44.70ID:oLBub1X/a
1)と2)と4)についてはBまでの表示

3)についてはフルパスでは試してないので、試して見ます。

ちなみに3)はカレントディレクトリのみで行うと、Cまで表示されて、次の行に2)を試すとBまでになってしまいます。
2020/05/09(土) 00:37:26.19ID:SO2yq4ky0
>>954
質問どんどん来てるよww
10年やってきたんだから早く5通り以上答えてあげなよww
そしてリファクタリング出来たらその都度書き込んでなw

>出来る奴は瞬時に何通りかは思いつく。

>もっとも、これ10年以上前の話だし、それで修正するとかいう話でもないけどな。

>瞬時に5通り思いついたとして、5年後に知らない技術を獲得した時に、あの時これ使えばもっと良くなったなあと思うとか。
2020/05/09(土) 09:12:02.43ID:jb1+fPLha
>>956
思うぞと言われても実際待たされてるから困ってるんだが。

検索しても待つ方法しか引っかからんし…
CPU使用率が上がるとVBAスクリプトが止まるとかそういうわけじゃないよね
2020/05/09(土) 09:12:34.65ID:5lxB5cuMr
パスとドライブの違いわかってる?
uncパスの形式わかってる?
そのaもbもフォルダじゃないけど、なにをどうやって表示させた?
2020/05/09(土) 10:41:18.50ID:OK904gHA0
最小限のコードでテストしてみた
Excel2019のshell関数でバッチの同時起動できてるから原因は別の所にある
https://i.imgur.com/bqqc2uc.png
2020/05/09(土) 11:14:42.24ID:m7V0shMq0
>>953
ハイパーリンク扱う時って表示文字列とアドレスの2つがあった気がするが関係ないか?
966デフォルトの名無しさん (ワッチョイ 8f59-2+Ho)
垢版 |
2020/05/09(土) 12:02:06.49ID:zV8Vx2bY0
>>963
わかりにくくてすいません。

abcは仮に書いた感じで、実際はネットワーク上のフォルダ名になります。
2020/05/09(土) 12:06:22.54ID:OK904gHA0
>>966
何をやろうとしてるのかイマイチよくわからん
試したコードとワークシートのスクショをここに書いて
2020/05/09(土) 12:11:35.33ID:74X5YOol0
>>961
日本語が理解出来てたのか出来て無かったのかどっちだい?
話はそれからだ。
969デフォルトの名無しさん (ワッチョイ 8f59-2+Ho)
垢版 |
2020/05/09(土) 12:17:50.79ID:zV8Vx2bY0
>>967

ネットワーク上にあるエクセルファイルで、
相対参照で貼り付けされたハイパーリンクがあるんですが
それを絶対参照で取得したいです。

カレントディレクトリを¥¥a¥¥b¥¥cで設定し
GetAbsolutePathNameで取得しあるセルに貼り付けると
なぜか¥¥a¥b¥取得したパス.xlsxになります。
カレントディレクトリをmsgboxで表示すると¥¥a¥b¥cとなります。

今端末が手元にないので、スクショ取れるようになり次第
対応します。

助かります。
970デフォルトの名無しさん (ワッチョイ 8f59-2+Ho)
垢版 |
2020/05/09(土) 12:23:23.31ID:zV8Vx2bY0
>>965
アドレスを変更しています。
2020/05/09(土) 12:40:40.05ID:5ucHUX9S0
どうやってvba勉強した?
2020/05/09(土) 12:48:47.19ID:drDVgFRjH
いくつか他の言語はできるからなんとなく雰囲気で
特に勉強はしていない
2020/05/09(土) 13:04:53.46ID:74X5YOol0
>>962
何となく分かった。
待たされたんじゃなくてフォーカスがバッチファイルにある。

よく、たくさんのウィンドウが開いてる時なんかにメッセージを表示しようとタスクバー上で点滅してるのと同じ現象。
バッチファイル実行中にExcelをクリックするとすぐ実行されるよ。

Shellの第2引数にvbNormalNoFocusを指定してみよう。
2020/05/09(土) 13:16:32.84ID:74X5YOol0
>>969
カレントディレクトリとは何かを調べた方が良い。
これはエクセルファイルだとかに関係が無い。
動いている場所だ。
ブックのある場所でも無い。

ハイパーリンクの相対参照、絶対参照の操作でカレントディレクトリが関係することは無い。
2020/05/09(土) 13:16:59.46ID:hJO1Owz9d
>>971
マイコンBASICマガジンのゲームがやりたくて覚えた
子供は記憶力がいいからすぐ覚えた
大人になってから始める人は大変だろうね
976デフォルトの名無しさん (ワッチョイ 738e-jYUs)
垢版 |
2020/05/09(土) 13:21:14.53ID:WSrPnN3q0
意味もわからずただコピペしかできない馬鹿には無理
2020/05/09(土) 13:25:01.47ID:SO2yq4ky0
>>968
話はそれからだ、ってコード5つ提示もしないで答えない10年経験者に言われてもなあww
ほらコード5つ提示して答えてあげなよw

>出来る奴は瞬時に何通りかは思いつく。

>もっとも、これ10年以上前の話だし、それで修正するとかいう話でもないけどな。

>瞬時に5通り思いついたとして、5年後に知らない技術を獲得した時に、あの時これ使えばもっと良くなったなあと思うとか。
978デフォルトの名無しさん (ワッチョイ 8f59-2+Ho)
垢版 |
2020/05/09(土) 13:27:57.61ID:zV8Vx2bY0
>>974
ご指摘ありがとうございます。

相対参照だと./や../で省略されてしまうので
省略される箇所(ネットワーク上(インターネット上ではない)の決まったフォルダ)
を指定するためにカレントディレクトリで設定していました。

ちなみに複数端末でファイルを操作する事を想定しています。

もう少し勉強します。
2020/05/09(土) 13:33:59.72ID:74X5YOol0
>>977
やっぱり日本語分かってねえじゃんwww
2020/05/09(土) 13:40:39.44ID:m7V0shMq0
>>969
ネットワーク上にあるエクセルファイルはUNCパスになるので
ディレクトリ構成はサーバー上での階層
一番上はサーバーのIPアドレス(DNSで変換された名前)
2020/05/09(土) 14:38:22.98ID:SO2yq4ky0
>>979
自分の言ったこと分かってねえじゃんww

>出来る奴は瞬時に何通りかは思いつく。

>もっとも、これ10年以上前の話だし、それで修正するとかいう話でもないけどな。

>瞬時に5通り思いついたとして、5年後に知らない技術を獲得した時に、あの時これ使えばもっと良くなったなあと思うとか。
2020/05/09(土) 15:54:31.92ID:INzaqzr5M
議論してるところ申し訳ないけど
>>928
わかる方お願いできますか
2020/05/09(土) 15:58:18.33ID:JX27GBwZ0
>>982
合ってるよ
2020/05/09(土) 16:04:20.17ID:74X5YOol0
>>981
バ一カw

>>983
そう、これが正解。
バカと違って質問の意味が分かってる人はこういう答えになるから何通り等の方法等とならないことを知っている。
985デフォルトの名無しさん (ワッチョイ 7332-R2sI)
垢版 |
2020/05/09(土) 18:27:33.02ID:d0o5iTyS0
>>983
便乗してそのコード教えてくれせんか
986デフォルトの名無しさん (バットンキン MMbb-6LGb)
垢版 |
2020/05/09(土) 18:39:39.46ID:3Qrhs3L2M
ある表があって一行ずつアクティブセルをループで下に移動させ、条件があった場合offset で特定のセルを集計するマクロを作成し使用してたんだけど、
アクティブセルじゃなくてcellで置き換えたら実行スピードが早くなった。
やっぱり画面が遷移すると遅くなるんだよね?
オートフィルタ組み込むと遅くなる?
2020/05/09(土) 19:29:16.68ID:SO2yq4ky0
>>984

矛盾しまくってるがww
頭悪いなーVBA10年以上やってるんだろww
瞬時に5通りできるんじゃないんですかー?www

ID:KpBIrL5Ad
ID:74X5YOol0
ID:MibsCGor0

>バカと違って質問の意味が分かってる人はこういう答えになるから何通り等の方法等とならないことを知っている。

>出来る奴は瞬時に何通りかは思いつく。

>もっとも、これ10年以上前の話だし、それで修正するとかいう話でもないけどな。

>瞬時に5通り思いついたとして、5年後に知らない技術を獲得した時に、あの時これ使えばもっと良くなったなあと思うとか。
988デフォルトの名無しさん (ワッチョイ 0b87-YOOL)
垢版 |
2020/05/09(土) 19:48:20.99ID:YHeP8Ot70
>>985
死ねよ
2020/05/09(土) 20:09:54.40ID:7P+we5mg0
フォームからシートにデータを入力する場合、セルに値を入れるコードはどちらに書く方が良いのでしょうか。
シート側に関数処理書いて、フォーム側から引数渡す形を考えていますが、本来はどういう使い方なのかわからず。
2020/05/09(土) 20:14:54.27ID:m7V0shMq0
>>989
書き方が何通りかある場合、どれを選択するかは作る人が選択すればいい
2020/05/09(土) 20:29:18.83ID:JFqcrtJG0
>>986
表示に影響する処理は速くない
2020/05/09(土) 20:32:02.99ID:JFqcrtJG0
>>989
自分だったらシートには書かない
2020/05/09(土) 21:56:43.63ID:RixiaBnA0
>>989
変なやり方だね
2020/05/09(土) 22:11:53.76ID:yzOAykNA0
>>937
フォームとシートでどちらが主役かで決めるといいと思ったけど
シートをコピーしたときにコードもコピーされて後で大変になるから、シートじゃない方がいいね
2020/05/09(土) 22:12:57.07ID:yzOAykNA0
×>>937
>>989
です
2020/05/09(土) 22:22:33.93ID:7P+we5mg0
ありがとうございます。
フォームのコード量が多くなりますね。別クラスに記述してみます。
2020/05/09(土) 23:28:56.55ID:m7V0shMq0
>>996
お前の仕事はお前が判断すればいい
2020/05/09(土) 23:43:47.15ID:G+eyUkVB0
俺の仕事はお前のものだ。
お前の仕事はお前のものだ。
お前の手柄は俺のもの。
俺の手柄は俺のものだ。

みんな違っていいじゃないか。
だって、人間だもの。
2020/05/10(日) 08:02:11.47ID:Nkoph0aj0
俺の手柄なら金くれ
2020/05/10(日) 08:02:44.03ID:Nkoph0aj0
1000
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 53日 15時間 35分 24秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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