20/06/07 20:32:18 1v0hAbPt.net
>>596
>>594
オイオイ、♬みたいな奴だろ。
文字列変数で受けると?になっちまうんだ。
623:582
20/06/07 20:50:04 1v0hAbPt.net
ファイル名に?が入ったまま何かの処理をすればエラ―吐いて止まるというのは考えられる。
というか、何で俺が解説しなきゃならねえんだよ。
頼むぜw
624:582
20/06/07 20:56:23 1v0hAbPt.net
>>591
そいつはレベルが低いな。
スペースなんて正式な住所や氏名にはあり得ねえとして、入力したもんから片っ端から抜いちまう処理を入れるもんだ。
ハイフンはちょっとあり得る。
普通はマイナス使うと思うんだが罫線記号使ったり似たのがいっぱいあるからな。
625:デフォルトの名無しさん
20/06/07 21:55:32.54 XVHV5xvT.net
これだな
>Excel VBA 質問スレ Part43
>274 名前:デフォルトの名無しさん[] 投稿日:2016/12/02(金) 22:33:29.62 ID:rRSQCExt [1/2]
>ちょっと質問
>
>・おもむろにファイルエクスプローラを開く
>・なんでもいいからファイルのプロパティを開く
>・そこの作成日時をドラッグする
>・セルのA1にペーストする
>
>例えば 2013?年?12?月?1?日、??17:02:28
>これを(すでに文字化けしてると思うが)
>2013/12/1 17:02:28
>に整形したいんだけど
>どうすればいいんだ?
>半角に見えるけどサクラでみるとU+200Fとなっている
>中には数値の間にも混入しているのもある
>最初からFSOで取得するのは無しで
>すでに手動で取り込んだ数百件ものデータなんだ
>よろしくお願いします
626:デフォルトの名無しさん
20/06/07 22:23:02.67 QPxy+dct.net
再現しないぞ
627:デフォルトの名無しさん
20/06/07 22:44:34.20 Zvt1FY8k.net
>>600
そりゃ、住基ネットのデータベースが
インターネットからは参照不能で
全国の一般の素人が入力する事を想定した設計に無理があったんでしょ。
628:デフォルトの名無しさん
20/06/07 23:18:32 kciisc/v.net
前スレでここで教えて貰ったのが完成した
課のみんなのPCに入れて使いたいらしい
パス指定するタイプだから
・読取専用にする
・プロジェクトプロパティをロック
・C直下に置いてショートカットをデスクトップに置いてやる
・シート名は変えるなと徹底
こんだけ教えとけばまぁ大丈夫だよね?
629:デフォルトの名無しさん
20/06/07 23:22:24 wDFSrhzA.net
セルの行と列の変数名って業務でよく使うんだけど
Dim r As Long '行
Dim c As Long '列
これで癖付けてっていいですか?いいですよね?
630:デフォルトの名無しさん
20/06/07 23:26:23 Zvt1FY8k.net
>>604
何が完成したのやら
レス番を貼るか概要を書いて貰わないとわからん
631:デフォルトの名無しさん
20/06/07 23:35:39.43 Zvt1FY8k.net
>>605
そのコード読むのが自分だけか複数人かでメンテしだいじゃ無いの
632:デフォルトの名無しさん
20/06/08 01:11:56 VAdCiuLB.net
>>598
確認した
変数で受ける以前の問題だな
DirとかいまだにUnicode対応されてないのか
だったら8.3形式で返せばいいのにな
633:デフォルトの名無しさん
20/06/08 07:02:43 upiiQwtH.net
>>608
ググるとFileSystemObject使えって書いてあるな
634:582
20/06/08 07:46:04 ACGXca97.net
>>609
でも、変数で受けちまうと何使っても?になっちまうよ。
それにFileSystemObjectのファイル列挙は糞遅かった筈。
特別な理由が無いならエラーで抜けちまって、特殊なファイル名には非対応とメッセージ出した方が良い気がする。
635:582
20/06/08 08:00:05.61 ACGXca97.net
>>603
少し住所を扱う処理を動かせば直ぐに気付くレベルの話だよ。
特にスペースなんて人名や住所以外でもよくある話。
全角だろうが半角だろうが""に変換しちまうのはよくやるだろう。
まあ、全角半角は数字とかアルファベットでも問題になるからその前に
636:StrConv使って統一するとかが普通の処理だろう。 ハイフンだって思いつくものはマイナスに変換する程度のことはする。
637:デフォルトの名無しさん
20/06/08 08:12:22 /JIEFRnW.net
むしろテキストボックスのEN_UPDATEでスペースやハイフンを消せば楽
郵便番号欄は数字以外受け付けないようにスタイル指定するだけでもいい
638:デフォルトの名無しさん
20/06/08 08:46:24.73 k1oezjz2.net
フォルダを指定し、そのフォルダ内の全てのブックの、各ブックのシート"sire"の2行目から最終行をコピーして
シートcompの最下行の一つ下に張り付けていき、I列に各ブック名を記入していくマクロを教えてください。
Sub comp()
'フォルダを選択
Dim path As String
Dim r As Long
Dim buf As String
Dim i As Long
Dim filename As String
Dim mysheet As Worksheet
Dim srcbook As Workbook
Dim srcsheet As Worksheet
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = 0 Then
MsgBox "キャンセルされました。"
Exit Sub
End If
path = .SelectedItems(1)
End With
Application.ScreenUpdating = False
639:デフォルトの名無しさん
20/06/08 08:47:00.39 k1oezjz2.net
続き
Range("A1").Value = "担当者"
Range("B1").Value = "行程1"
Range("C1").Value = "件名1"
Range("D1").Value = "行程2"
Range("E1").Value = "件名2"
Range("F1").Value = "行程3"
Range("G1").Value = "件名3"
Range("H1").Value = "期間"
Range("I1").Value = "グループ名"
Set mysheet = ThisWorkbook.Worksheets("comp")
Debug.Print myseet
buf = Dir(path & "\*.xls") 'フォルダ内の全ファイル名
Debug.Print buf
Do While buf <> ""
Set srcbook = Workbooks.Open(path & "\" & buf)
Set srcsheet = srcbook.Worksheets("sire")
640:デフォルトの名無しさん
20/06/08 08:47:32 k1oezjz2.net
続き
filename = 'srcsheetの拡張子なしのファイル名を取得
'シートの内容を2行目以降コピー
srcsheet.Range(Cells(2, 8), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 8)).Copy
'myseetの最下行の一つ下に値として貼り付け
mysheet.Cells(Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).PasteSpecial xlPasteValues
'I列にそれぞれのファイル名を入力
For r = Cells(Rows.Count, 9).End(xlUp).Row + 1 To Cells(Rows.Count, 1).End(xlUp).Row
Range("I" & r).Value = filename
Next r
srcbook.Close False
buf = Dir()
Loop
Cells.EntireColumn.AutoFit
Application.ScreenUpdating = True
End Sub
641:デフォルトの名無しさん
20/06/08 10:43:42 pUpXY1nL.net
ワークシートの指定について
Activesheetだと動いて、worksheets(index)やworksheets("シート名")にするとプログラムが動かないことが多いのですが、何故でしょうか
下のようなプログラムを作りました。(Sheet2のA列の数字でSheet1にフィルターをかけて、pdf出力を繰り返す)
Sub Macro3()
For Each c In Worksheets("Sheet2").Range("A1:A68")
i = c.Value
a=1
Worksheets(1).Range("$B$4:$N$6492").AutoFilter Field:=1, Criteria1:=i
Worksheets(1).PageSetup.RightHeader = " " & i
r = Range("$B$5:$B$6492").Find(i).Row
Worksheets(1).ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Users\Documents" & i & "." & Cells(r, 11).Value
Next c
End Sub
これを実行しても、フィルターがかからず、pdf出力メソッドの部分でエラーが起きます。
しかし、Worksheets(1) を Activesheetに直して、Sheet1をアクティブにした状態で動かすと正常に動きます。
イミディエイトウィンドウでWorksheets(1)が正しく指定されているかも確認しましたが、されていました。
一体何が原因なのでしょうか。
642:デフォルトの名無しさん
20/06/08 11:07:13 FM/y1B8a.net
>>616
入力ミスがないとして、この2箇所でシートの指定が抜けてるのが原因では
Range("$B$5:$B$6492").Find(i).Row
Cells(r, 11).Value
何度もWorksheets(1)を書くんじゃなくて、Forの外でActivateするかWithでSheet1を指定した方が間違いがなくていいと思う
643:デフォルトの名無しさん
20/06/08 11:07:50 F0/ca02L.net
workbookは指定してるの?
644:デフォルトの名無しさん
20/06/08 14:34:55.82 k7tLKOMH.net
アドインに記述されてるプロシージャを、シート上の図形をボタンにしてそこから走らせたいのですが、
引数を渡そうとすると、このブックでマクロが使用できないかすべてのマクロが無効なっている可能性があります、と出て実行できません
すべてのマクロを有効にしてもダメでした
引数なしの場合は、マクロが無効であっても、なんの問題もなく実行されます
登録は、'プロシージャ名 "引数"'とやっているのですが、マクロからそのままやると実行されますが、ボタンに登録すると実行されません
なにが問題なんでしょうか?
645:デフォルトの名無しさん
20/06/08 15:14:19 vAWoQ1cV.net
sub 引数なし()
引数あり "引数"
end sub
646:デフォルトの名無しさん
20/06/08 15:39:02.50 P+hhNSq/.net
なるほど・・・
結構な数のボタンになるので面倒ですが、ひとまずそれでやってみます
647:デフォルトの名無しさん
20/06/08 15:41:22.39 F0/ca02L.net
プルダウンなりなんなりで選ぶなりなんなりさせればいいじゃないなり
648:デフォルトの名無しさん
20/06/08 16:55:09.51 Fo3kuWti.net
イベント付きボタンのクラス作ればいいんじゃないのかな
649:611
20/06/08 17:50:20 k1oezjz2.net
srcsheet.Range(Cells(2, 1), Cells(Cells(Rows.Count, 1).End(xlUp).Row, 8)).Copy
のところが違うみたいです。どう書けばいいですか?
650:デフォルトの名無しさん
20/06/08 18:10:47 sSFxNrIu.net
シート名が抜けるの俺もむかーしよくやったわぁ
アクティブにすると直るんだよなぁw
何度やったか記憶にないぐらいやって痛い思いした
651:デフォルトの名無しさん
20/06/08 18:31:02.99 J+Lc8xxu.net
withで囲んでもドットを忘れてそれに気づかずいつまでもソースとにらめっこしたりな
652:デフォルトの名無しさん
20/06/08 18:52:12.93 d2CDqPLn.net
>>624
srcsheet.Range(srcsheet.Cells(2, 1), srcsheet.Cells(Cells(Rows.Count, 1).End(xlUp).Row, 8)).Copy
確証ないけど…
653:デフォルトの名無しさん
20/06/08 19:01:25.33 zqZQO86x.net
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Sh.Range("A:Z").Interior.Color = xlNone
If Intersect(Sh.Range("A:Z"), Target) Is Nothing Then
Exit Sub
Else '赤く色が変わる
654:列 Intersect(Selection.EntireRow, Sh.Range("G:Z")).Interior.Color = RGB(0, 255, 0) End If End Sub とにかく複数選択したセル行の特定の列を全部色付け 選択をやめると色が戻る(デフォルト)をやりたくて ThisWorkBookにこれを追記 で、なんとか希望の動きになったんですが これに1行目から7行目は除外(選択しても色が付かない) という条件の追加は可能ですか? 自分の知識じゃ無理ゲーですみません
655:デフォルトの名無しさん
20/06/08 19:48:40.38 58QwRa4M.net
>>628
一番最初に、ifステートメント入れれば良い。
if target.row >=8 thenとか。
656:611
20/06/08 20:15:16.49 k1oezjz2.net
>>624
ありがとうございますm(__)m
657:デフォルトの名無しさん
20/06/08 20:24:46.83 zqZQO86x.net
>>629
おおお、ありがとう理想の挙動に近づきました!
これだと12行目を選択した後にやめて
1行目を選択しても12行目の色が残っちゃうんだけどそれは回避不能ですか?
If Intersect(Sh.Range("A:Z"), Target) Isのところを
If Intersect(Sh.Range("A8:Z5000"), Target) Is
とかに変えても少し挙動が近づいた気もしますが、
658:デフォルトの名無しさん
20/06/08 20:28:42.90 pW+OOibM.net
構造体のメンバ変数を頭からindexで指定するようなことってできませんか?
for文で構造体のメンバ変数と配列とを順次比較したいんですが。
659:デフォルトの名無しさん
20/06/08 20:28:54.07 WKHI6Xr1.net
変数名やプロシージャ名を日本語で書くか否か迷ってます
日本語命名で困ったことが起こった人はいますか
660:デフォルトの名無しさん
20/06/08 20:30:33.47 ckk4P3me.net
>>631
少しは頭を使えよ、馬鹿
661:デフォルトの名無しさん
20/06/09 00:06:52.26 GDblTDVr.net
>>634
頭使ったらハゲるだろ、このハゲ
662:デフォルトの名無しさん
20/06/09 00:40:35.48 4DWGZxBT.net
ちょっとトンチンカンかもしれないですが
WindowsのエクセルのVBAって
LinuxのOpen OfficeのCalcでも使えたりするんでしょうか?
663:デフォルトの名無しさん
20/06/09 01:33:20.60 dgDUMn0q.net
>>633
あるぞ
英語環境しかないPCだと使えなくなる
人に送ったら面倒になった
664:デフォルトの名無しさん
20/06/09 03:31:53.35 eSuxcQl/.net
>>633
うちが英語とスペイン語環境しかなくて送られてきたVBAが動かなくて困った事が何度もある
日本人だからって日本語環境でやってるわけではない
665:デフォルトの名無しさん
20/06/09 03:41:28 eSuxcQl/.net
>>636
ExcelVBAはWinとMacでも違いがある
Win/Mac/Linuxで使えるOOoやLOのCalcで使えるVBAは制限やできない事があるけど一応使える
666:582
20/06/09 08:27:55.73 w8zDheKG.net
>>633
日本人にとってもコードが読みにくくてかなわん。
667:デフォルトの名無しさん
20/06/09 09:00:21.92 khiSZY25.net
>>633
会社で使うなら社内の自分より詳しい人に相談してみ
668:デフォルトの名無しさん
20/06/09 09:06:51.24 r/wULa9J.net
個人的には日本語プロシジャー名好き
処理名だと分かりやすい
669:デフォルトの名無しさん
20/06/09 09:38:40.07 rQkYVq9m.net
困った時のローマ字
Sub CSV_no_deTa_wo_rodo_suru()
670:デフォルトの名無しさん
20/06/09 09:49:38.68 r/wULa9J.net
そもそもシート名で日本語使ってるからね
気にするならそこからやらないとね
671:デフォルトの名無しさん
20/06/09 09:56:55.81 LXNCuYlO.net
>>633
単純に一つの言語で統一した方が読みやすい
これは一般的な文章でも感じられると思う
逆にコメント等を日本語にすることで注釈として意識させることが出来る
自分は実装には使わないテスト用のメソッドをを日本語名にする事はあるよ
アメリカに送ったら云々は条件が特殊だし、
日本語コメントも文字化けするんだから関係ないだろと思う
672:デフォルトの名無しさん
20/06/09 10:05:30 FZrbGc0Z.net
システムとして表示やコンパイルが可能かってのと、それを読む人間が外国語を理解できるかはまた別の話
とりまファイル名やワークシートに入ってるデータが日本語なら何も気にしなくていいってことよ
そもそも半角文字だって国によって割り当てが違うんだし
673:デフォルトの名無しさん
20/06/09 10:25:08.00 LXNCuYlO.net
いずれにしても海外環境で動くかって話になると、
関数名ひとつの話じゃないってことだな
674:デフォルトの名無しさん
20/06/09 11:06:11 GhLF46O3.net
>>642
自分はプロシージャ名だけでなく変数名にもときどき使ってます。
変数名を横文字で考え付くのが面倒ってこともありますが。
行や列の位置を示す変数に tate yoko の後は 行 列 縦 横 など。
675:デフォルトの名無しさん
20/06/09 12:07:12.66 GJCBYo9K.net
賛否両論(少し否優勢)な感じね
賛の中でもプロシージャ名、関数名、定数変数名のどこまで日本語が許されるかも派閥次第か
676:582
20/06/09 12:11:23 w8zDheKG.net
iとかなら良いけど変数の型とかプロシージャなのか区別出来る名前になってないと最悪。
で、日本語の名前つけてるのにそんなのが多い。
677:デフォルトの名無しさん
20/06/09 12:33:34.60 RJ9Fxau+.net
>>639
ありがとうございます
678:デフォルトの名無しさん
20/06/09 12:34:58.09 LXNCuYlO.net
変な事せずに命名規則に従った方がいいと思うけどね
メシマズ嫁と同じ思考回路だぞ
679:デフォルトの名無しさん
20/06/09 14:16:42.79 VHdLMKHt.net
すみません。どなたか詳しい方、ご指導願います。
データ計算をVBA作成しようとして悩んでいます。
リストボックスにある地名を選択して、テキストボックス1に数字を
入力したらテキストボックス2に対応した数値を出したいのですが
上手く書けません。
データシートのA列(A2からA300)には地名、横軸(B1からBG1)には整数値(50ずつの数値)があり
地名と整数値の交点には、それぞれ対応した金額が入っています。
またリストボックスの地名は「地名」として別シートを作成しています。
説明方法が悪くて申し訳ないのですが記述の方法の
解説を宜しくお願いします。
680:デフォルトの名無しさん
20/06/09 14:31:54.35 ksQUvwBH.net
h,vlookupじゃダメなんですか?
681:デフォルトの名無しさん
20/06/09 14:36:44.80 LXNCuYlO.net
どこまで書けてて、どこから分からないの?
682:デフォルトの名無しさん
20/06/09 14:38:50.34 XR5JAco5.net
XY座標のセル表示して終わりじゃないなら
ピボット勉強した方が良いと思う
683:デフォルトの名無しさん
20/06/09 14:49:37.66 VHdLMKHt.net
651です。
Private Sub ListBox1_Change()
ListBox3.Clear
Select Case ListBox1.Text
Case "東京都"
ListBox3.List = Worksheets("データ").Range("A2:A8").Value
(略)
End Select
With ListBox3
.ColumnHeads = False
.ColumnCount = 1
.ColumnWidths = "40;50;50"
.Font.Name = "Meiryo UI"
.Font.Size = 11
End With
End Sub
Private Sub TextBox2_AfterUpdate()
Dim TextBox2 As Range
Dim TextBox3 As Range
Set TextBox2 = Worksheets("データ").Range("A2:A13")
Set TextBox3 = TextBox2.Find(What:=TextBox2.Value, LookAt:=xlPart)
If Not TextBox3 Is Nothing Then
'ヒットした値をテキストボックスにセット
TextRegion.Value = Worksheets("データ").Cells(TextBox3.Row, TextBox3.Column + 8).Value
End If
End Sub
なんか変です。。。
684:デフォルトの名無しさん
20/06/09 14:54:09.61 VHdLMKHt.net
651です。
たぶんツッコミどころ満載です。
交点のセレクトできていません。
685:デフォルトの名無しさん
20/06/09 15:51:31.81 Hq8JX0Tk.net
なぜ段階を踏んで自分でテストモデルを組んでみないのかが疑問だわ
初心者の頃も含めてその程度の内容で誰かに聞いたことすらないわ
686:デフォルトの名無しさん
20/06/09 15:53:54.04 Hq8JX0Tk.net
1.リストボックスで選択してボタン押して他のフォームで項目表示できるか
2.テキストボックスに書き込んでボタン押して他のフォームのテキストボックスに表示できるか
3.リストボックスとテキストボックスで選択と書込をして同じフォーム上のテキストボックスに対応した数字を出せるのか
とかとか
687:デフォルトの名無しさん
20/06/09 16:19:22.27 ksQUvwBH.net
マクロの記録使うのはいいけど
その結果の意味ぐらい調べようよ
ググらなくてもF1キー押せば表示されるからさ
688:デフォルトの名無しさん
20/06/09 16:24:07 LXNCuYlO.net
>>657
下の関数内で使ってる変数名を具体的に書いてみたらどうかな
TextRangeForSearchTargetみたいな文章風でもいいから
689:デフォルトの名無しさん
20/06/09 17:05:07.59 /5vAUGTr.net
ユーザーフォームに
URLリンク(www.s-projects.net)
のサイトにあるような
位置度の算出を丸々搭載したいけど
素人にゃ厳しいですかね?
690:デフォルトの名無しさん
20/06/09 17:28:45 FZrbGc0Z.net
>>663
簡単
691:デフォルトの名無しさん
20/06/09 17:40:53.94 Hq8JX0Tk.net
ユーザーフォーム使ってTextBox1とTextBox2に数字いれてTextBox3に足し算の結果だすような基本をまず調べればあとは適当にぐぐりゃ分かるわな
計算途中も変数いちいち宣言して代入していくといいわ
自分で何やってんのか見失わないようにするため
Sub testttt()
Dim drawingX As Double: drawingX = 2
Dim drawingY As Double: drawingY = 2
Dim realX As Double: realX = 2.1
Dim realY As Double: realY = 2.1
Dim diffX As Double: diffX = realX - drawingX
Dim diffY As Double: diffY = realY - drawingY
Dim ResultPosition As Double: ResultPosition = Sqr(diffX * diffX + diffY * diffY) * 2
MsgBox ResultPosition
End Sub
692:デフォルトの名無しさん
20/06/09 17:54:43.46 AbQV9kr1.net
Private Sub TextBox1_Change() 'Xの図面寸法
TextBox3 = Val(TextBox1.Value) - Val(TextBox2.Value)
End Sub
Private Sub TextBox2_Change() 'Xの測定値
TextBox3 = Val(TextBox1.Value) - Val(TextBox2.Value)
End Sub
Private Sub TextBox3_AfterUpdate()'Xのズレ
TextBox3 = Val(TextBox1.Value) - Val(TextBox2.Value)
End Sub
Private Sub TextBox4_Change()'Yの図面寸法
TextBox6 = Val(TextBox4.Value) - Val(TextBox5.Value)
End Sub
Private Sub TextBox5_Change() 'Yの測定値
TextBox6 = Val(TextBox4.Value) - Val(TextBox5.Value)
End Sub
Private Sub TextBox6_Change() 'Yのズレ
TextBox6 = Val(TextBox4.Value) - Val(TextBox5.Value)
End Sub
Private Sub TextBox7_Change()
'位置度最難関
TextBox7 = Val(Sqr(TextBox3.Value) ^ 2) + Val(Sqr(TextBox6.Value) ^ 2) * 2
End Sub
tBox6.Value) ^ 2) * 2
End Sub
1~6まではぐぐったらなんとかできた
あとは7… >>665 ぐぐるより難しそうで無理す
693:デフォルトの名無しさん
20/06/09 17:58:28.74 AbQV9kr1.net
ああ、最後に変なコピペが混じってる
3と6にも多分式を入れないとだめですよね恐らく
694:デフォルトの名無しさん
20/06/09 18:02:48.17 AbQV9kr1.net
いや違う、むしろ7に入れずに3と6っぽい?
そもそもド素人にはやはり厳しいね
頑張りますわ
695:デフォルトの名無しさん
20/06/09 18:44:30.51 AbQV9kr1.net
うおぉ、浮動小数点かこりゃ?
どっかでroundで四捨五入せんといかんのね
1人であたふたすまん
ほんとムズい
696:デフォルトの名無しさん
20/06/09 19:24:04.57 Hq8JX0Tk.net
Changeイベントなんか使うから難しくなるわけで・・・・
そのサイトにあるように、ボタン押して計算するようなもの作りたいんだろ?
ならズレ角度抜きで、テキストボックス7個作って
ボタン押すと上の4個から数値拾ってきて下の3個に計算結果を入れるっていうな
イベント系はCommandButton1_Click()だけでいいはずだぞ
697:デフォルトの名無しさん
20/06/09 19:44:15.62 Hq8JX0Tk.net
Private Sub CommandButton1_Click()
Dim drawingX As Double: drawingX = TextBox1.Value
Dim drawingY As Double: drawingY = TextBox2.Value
Dim realX As Double: realX = TextBox3.Value
Dim realY As Double: realY = TextBox4.Value
Dim diffX As Double: diffX = realX - drawingX
Dim diffY As Double: diffY = realY - drawingY
Dim ResultPosition As Double: ResultPosition = Sqr(diffX * diffX + diffY * diffY) * 2
TextBox5 = ResultPosition
End Sub
URLリンク(i.imgur.com)
位置度だけだけど。
テキストボックスはIMEModeOffにしておく
698:デフォルトの名無しさん
20/06/09 19:49:22 0Bu4FXEm.net
なんでユーザーフォームってクソダサなんだろな
色変えられるんだしMicrosoftももうちょい気遣ってくれてもいいのにな
699:デフォルトの名無しさん
20/06/09 20:04:52.19 PO2SY+XL.net
>>671
天才ですか、、
何も知らん癖に自動にしたいかなぁと
思って検索してパクりまくって作ってましたわ
ズレ量も欲しいからとせっせと
小数点も3桁以上は四捨五入したく
1~4までは意味も分からずとりあえず
ちゃんと挙動してるかなぁレベル
アドバイス貰う以前の素人レベルだからスクショですんません
原理すらわかってない
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
700:582
20/06/09 20:10:52.53 w8zDheKG.net
>>666
そういう書き方せずに>>665を具体的な値の部分は削除してまず関数化する。
Function GetResultPosition(drawingX As Double, drawingY As Double, realX As Double, realY As Double) As Double
Dim diffX As Double: diffX = realX - drawingX
Dim diffY As Double: diffY = realY - drawingY
Dim ResultPosition As Double: ResultPosition = Sqr(diffX * diffX + diffY * diffY) * 2
GetResultPosition = ResultPosition
End Function
初心者を脱っしていれば、点はユーザー定義にしてると思うけど、まあこんな感じ。
701:デフォルトの名無しさん
20/06/09 20:19:17 OFRsK1Sh.net
いつまで素人素人言い訳してくれくれする気だ
702:582
20/06/09 20:19:48 w8zDheKG.net
次にTextBoxの値を関数い代入する。
なお、TextBoxの名前もそれっぽく変えておく。
Sub test()
Dim drawingX As Double
Dim drawingY As Double
Dim realX As Double
Dim realY As Double
drawingX=txtDrawingX.Value
drawingY=txtDrawingY.Value
realX=txtRealX.Value
realY=txtRealY.Value
txtResult.Value=GetResultPosition(drawingX, drawingY, realX, realY)
End Sub
703:デフォルトの名無しさん
20/06/09 20:28:43.03 PO2SY+XL.net
ごめんスクショの所も直しきれてなかったし初心者を脱してないレベルだから
調子乗って挑戦しようと思ったのが間違い
測定値はどこまで小数点書こうが3桁で四捨五入
ズレ量も四捨五入された3桁で表示
四捨五入された3桁のズレ量同士で計算されて
位置度も3桁で四捨五入されてフィニッシュ
やろうとした事が多すぎました
普段のエクセルのSQRT関数入れたツールか
関数電卓で断念します
クレクレとかじゃなく、助言みんなありがとうです
704:582
20/06/09 20:51:16.65 w8zDheKG.net
>>677
四捨五入なんて最後で良いじゃん。
ResultPositionを四捨五入して返すだけだと思うが。
入力の見た目も四捨五入したいならそれぞれでやりゃ良いし。
どっちにしろ、四捨五入なんて考えずに作って、出来てから考えた方が良いぞ。
705:デフォルトの名無しさん
20/06/09 21:14:50.07 PO2SY+XL.net
>>678
どうも…事情がありまして
ズレ量と位置度を両方記入する必要があるから計算を合わせたいのです
そうしないと記入したズレ量と数値の計算が違ってくるので
なので普段はExcel関数ツール作ってで計算させてます
(名称はセル番地)
まず小数点7桁ぐらいで出力されてきやがるズレ量をRound関数で全て小数点3桁にする
↓
小数点3桁同士で位置度の計算をさせる
=if(位置度="","",SQRT(SUMSQ(X実測値-X図面寸法,Y実測値-Y図面寸法))*2)
↓
最後に出た位置度も小数点3桁にする
=if(位置度="","",Round(位置度,3)
↓
位置度とズレ量を小数点3桁まで記入
現状これが自分の最善だったので…
706:デフォルトの名無しさん
20/06/09 21:21:13.62 PO2SY+XL.net
間違えた
小数点3桁同士で位置度の計算をさせる
=if(Xの実測値="","",SQRT(SUMSQ(X実測値-X図面寸法,Y実測値-Y図面寸法))*2)
2つ目はこうやった
707:582
20/06/09 21:24:41.76 kJxmgxZ3.net
>>679
いやいや、そういう話じゃなくてね、そんなもんは最後に入れれば良いでしょ。
先ずは四捨五入無しで動くところから。
あとTextBoxとかイベントとかも後でいいんだよ。
708:デフォルトの名無しさん
20/06/09 21:29:48.33 PO2SY+XL.net
>>681
ごめん、ほんと初心者以前知識すらない関数だけで凌いできたレベルでちょいネットで調べりゃ出きるかなと思ったらもう手つけられんのですわ
クレクレ以前の問題で
それでも
>>671のは頂こうと思うとります
709:デフォルトの名無しさん
20/06/09 21:37:07.98 /5vAUGTr.net
そういう業務と無縁だからエクセル関数で計算とかほとんど知らん俺からすると
そんな数式ほんとかよと思ったら
ほんとだった
それはそれでよく考えたもんだなおい
測定をする?部署は凄いね
710:デフォルトの名無しさん
20/06/09 21:38:09.42 khiSZY25.net
>>682
悪いことは言わんから早いうちに転職しなされ
こういう仕事向いてないよ
711:デフォルトの名無しさん
20/06/09 21:41:34.61 hYyeR2h+.net
プログラミングの基本も知らないレベルの人がコピペでツール作って業務に使用するって大丈夫なのか?
712:デフォルトの名無しさん
20/06/09 21:45:05.79 FZrbGc0Z.net
少数以下の計算結果を同じにするのは、Excelでは一番難しい分野の一つ
たとえば銀行の利息とか、素人が作った数式だとまず合わない
713:デフォルトの名無しさん
20/06/09 21:56:09.99 khiSZY25.net
この先も苦労するだろうし、もし重大な問題が起きた場合周りが迷惑するんだよな
714:デフォルトの名無しさん
20/06/09 21:59:00.39 I+ooWyO2.net
馬鹿に教えても何かあるとまた頼るだけ
馬鹿に教えてもろくなことにならんぞ
その場で形だけ低姿勢にしてるだけで本音は違うからな
715:デフォルトの名無しさん
20/06/09 22:01:59.19 0Bu4FXEm.net
より正確な計算するのってcurrency型だっけ?
double使うより
716:デフォルトの名無しさん
20/06/09 22:10:25 OFRsK1Sh.net
向き不向き以前に学習する気が無い
717:デフォルトの名無しさん
20/06/09 22:26:28.10 1rtAHViu.net
少数の計算はどの言語でやってもやっかい
なので普通は名の知れたライブラリを呼ぶ
自分で書くのは最後の手段
718:デフォルトの名無しさん
20/06/09 22:27:34.95 I+ooWyO2.net
>>689
違いがわからない馬鹿はコメントしなければ良いのに
719:デフォルトの名無しさん
20/06/09 23:36:40.87 KturEXme.net
スレチかもしれないけど他の方法も・・
>>653
VBA使わずにフォームコントロールのリスト選ぶだけで表示
URLリンク(i.imgur.com)
>>663
HTAのVBSciptで
URLリンク(i.imgur.com)
720:デフォルトの名無しさん
20/06/10 01:20:22 aAKpfJRW.net
学べない俺には刺さるわ、言い訳だが…
これだけは!っていう心臓部になるコードだけはネットで見つけて何とか繋げて作る
どこ弄ればどう変わるかだけ後で見ても絶対わかるようにコードより丁寧なコメントを残す
それさえ完成するともう安心して終わり
あとは簡単な挙動はテンプレがネットにあるからひろってくる
ユーザーフォームのボタンはで黄緑、黄色、水色を多用する
プロシージャ当てはめるだけで職場じゃパソコンの先生扱い
android端末やiPhoneの扱いならなぁ
近所でおばちゃまたちのスマホ教室を副業でやってるくらい詳しいのにっくそっ!
721:デフォルトの名無しさん
20/06/10 05:20:40.78 9S1ZPIsx.net
趣味や勉強中ならわかるが仕事頼んだら理解してないネットのコピペもって来るような人にはもう頼めんだろ
722:582
20/06/10 06:37:22 h6488s/K.net
>>682
そういう言い訳は良いから。
いつも思うことだが初心者はわざわざ問題を難しくする。
先ずは>>671の最後の
TextBox5 = ResultPosition
を
TextBox5 = Round(ResultPosition,3)
にするだけだ。
それに、TextBox1~4の3桁をど一にかしたいなら>>676を利用した方が簡単。
それぞれのchangeイベントで自分を3桁にした後で>>676のtest呼び出すだけ。
723:デフォルトの名無しさん
20/06/10 08:27:35.36 ZDdhDfGU.net
あいつは禿げたおっさんで体臭臭そうだけど、俺からみるとなかなか頑張ってると思うぜ
簡単な書籍買って一冊読んである程度まとまった知識得るといいわ
一年後にはここでふんぞりかえってレスしてると思うね
724:デフォルトの名無しさん
20/06/10 16:06:12.58 alb8qwRt.net
買った本開いたの最初だけで、今は枕になってるぞ
725:デフォルトの名無しさん
20/06/10 16:45:17.85 zxOaMDTC.net
>>698
メルカリへ
726:デフォルトの名無しさん
20/06/10 17:48:53.56 GhRRuhdi.net
>>698
くれ
727:デフォルトの名無しさん
20/06/10 20:30:18 O8L9L3qt.net
>>696
本当にありがとう。。言い訳やめて素直に全部頂いたら完成しました…
正直コードは何も理解しとらんですが…
URLリンク(i.imgur.com)
728:デフォルトの名無しさん
20/06/10 20:43:31 O8L9L3qt.net
なるほど、普段XとYの図面値が両方0な事も結構多い
そういうときはTextboxの1と3(XとYの図面値)のValueを0に設定しとけばいいのか
こういう事を本で基礎から学ばずスマホで調べて小ずるく終わらせるのが自分の学習性の無さ
、本当に駄目ですわ…
教えてくれた人への感謝と自分への落胆が酷い
もう生産部署に飛ばしてくれよ
729:デフォルトの名無しさん
20/06/10 21:27:00 r05FbU6w.net
フォームボタンを置いてそのシートで矢印押し続けるとセル移動が飛び飛びになるんだけど対処法ありますか?
とりあえずマクロ登録した図形にしたら発生しなくなったけど押した感ないから気持ち悪い
730:デフォルトの名無しさん
20/06/10 21:32:19 2cEQGA3C.net
>>701
理解する気が無いからな
731:デフォルトの名無しさん
20/06/10 21:34:24 2cEQGA3C.net
>>703
本当に飛び飛びになってるかカーソル位置をdebug.printとかで確認してみろ
732:デフォルトの名無しさん
20/06/10 22:01:15.35 zJ0W6AlK.net
>>704
そう、それがあかんわ
ちょいちょいと細かなとこばっか弄るくらいしかできない
とりあえず位置度の数値をアクティブセルに反映されるボタンを追加して完成です
失礼しました本当に
733:デフォルトの名無しさん
20/06/10 23:43:02.56 r05FbU6w.net
>>705
もちろん実際に移動が飛ぶわけではありません
表示上の問題です
734:デフォルトの名無しさん
20/06/11 02:06:11.07 l/gRHUK3.net
馬鹿はこうやって厚かましく聞きだそうとする
735:デフォルトの名無しさん
20/06/11 04:35:21 upd9DdGd.net
俺はあのおっさんはハゲで臭いけどできるやつだって思ってるわ
しゃちょーの器だ
頑張ったな、おっさん
736:デフォルトの名無しさん
20/06/11 05:50:14 p+d7/Y3X.net
>>708
質問スレで何を言ってんだ?
737:デフォルトの名無しさん
20/06/11 07:33:56.10 Ppd1dcd+.net
馬鹿って言いたいだけの人の相手しちゃダメ
738:デフォルトの名無しさん
20/06/11 12:31:19.92 9UX6mR7k.net
いや、学ばない俺でも流石にセルに反映されるボタンくらいは聞かずに作れたのでそこまでは聞いてないですよ
ボタンに
アクティブセルとテキストボックスのvalueを=の動きつけるだけだし
739:デフォルトの名無しさん
20/06/11 14:46:24.05 xmZccwT9.net
その「だけ」の組み合わせなんだよなぁ
740:デフォルトの名無しさん
20/06/11 15:47:31 fXLeDjMq.net
算数の問題で答えだけ合っていても計算式がないと正解にはならない
カンニングとみなされるって知らんのか
そうやって問題から逃げている初心者に教えることはない
741:デフォルトの名無しさん
20/06/11 15:50:35 fXLeDjMq.net
ちょっと言いすぎたかな
742:デフォルトの名無しさん
20/06/11 15:56:00.83 G1l0Tewu.net
いや、それでいいんだよ
743:デフォルトの名無しさん
20/06/11 16:13:44 HN+bic0j.net
エクセル初心者はVBAなんて触らんし
VBAやマクロ禁止の部署もあるからなぁ
パートさんには入力欄とクリックのみだったりとか
まー初心者がこのスレ見ることもないか・・
744:デフォルトの名無しさん
20/06/11 17:23:40.82 9UX6mR7k.net
いやもう完成しました
感謝もしたし謝罪もします
計算式はPCないところで関数電卓使ったりするから嫌でもわかっとります
√( xズレ^2+yズレ^2) *2
VBAでもまず覚えようと思ったので
Xズレ→B列 Yズレ→C列 位置度→D列のデータの時
Dim s As Long
Do While Cells(s, 3) <> ""
Cells(s, 4) = Sqr(Cells(s, 2) ^ 2 + Cells(s, 3) ^ 2) * 2
Cells(s, 4) = Format(Cells(s, 4), "0.000")
s = s + 1
Loop
エンドサブちゃん
高卒には荷が重すぎ
高学歴でしょここの人達
745:デフォルトの名無しさん
20/06/11 17:29:15.93 /dMXe1DS.net
その言い訳がましいフレーズをレスに入れるから良くないって、今後は書き込む前に考えたほうがいいよ
ここはもう来なくてもいいから
746:デフォルトの名無しさん
20/06/11 17:34:53.28 Gg4t4WTy.net
俺は計算系は答えられんがここは質問スレだからどんどんこい。
煽ってるだけの奴は何の目的でこのスレにするんだ。芸能人の話題待ちでもあるまいし。
自分の決め事があるならいいけど初心者は変数は後でわかるようにとにかく宣言すべし。
日本語だけはあまりお勧めしない。
747:582
20/06/11 19:31:53.23 lwV9wV8Y.net
>>718
何で、そのループが必要なのかな?
あと、いきなりCellsで始まるのはあまり良くない。
ブックなりシートなりから書いた方が良い。
でも、それだと長くなるからWithやSetを使う。
748:デフォルトの名無しさん
20/06/11 20:34:47.38 upd9DdGd.net
特定の行・列を表示・非表示にするボタン使ってるんだけどさ
この行・列にActiveXの他のボタンがあったりなんかするこ、たまにこいつらが消滅するんだよなぁ
debug.printとかで位置確認すると確かにそこにいるんだけどHeight=0とかになってる
んで適当にSubプロシージャ作ってHeight=200とかに設定するんだけどだめ
ならない
エラーはかないけど、debug.printで確認してもぜぃろぉのまま
Deleteも効かない
てかエラー出る
オブジェクトの選択と表示からみると存在してる
再起動してもだめ
てかたまに開けなくなるw
しゃーないから、新しいシート作って、そこにシート全選択でこぴぺすると
表示されてるボタンはコピーされるが
消滅したボタン群だけはコピーされない
コピーされないってのは、オブジェクトの選択と表示にそいつらが出なくなることから判断してる
消えたやつは新しく作り直してる
まぁそうすると元に戻るんだけどさ
なんだか半分死んでて半分生きてるような感じなんだろうなぁ
お前らこういうことある?
749:蟻人間
20/06/11 20:43:48.25 9OB4DptL.net
ActiveXはサポート終了でしょ
750:デフォルトの名無しさん
20/06/11 20:47:39.72 upd9DdGd.net
だってぇ・・・右クリで移動されちゃうボタンとかいやだもん
751:デフォルトの名無しさん
20/06/11 21:20:07 v1OJq4JH.net
Active S○X
752:デフォルトの名無しさん
20/06/11 21:49:44.43 Pc/1Hill.net
txt123 = objIE.document.all.tags("table")(2).outerText
でテキストを取得しました。
txt123 の中に授業表が入っています。
体育という単語が含まれていれば、A列のセルに〇、国語という単語が含まれていればB列に〇、
算数はC列・・・
という具合に特定の文字列が含まれていれば指定の列のセルに〇を入れたいのですが、
どうしたらいいでしょうか?
特定の文字列は国語、算数、体育、社会、理科の5つです。
753:デフォルトの名無しさん
20/06/11 21:52:07 DFKeKDYT.net
>>726
馬鹿は死ねば治るかもよ
754:蟻人間
20/06/11 21:55:51.11 fTevQdJs.net
>>726
文字列を検索する関数とIf文を使えば?
755:デフォルトの名無しさん
20/06/11 22:00:18.32 vUhEmjDF.net
>>726
こんなこともわからない頭の悪い奴に教えられる子供がどうなるか
756:デフォルトの名無しさん
20/06/11 22:05:40.83 S8xfnPZH.net
>>726
色々無理だと思うぞ。やめとけ。
757:デフォルトの名無しさん
20/06/11 22:28:34 Pc/1Hill.net
>>728
ありがとうございます!
If InStr(txt123, "国語") > 0 Then
こんな感じに値が返ってきたら〇と入力する仕組みになりました
758:デフォルトの名無しさん
20/06/11 23:19:34.07 fXLeDjMq.net
まさかと思うがテキストボックス123個とか作ってるんじゃないよな
759:デフォルトの名無しさん
20/06/11 23:44:22.39 52kheZTp.net
何でそれでいきなりIE制御・・・。
760:デフォルトの名無しさん
20/06/12 00:13:44.58 Y0E/tOto.net
授業表をIEで見るって社内システムがそれなのか?
761:デフォルトの名無しさん
20/06/12 00:33:39.25 cWAZHeBV.net
IE制御とかレガシーにも程があるだろ。。
762:デフォルトの名無しさん
20/06/12 00:43:49.91 V6O8I1+o.net
WebページのテーブルってエクセルのVBAで
IE以外にどうやって取得するの?
763:デフォルトの名無しさん
20/06/12 01:56:00.71 MW3IhN88.net
test
764:デフォルトの名無しさん
20/06/12 02:10:15.74 MW3IhN88.net
選択した範囲のセル色を変えたいです。
If Intersect(Target, Range("B1:B5")) Is Nothing Then Exit Sub
色変更処理
変更可能なセルはB1:B5のみとしたいですが、
これだとB6が一緒に選択されている場合に一緒に色が変更されてしまいます。
B1:B6を囲ってしまった場合でも、B1:B5までの色のみ変更させたい場合どうしたらいいでしょうか。
765:デフォルトの名無しさん
20/06/12 02:51:45.45 KALz8/u9.net
また馬鹿か
766:デフォルトの名無しさん
20/06/12 03:29:37 IFmaagGk.net
>>738
選択した範囲は選択されているのか?
767:デフォルトの名無しさん
768:age
>>738 intersectした結果とTargetを比較したらいけないかな
769:デフォルトの名無しさん
20/06/12 07:59:23 d1Ad7gfn.net
>>722
シートに配置したボタンでよく遭遇するよ。そんなもんだと思ってるから、ボタン押下時のコードに自分自身の位置とサイズを初期化するコードを書くようにしてる。
770:デフォルトの名無しさん
20/06/12 08:22:21 F5wzc1/2.net
>>739
分からないからそれしか言えないのか?
771:582
20/06/12 08:32:29.25 KgwnUKnv.net
>>736
俺が知ってる方法で4~5種類の方法がある。
MSXMLとかWinHttpとかhtmlfileとか。
772:582
20/06/12 08:34:43 KgwnUKnv.net
>>722
どっかのリボンにオブジェクトのリスト出せるボタンが有ったと思うが、表示されなかったっけ?
773:582
20/06/12 08:36:08 KgwnUKnv.net
>>742
サイズ変わって見えなくなってるだけだよなあ。
774:デフォルトの名無しさん
20/06/12 12:46:47.02 HqN3pHW3.net
>>722
セルにあわせて移動やサイズ変更するかどうかの設定があったはずだが
775:デフォルトの名無しさん
20/06/12 13:13:42.59 1+2Rgw6z.net
>>747
バージョン2010以降「セルに合わせてサイズ変更や移動しない」の設定になっていても
サイズが変わってしまう事例を多数経験しています。(2007は経験なし)
ボタンだけでなく、コメントの位置も極端に移動すること多数。
776:デフォルトの名無しさん
20/06/12 13:14:30.95 hxFv/xna.net
>>744
ヘェ~そんな関数あるんだ、IEオブジェクトだけかと思ってた、ありがとう
777:デフォルトの名無しさん
20/06/12 17:49:02 aQA9YYrW.net
>>742
エクセルに任せるんじゃなくてコード上で配置の指示だしておくってのは解決策になるのかもしれんね。ちっこくして非表示切り替えと関係ない安全な場所に退避させておくみたいな
>>745
それが「オブジェクトの選択と表示」
リストには出てるんだわ
>>747
まぁその辺もやってるんだけどね
むしろその辺でバグってるんだと思う
>>746
おれの書いた内容読んでないのかもしれんけど
VBAからサイズを再指定して表示させようとしてもバグってて指定を受け付けてくれないってことな
そもそもサイズの問題だけならシートコピーで他の正常なボタンと一緒にコピーされるはずじゃん
778:デフォルトの名無しさん
20/06/12 23:01:56.39 FlbnSBZd.net
Windows10に変えたら、クロマキー合成みたいなのが出来なくなっちゃったんだけど、
何か方法ない?
779:デフォルトの名無しさん
20/06/12 23:29:11.20 KALz8/u9.net
また馬鹿が来た
780:デフォルトの名無しさん
20/06/12 23:57:17 FlbnSBZd.net
>>739
>>752
一体どんな無様な人生を送ったら、そんなコメントが出来るようになるのかな?
生きててつまんないだろう?
ここの住人にかまってもらえるのが唯一の楽しみかい?
781:デフォルトの名無しさん
20/06/13 00:29:59.36 0QXppYe5.net
クロマキーはWin7まで。
ていうかクロマキーて・・。
確かにクロマキーだが。
782:デフォルトの名無しさん
20/06/13 01:18:01.22 l5EmusQW.net
一旦あきらめて、真の目的を違う方法で達成することを考えましょう
783:デフォルトの名無しさん
20/06/13 03:31:14.05 d/IEOBZf.net
>>753
自分が言われたという自覚があるんだ?
784:デフォルトの名無しさん
20/06/13 06:33:26.28 iOfV/qX/.net
>>752
実は自分もわかってないからここで勉強してるんだろ
でマウント取りたいからそのコメント
785:デフォルトの名無しさん
20/06/13 07:35:38 gm1IvgiV.net
質問スレなんてどこでも、マウントとって承認欲求を満たそうとする奴らばかりだよ。
特にVBAスレは、プログラミング板の他のスレでは相手にされないレベルの奴がここなら俺でもマウントとれるだろと集まってくる。
786:デフォルトの名無しさん
20/06/13 10:49:08.95 hwBvm+CU.net
VBA始めて1週間
結構できるようになったけど、俺ってすごい!?
787:デフォルトの名無しさん
20/06/13 11:02:28 iOfV/qX/.net
>>759
どうやって勉強した?どこまでできるようなった?
788:デフォルトの名無しさん
20/06/13 12:54:09.65 l5EmusQW.net
VBA完全に理解した
↓
VBAなにもわからない
↓
VBAチョットデキル
789:デフォルトの名無しさん
20/06/13 13:53:12.35 sXc2xmOg.net
何を以て「できる」と判断したのか?
790:デフォルトの名無しさん
20/06/13 13:57:01.18 k9PzEFx9.net
初心者の頃に書いたコードみるとマジナンだらけでチョベリバだわ
791:デフォルトの名無しさん
20/06/13 14:05:41.14 GFk/ON+H.net
編集ができるってことじゃね
792:デフォルトの名無しさん
20/06/13 14:17:20 Ft3NByW3.net
ダニングクルーガー効果とかいうやつじゃね
793:デフォルトの名無しさん
20/06/13 15:41:58.59 9rN9x/HV.net
VBAに限らないコーディング全般の話になるかと思うんですが、
For文のカウンタ変数に対してそのブロック内で加減算するのはいわゆる「お行儀が悪い」ものですか?
For i = min To min Step -1
For j = i + 1 To max
~処理~
If 条件 Then
~処理~
Let i = i + 1 '←ココ
~処理~
Else
~処理~
End If
~処理~
Next j
~処理~
Next i
前任者が使っていた20行にも満たないコードですが、1行目に違和感がありました。
Do While/Until文で書き直せるものの、単に自分の理解度が低いだけかもしれず・・・
794:デフォルトの名無しさん
20/06/13 15:59:50.04 sXc2xmOg.net
>>766
俺ならforにしないな
795:デフォルトの名無しさん
20/06/13 16:03:06 hwBvm+CU.net
データ用のシートからデータをコピーできるようになったぜ
ところでクラスモジュールにはどんなメリットがありますか?
functionの意味は分かりましたが、クラスとの違いなどがよく分からず
今本屋で色々探してきましたが、解説が見当たりませんでした。
796:デフォルトの名無しさん
20/06/13 16:04:33 HDBeOIwd.net
>>766
forにせずif文で条件抜けさせる方が読み手に伝わるし良いと思う…
stepで減算してるのに条件次第でi加算するのは処理の流れが分かりづらくなる
797:デフォルトの名無しさん
20/06/13 16:05:08 ll49+YlL.net
一般的に、for nextの方が理解しやすいから、for 文ありきで書いてるだけなんじゃないかな。
感覚的にも可読性やメンテナンス性からも、do loopなどで書く方が良いと思います。
798:デフォルトの名無しさん
20/06/13 16:14:12.41 lPN2rvMv.net
>>768
VBAのクラスはCOMとの相互運用のために存在する
普通に使う分には全く必要ない
というか並のVBAerのスキルではメンテ不能になるからむしろ有害
クラスを使いたくなるレベルの高度な抽象化が必要になるようなら、
そもそもそんなことをVBAでやらなければならないシステム設計が間違っていると考えるべき
799:デフォルトの名無しさん
20/06/13 16:49:04 9rN9x/HV.net
>>767, >>769-770
やはりそうですよね。Do~に書き直そうと思います。ありがとうございました。
800:デフォルトの名無しさん
20/06/13 16:50:17 hwBvm+CU.net
>771
ありがとうございます。
そこまでの説明が探しきれなかったので助かります。
801:デフォルトの名無しさん
20/06/13 16:52:28 69sGe9cG.net
>>766
Forの使い方を間違ってる
途中で1足して、最後にまた1引くんなら、Do LoopとIfなどを使って条件をはっきり書くべき
プログラミング全般の話となると、コンパイラによっては最初にStep値で割り算して回数を求めてしまうコードを吐くやつもあるので、正常に動かなくなる
802:デフォルトの名無しさん
20/06/13 18:20:23.36 gmb5Wcnr.net
ブックのなかに、シートがたくさんあって、
マクロ利用者毎にマクロで動かしたいシートが違う。
だから、マクロの実行中に、利用者にシートを選択させて、それをactivesheetにさせたい。
そういうの、できる?
803:デフォルトの名無しさん
20/06/13 18:31:43.88 sXc2xmOg.net
できる
804:デフォルトの名無しさん
20/06/13 18:35:00.95 Q06gyfKt.net
>>775
ロジック的に変
Webページやスマホアプリでも最初にログインするのとかあるでしょ?
後から選択するくらいなら最初に分けた方が良いのでは?
805:デフォルトの名無しさん
20/06/13 18:38:57.44 gmb5Wcnr.net
>>777
できれば、そうしたんだけど。
何人もの利用者が共通で使っているブックなので、シートを分けられないんだ。
シートがゴチャゴチャの状態から特定シートを利用者に選ばせたい。
806:デフォルトの名無しさん
20/06/13 18:42:11.92 ejIEXNUq.net
>>775
URLリンク(qiita.com)
この辺コピペしたら動くんじゃない?
807:デフォルトの名無しさん
20/06/13 18:54:40.10 Q06gyfKt.net
>>778
ごめん参りました_| ̄|○>>779
808:デフォルトの名無しさん
20/06/13 18:56:13.87 gmb5Wcnr.net
>>779
回答サンクス。
でも、もっとコードをシンプルにしたい。
809:デフォルトの名無しさん
20/06/13 18:56:56.64 gmb5Wcnr.net
>>781
マクロを途中で止めて、利用者にシートを選択させることによって(そのシートのどこかのセルを選択させる)、activesheetにさせたいんよ。
810:デフォルトの名無しさん
20/06/13 19:11:25.34 Ft3NByW3.net
自分でシートを開いてその後マクロを実行する形じゃダメなの
811:デフォルトの名無しさん
20/06/13 19:20:55 gmb5Wcnr.net
>>783
今は、苦肉の策でそうしてるんだけどね。
諸事情により途中でactivesheet を選ばせたいんだ。
812:デフォルトの名無しさん
20/06/13 19:50:08.25 mObNCAEc.net
これでいい気がする
URLリンク(qiita.com)
813:デフォルトの名無しさん
20/06/13 20:02:21.69 gmb5Wcnr.net
>>785
サンクス
ありがとー。
でも、もっと簡単にできんかな。
どうやら、無理っぽいな。
814:デフォルトの名無しさん
20/06/13 20:08:18.16 Q06gyfKt.net
マクロの途中で>>779で作ったUserForm1.Showすりゃ良いでしょう
815:デフォルトの名無しさん
20/06/13 20:23:03.52 mObNCAEc.net
じゃあこれ
URLリンク(www.relief.jp)
816:デフォルトの名無しさん
20/06/13 20:28:03.66 sXc2xmOg.net
>>782
途中でセル選択ダイアログでも表示すりゃいいじゃん
817:デフォルトの名無しさん
20/06/13 20:36:43.64 gmb5Wcnr.net
>>788
ありがと。
それやってみたけど、ちょっと面倒だった。
もう一回やってみる。
818:デフォルトの名無しさん
20/06/13 20:42:30 gmb5Wcnr.net
>>788
やっぱ、いけるかも。
819:デフォルトの名無しさん
20/06/13 20:42:48 gmb5Wcnr.net
>>789
ありがと。いけるかも。
820:デフォルトの名無しさん
20/06/14 08:41:44.1
821:2 ID:ffGowWaR.net
822:デフォルトの名無しさん
20/06/14 11:14:04 uWyGdyFQ.net
>>768
複数の自作関数をセットにして使いまわしたい時とか、
取得した値をプロパティとして保持しておきたい時とか、
自作関数でインテリセンスを使いたい時とか。
823:デフォルトの名無しさん
20/06/14 11:20:05.40 ZfTKHz7W.net
>>794
モジュールと構造体でいいよねそれ
824:デフォルトの名無しさん
20/06/14 11:21:47.96 435IzS7y.net
VBA歴まだ1ヶ月
でtxtデータから全て数値をシートに引っ張り出す事は成功したけどそれをVBAで計算させるスキルはないからエクセル関数使ってる
もっとスキルが欲しい
825:デフォルトの名無しさん
20/06/14 12:36:35.03 PywPq9gj.net
関数でできることは関数でやりましょう(例外あり)
826:デフォルトの名無しさん
20/06/14 12:52:53.71 UBYu/Pyg.net
関数ばかりでもいかんですう
827:デフォルトの名無しさん
20/06/14 13:01:56 435IzS7y.net
引っ張り出した数値を
ABS関数
ROUND関数
MAX、MIN関数
IF関数
でだんだんフィルターを通す感覚で
で本来の数値に対応させてる
VBAでそれをやる力を得るには5年はかかるな
俺じゃ
828:デフォルトの名無しさん
20/06/14 13:26:59.00 0qngbhsm.net
限定的な使い方になるが、連想配列でユーザ定義型使いたい時に代わりにクラスモジュール使うって手がある
829:デフォルトの名無しさん
20/06/14 13:44:32.79 attwzNFV.net
質問ですが、列が3つありそのうち2つが検索用ワードで
これを元に検索し3つ目のセルにあるワードを配列に収めていく処理を行いたいです。
例えば、こういったテーブルがあります。
すずき、いちろう、170
すずき、じろう、171
たなか、さぶろう、172
検索条件を1列目「すずき」2列目「条件なし」とした時、170,171を配列に収める
検索条件を1列目「すずき」2列目「いちろう」とした時、170を配列に収める
と、やろうとした時どういった処理が考えられるでしょうか。
830:デフォルトの名無しさん
20/06/14 13:51:33.71 nNGIeJAo.net
データベースのアンド検索クエリ覚えなはれ
831:デフォルトの名無しさん
20/06/14 13:52:24.03 0qngbhsm.net
>>801
オートフィルタで抽出して3列目を配列に格納
832:デフォルトの名無しさん
20/06/14 14:09:01.53 NfMb0cpJ.net
>>801
まず表の範囲をテーブル化
そしたらテーブル操作の処理使えて簡単
URLリンク(officetanaka.net)
833:デフォルトの名無しさん
20/06/14 14:16:14 UBYu/Pyg.net
>>801
逆にどういった処理も考えられないの?
834:デフォルトの名無しさん
20/06/14 14:28:07 attwzNFV.net
ありがとうございます。
テーブル化の方向で調べてみます。
835:デフォルトの名無しさん
20/06/14 17:08:34 zv9EPLCI.net
ユーザー定義関数をさ、AutoFill使って連続した複数セルに「=MyFunction()」みたいな感じで
代入していくじゃん
数式は正確に代入されてるのになぜか#VALUE!のエラーがでるんだよなぁ
計算対象になってるセルの1つをダブルクリックして値を入力するモードにしてから
そのまま何もしないでエンター押すと、さっきまで#VALUE!だったところが
再計算されて正常にセルに表示される
オートフィルに備えて連続セルの一番先頭にVBAから個別に代入しておいたセルがあるんだけど
ここはちゃんと計算結果がでてる
んで、このセルを始点にして手動でオートフィルかけて数式いれるとちゃんと計算される
手動オートフィルの結果代入された数式とVBAのAutoFill使って代入した数式を比較しても全く同じ
でもVBAのほうだけは#VALUE!ですわ
これ一体なんなのさ
一通り調べてわからんかったからAutoFillやめてForで回していれたった
やっぱ俺にはこういう原始人的なコードがあってるわ
836:デフォルトの名無しさん
20/06/14 17:36:38 0qngbhsm.net
>>807
計算対象のセルが更新された時自動で関数が処理される設定になってないから
837:デフォルトの名無しさん
20/06/14 17:49:03.80 AaZP5Hye.net
>>806
ワシのやり方を参考にするなら
Youtubeのチャンネル登録してな。
838:デフォルトの名無しさん
20/06/14 18:50:39.41 zv9EPLCI.net
>>808
手動・自動のやつでしょ
もちろん自動になってるわ
Forで回して数式代入したときは普通に計算されるから理由としてはいまいちじゃね
あと手動でオートフィルしてもいけるしね
表の右端に何列か並んでる数式は全部計算されるんだけど
下端にあるやつがだめなんだよね
どちらも全く同じパターンで代入してんだよね
まぁForでできるからいいんだけどな
839:デフォルトの名無しさん
20/06/14 19:19:38 0qngbhsm.net
>>810
シートじゃなくて関数の設定
volatire
840:デフォルトの名無しさん
20/06/14 20:00:28.24 Nip9LUw0.net
>>811
volatile (揮発性) じゃね?
841:デフォルトの名無しさん
20/06/14 20:18:20.66 95POjxnT.net
>>807
> =MyFunction()
みたいに引数がないと>>811が言うようにvolatile指定しないと再計算されない
引数にセルとか範囲を指定してあると指定されたセルや範囲の値が変更されたら再計算される
842:デフォルトの名無しさん
20/06/14 21:59:15.66 NTnc+gBz.net
>809
本人?。GW終わって更新控えめな気がする
843:デフォルトの名無しさん
20/06/15 00:54:28.92 otdT67Yk.net
フォームを開いている際にセルをクリックしようとしても阻止されるんですが、
この行動を行った際にフォームを閉じるという処理をすることはできますか?
844:デフォルトの名無しさん
20/06/15 00:59:25.05 AC0AKbql.net
ユーザーフォームのイベントで制御できなきゃ無理じゃね
一覧くらい見たんだろ
845:デフォルトの名無しさん
20/06/15 02:14:12 VIqxNPAl.net
>>814
この人はダメだね。
コメントでちょっと突っつかれただけで
コメント欄オフにするしプライドが高すぎ。
知識や経験が豊富で教え方も上手いとは思うけど
ユーチューバ―には向いてないと思うわ。
846:デフォルトの名無しさん
20/06/15 05:44:07.25 YCbdWLsV.net
>>811
>>813
Application.Volatile
入れてみた
結果だけど、やっぱボタン押して数式代入した直後はダメだった
変らず#VALUE!
変化があったのは計算対象になっているセルを1つ変更すると、
MyFunctionが入っているセルの全てが再計算されて正常値が表示されるっていう点ね
Volatile入れる前は、変更セルを計算対象としてるセル1つだけが再計算された
ちなみにMyFunction(rng As Range)です。すんません
あと、これ重くなりそうでちと考えてしまう
847:デフォルトの名無しさん
20/06/15 10:48:29 zn0xvlk+.net
>>818
ボタンのコードの後ろに、Application.Calculate とかを入れる
848:デフォルトの名無しさん
20/06/15 11:02:05 zn0xvlk+.net
>>815
フォームを閉じるにはUnload ステートメント、非表示にするだけなら hide メソッドを使う
セルクリックが目的なら、ShowModal=False か、フォームのShowメソッドで vbModeless を指定すれば、閉じなくてもいいよ
849:デフォルトの名無しさん
20/06/15 22:32:32.01 qQkMiS3I.net
>>818
よくわかってなくてすまぬが数式入ってるセル全部選択して
Selection.Value = Selection.Value
とか「=」を「=」に置換するとかして内容同じだけど編集したことにすると
全部計算される、ってのは根本的な解決方法じゃないけどそれは別の問題?
850:デフォルトの名無しさん
20/06/15 22:40:50.61 eWIek9um.net
>>821
代入で再計算させるなら formula = formula だぞ
851:デフォルトの名無しさん
20/06/15 22:42:03.32 GtKitEiM.net
このスレの住民ってVBAエキスパートとか余裕な感じ?
852:デフォルトの名無しさん
20/06/15 22:58:28.87 MWB6z4Ac.net
余裕でダメだと思う。
運転歴20年のやつが、教習所の学科試験に通るかどうか。
853:デフォルトの名無しさん
20/06/16 01:37:43.85 vbVHH0Hs.net
練習問題を見た感じ、満点は無理だけど合格はできると思う
854:デフォルトの名無しさん
20/06/16 02:23:10 4czdKWOA.net
人によるだろう
855:デフォルトの名無しさん
20/06/16 08:13:35.35 4RAL3CE7.net
>>819
それ以前試してだめでしたわ
>>821
>>822
解決方法なのかどうかは置いておいて、面白い視点だなって思いました
Selection.Formula = Selection.Formula で、問題のあった2行のうち1行は行けました
この2行の違いを分析すると何か見えてくるかもしれないなぁ
似たような方法なんだけど、これはいけた
Dim ary
ary = Sheet1.Range("G11:AH11")
Sheet1.Range("G11:AH11") = ary
数式は表の最下部の行 G50:AH50 の各セルに入っていて、
例えばG50の数式はG11を引数の一部として使っている
計算の対象となっている値の一部を代入し直してみたってこと
Forで回して数式入れていくのは見た目ごちゃごちゃするから
わかりやすさっていう点ではこっちの方がいいのかな
856:デフォルトの名無しさん
20/06/16 12:20:48.09 6wBq1IET.net
>>824
運転歴20年の奴は余裕で通る。
というか、はっきり言ってVBAエキスパートは初心者と変わらんよ。
某掲示板で質問者にもっと勉強してね的なこと言ったら持ってたようだった。
857:デフォルトの名無しさん
20/06/16 19:13:50.26 Kui7C9E3.net
リストビューなるものを触ってみましたが2点分からないです。
①データを転記する際にwith文を使うとうまく出来て、使わないと一行ずつズレるのは?
Me.ListItems.Add
.Text = 111
.SubItems(1) = 222
.SubItems(2) = 333
End With
Addして追加だからズレるのだろうけど、withって単なる省略だから同じ意味じゃないの?
②転記したリストビュー全項目ループするにはどうしたいいですか?
858:デフォルトの名無しさん
20/06/16 20:14:01.04 v7FumBBx.net
Doしたらいい
859:デフォルトの名無しさん
20/06/16 21:46:13.61 aBdT/SFF.net
いや呼び方の問題とか、FormatだのStrComp関数だのあんまり使わんの出るから模試はやったほうがいいよ
860:デフォルトの名無しさん
20/06/16 21:52:16.10 aBdT/SFF.net
>>829
withはコード省略じゃなくて参照。
(増やす)ってメソッド処理は一回だけで、(増えた項目)って出力インスタンスを参照できる形になる
with 使わないと毎回(増やす+編集)の処理になる
861:デフォルトの名無しさん
20/06/16 21:57:13.61 aBdT/SFF.net
項目じゃなくてリストの間違いだった
862:デフォルトの名無しさん
20/06/16 22:40:42.45 woSalLPH.net
>>827
Selection.Calculate でもダメなんですよね?
863:デフォルトの名無しさん
20/06/16 23:47:36.73 cErksS8E.net
>>822
そうそう間違えました
表示形式が反映されないときに.Value使ったんでついそれ書いちゃいました
864:デフォルトの名無しさん
20/06/17 00:48:13.69 VnGmvv1H.net
>>835
表示形式反映させるなら.Formula = .Formula では
865:デフォルトの名無しさん
20/06/17 13:19:05.23 vz74rE0X.net
.Shimura = .Ushiro
866:デフォルトの名無しさん
20/06/17 15:24:21 3v2Pocgc.net
そのコマンド打ったら参照先が見つかりませんってエラーが出たんだが
867:デフォルトの名無しさん
20/06/17 15:55:47.59 F6Gn58oB.net
だめだこりゃ!
868:デフォルトの名無しさん
20/06/17 17:19:39.75 AebhaO3Q.net
前スレの人達のくれた今の職場にいる限り永久に使える心臓部になるプロシージャ3つ
これのおかげで救われた
後はひたすら勉強しないといけない
ただそのせいで毎日
869:夜中の2時とかまで強迫観念に捕らわれたように本やサイト見て体壊しかけてる 前スレの人達ありがとう
870:デフォルトの名無しさん
20/06/17 17:52:05.46 VnGmvv1H.net
独り言板へどうぞ
871:デフォルトの名無しさん
20/06/17 18:14:13.33 LyT08W7k.net
そこまで初心者の人がやらなきゃいけないのか…
専門の派遣でも雇えば…
872:デフォルトの名無しさん
20/06/17 18:25:49 1+VGIPZ0.net
>840
前スレのどれ?
873:デフォルトの名無しさん
20/06/17 19:41:41.88 3u8uTgOs.net
まあ嘘だろうけどな、そんなん
874:デフォルトの名無しさん
20/06/17 20:29:26.87 Pc4G9CL1.net
前スレ見えないけど
フォルダ内のテキストすべての特定の部位から文字を全部抽出するコード
これです
875:デフォルトの名無しさん
20/06/17 20:47:48.75 6I8rhd2p.net
車輪の再発明どころか劣化真似事をありがたがるような馬鹿は消えろよ
876:デフォルトの名無しさん
20/06/17 21:02:20.52 UkLP/htk.net
>>836
数式を値で張り付けたときに表示形式が反映されなかったんでValueだったんですよ
877:デフォルトの名無しさん
20/06/17 21:30:10.13 VnGmvv1H.net
>>847
値貼り付けでは反映されんよ
878:デフォルトの名無しさん
20/06/18 00:14:55.64 +xg8PxB0.net
下記のような2次元配列があります。
1,りんご
2,ばなな
3.みかん
これの果物名の列だけをセルに代入したいですが、簡単な方法はありますか?
現状、果物の列を一端列数0の配列に入れなおしてそのままセルに代入する案しか思いつきませんが、
もっとスマートな方法あれば教えてください。
879:デフォルトの名無しさん
20/06/18 00:29:49 b73sLWwm.net
行列入れ替えは考慮外なの?
参考は沢山出てくる
EXCELのVBAで2次元配列の特定の列または行を1次元配列に変換する方法
qiita.com/takahasinaoki/items/1295c3df5ddfb13bdf8e
880:デフォルトの名無しさん
20/06/18 01:18:10.70 AEhoYLDr.net
>>849
3だけピリオド
881:デフォルトの名無しさん
20/06/18 08:45:41 CbKzbr3Z.net
>>849
貼り付け先の果物の前の列が消されても良いなら配列から1、2、3消してそのまま貼り付ける。
駄目なら貼り付け先の値を配列に入れてから貼り付ける。
貼り付け先の値を入れるのは本末転倒だからそういうデータが少ない場合以外は勧めない。
882:デフォルトの名無しさん
20/06/18 09:42:50.65 1Z+MjfLn.net
>>849
地道に入れ直すしかない
883:デフォルトの名無しさん
20/06/18 15:10:31.12 JIQPCGLI.net
てか配列から直接セルに代入しないといけないってのは
データ数が多いとか速度重視したいとか?
そうでないなら基本通りにFor使って入れりゃいいだけなんだけど
884:デフォルトの名無しさん
20/06/18 15:51:42.38 AEhoYLDr.net
セルに入れるのがそもそも簡単なのに何ができないんだかわからん
885:デフォルトの名無しさん
20/06/18 16:29:20.31 DGNmlHkR.net
おまいら質問をちゃんと読んでるか?
「簡単な方法はありますか?」なんだから、Forで回すのは嫌ってことだろ
つまり回答は「そんな方法はない」
886:デフォルトの名無しさん
20/06/18 16:32:36 DGNmlHkR.net
ステップ数を減らしたいだけなら、一旦そのまま全部ワークシートに入れて2列目だけコピペか1行目を削除すれば数行で完結する
たぶんForより速い
887:デフォルトの名無しさん
20/06/18 16:33:11 DGNmlHkR.net
書き間違い→1列目を削除
888:デフォルトの名無しさん
20/06/18 17:30:14.12 AEhoYLDr.net
質問がどっかの問題の引用っぽく感じたので答えはかかないけどね
889:デフォルトの名無しさん
20/06/18 17:38:49.86 Kimfxpnn.net
同じ社員同士なのにエクセルの便利機能とかを
情報共有しないのってなんなんだろう
890:デフォルトの名無しさん
20/06/18 17:57:51.44 1Z+MjfLn.net
ループからの抜け方、①と②どっちが推奨?
①
do while
for
if
脱出フラグ = true
exit for
end if
next
if 脱出フラグ then exit
891:do loop ② do while for if 脱出条件 then exit do next loop
892:デフォルトの名無しさん
20/06/18 17:57:55.15 AEhoYLDr.net
嫌われているんだろ
893:デフォルトの名無しさん
20/06/18 17:58:44.91 1Z+MjfLn.net
>>860
今まで関わった職場わりとしてるが
894:859
20/06/18 18:01:15.31 1Z+MjfLn.net
①の3行目のifは脱出条件な
895:デフォルトの名無しさん
20/06/18 18:12:03 AEhoYLDr.net
>>861
処理の抜けや他の処理に影響がないならという条件付きで?、
場合によっては exit sub 、exit function でも書く
896:デフォルトの名無しさん
20/06/18 19:24:08 LKxMxESP.net
do whileの条件とifの条件ををandで繋いでdo while
loop行の前でi=i+1(forのカウンタ代わり)
これでよいのでは
897:デフォルトの名無しさん
20/06/18 19:39:21.23 ck4WAMd+.net
GoToの使用を躊躇しない。
898:デフォルトの名無しさん
20/06/18 19:42:12.81 1Z+MjfLn.net
>>866
二重ループの抜け方の作法を聞いてるんだが
899:デフォルトの名無しさん
20/06/18 19:48:21.18 KBH9L3ob.net
do whileとforで2重ループするのが確定で、外側まで一気に抜けるのが確定なら2を選ばない理由がない
900:デフォルトの名無しさん
20/06/18 19:53:02.72 DGNmlHkR.net
>>868
二重ループの内側から一気に抜けたい時は、俺なら内側のループを別プロシージャにするか、Do Loopを二重にする
コード量によってはフラグ変数やExitは見通しが悪くなる、別の言い方をすれば終了条件がわかりづらくなるからあんまり使いたくない
901:デフォルトの名無しさん
20/06/18 20:17:54.42 1Z+MjfLn.net
>>866,869,870
とりあえず処理に問題なければ一気に外に抜けること自体は問題ないってことか
確かにDoに変えるのも手だな
適当に使い分けることにするわサンキュー
902:デフォルトの名無しさん
20/06/18 20:18:23.62 1Z+MjfLn.net
間違えたわ>>865だ
903:デフォルトの名無しさん
20/06/18 20:21:15.52 ao9b7VBW.net
>>861
囲碁なら上、オセロなら下
904:デフォルトの名無しさん
20/06/18 20:25:42.22 eqFwPDXL.net
すごく個人的には、Do Untilで書いた方が「抜ける!」って読みやすい
905:デフォルトの名無しさん
20/06/18 20:26:39.51 eqFwPDXL.net
Do whileよりって話ね
そう書けば抜ける複数条件をDoの後ろに書いて違和感が無い
906:デフォルトの名無しさん
20/06/18 20:28:18.94 XkUbux+a.net
これ… >>873に『その心は?』って聞いてあげた方がいいの?
907:デフォルトの名無しさん
20/06/18 20:33:29 ao9b7VBW.net
>>876
おじいちゃん出しっぱなしで片付けないんだもん
908:デフォルトの名無しさん
20/06/18 20:34:24 vZk8Xm54.net
Gotoはもちろんのこと、余程のことがない限りはExit For(Do)使うよりはExit Function使った方がいい
909:デフォルトの名無しさん
20/06/18 21:01:16 ob2ctoKl.net
>>878
そんなこたあね―な。
910:デフォルトの名無しさん
20/06/18 22:48:55.15 Swy0cO/s.net
Do While
何で
Loop
While
2つあるの?
Wend
911:デフォルトの名無しさん
20/06/18 23:00:26.73 6Vkb8BK5.net
vbaだから
912:デフォルトの名無しさん
20/06/18 23:21:26 1Z+MjfLn.net
>>880
while~wendは過去の名残
今はdo whileを使うのが正しい
913:デフォルトの名無しさん
20/06/18 23:40:35.48 Cax/ofky.net
一応、while wendは最後までループ抜けさせないぞって読ませ方ができる
知ってる人が少なくなってるからむしろ逆効果のお節介となってきているが
914:デフォルトの名無しさん
20/06/19 00:17:23.49 NwluTwH5.net
行番号とか代入のLetとかも使ってるやつはいない
過去の名残があちこちにあるのがVBA
915:デフォルトの名無しさん
20/06/19 08:29:01.10 VZXzW3Q1.net
do while~loopって構文が気に食わんわ
do [処理] while [脱出判定] loop
もしくは
while [脱出判定] do [処理] loop
のほうが思考に沿う
ってかdo必要?
916:デフォルトの名無しさん
20/06/19 09:57:59.84 UXZn7YtP.net
VBA必要?
917:デフォルトの名無しさん
20/06/19 09:58:43.65 wZIpnWDZ.net
Excelが必要としてるんだ
918:デフォルトの名無しさん
20/06/19 16:55:48.19 8jNiNgQB.net
だってVBAだから
919:デフォルトの名無しさん
20/06/19 18:51:31.92 c4aN/6Uq.net
エクセルマクロとして代替えがないから必要だな
920:デフォルトの名無しさん
20/06/19 21:17:20.11 RlTsj/W2.net
職場の人が書くマクロ、わかりやすいんだけど無駄改行多くてスクロールしないと全体像掴めないでつらい
921:デフォルトの名無しさん
20/06/19 21:26:36.78 8GB492Jb.net
>>885
While [脱出判定]
[処理]
Wend
922:デフォルトの名無しさん
20/06/19 23:55:48.34 +/P4LWyU.net
>>890
実は強制終了対策で改行してるとか?
923:デフォルトの名無しさん
20/06/20 00:04:01 6cdt+s4Y.net
>>885
構文解析でトークンの先読みが少なくて済むための配慮じゃないかな、知らんけど
924:デフォルトの名無しさん
20/06/20 00:41:32.09 YZMPfrl8.net
>>885
英語として
Do while a is b. If a is bigger than b, then break..
というのと
While if a is bigger than a, do something.
どちらが自然かという問題だったようだ。どっちも変だけど
925:デフォルトの名無しさん
20/06/20 02:09:29 qvmNBmpu.net
>>890
職場での問題なら職場内で解決しなされ
926:デフォルトの名無しさん
20/06/20 04:41:54.35 heakYJWv.net
ちょ、VBAのCollectionのAddメソッドってvalue/keyの順番だったのかよぉ
C#もJavaもPythonもkey/valueの順だから勘違いしてたわ!
なんかおかしいとおもった
927:デフォルトの名無しさん
20/06/20 08:01:08.69 ygihVcRE.net
>>896
Add時にKeyを省略できるからね
省略するとKeyがどうなるのかは知らんけど
928:デフォルトの名無しさん
20/06/20 09:40:22.78 heakYJWv.net
>>897
重複排除できてねぇぢゃねぇかクソ言語がぁぁぁ!って思ってましたごめんなさい
929:デフォルトの名無しさん
20/06/20 10:42:49.25 m9vPjHEn.net
>>898
重複排除したいならdictionaryの方がいいんじゃないか
930:デフォルトの名無しさん
20/06/20 12:12:13.86 RmKRgXjX.net
>>890
それは1プロシージャの行数が多いということかな?
それはダメダメだ。
そういうことになることはあるけど、本人が書ける奴なら自分でも分かってるかもね。
時間があれば直すんだけどってのは時々ある。
931:デフォルトの名無しさん
20/06/20 12:16:26.19 RmKRgXjX.net
>>896
Dictionaryと逆だから注意。
932:デフォルトの名無しさん
20/06/20 12:24:38.59 CytyTodc.net
excelからwordのoleなのですが、印刷プレビュー画面が表示されている
あいだは処理を停止させておきたのですが、どうすればできますか?
また、excelのほうのPrintPreviewメソッドではそれが実現できるのですが、
その違いはなんなのでしょうか。
Dim WORD As Object
Set WORD = CreateObject("Word.application")
WORD.Documents.Open(filePath)
WORD.PrintPreview = True
Do Until WORD.PrintPreview = False
Loop
933:デフォルトの名無しさん
20/06/20 12:44:36 ygihVcRE.net
>>898
重複排除したきゃKey指定すればいいだけだろ
てか、そういう使い方しかしたことないわ
934:デフォルトの名無しさん
20/06/20 12:57:07 m9vPjHEn.net
keyの位置間違えててできなかったって話だろ…
935:デフォルトの名無しさん
20/06/20 15:27:33.55 ygihVcRE.net
ああすまん、よく読んだらそうだな
936:デフォルトの名無しさん
20/06/20 15:53:54.10 wuXUOHn9.net
PCに疎い人達の集まる職場
週に1回の頻度で1200個の数値を4時間かけて手打ちしてたのを3秒で終わらせるマクロ組んで改善提案→何かわからんけど組んだんだろ で300円
他のシートやブックに行き来しやすいように
図形に文字入れてハイパーリンクをセットしたのを2つ作った
→これはいいぞ 1000円
もう嫌だ
937:デフォルトの名無しさん
20/06/20 15:58:25.34 MH9+mSJC.net
300円とか1000円って何?
938:デフォルトの名無しさん
20/06/20 16:02:10 wuXUOHn9.net
>>907
改善提案出すとお金貰える仕組みの会社だから
トヨタグルーやトヨタ系とかは結構そうじゃないかな
939:デフォルトの名無しさん
20/06/20 16:08:51.15 MH9+mSJC.net
>>908
単にプレゼンというか説明下手なだけじゃないの?
940:デフォルトの名無しさん
20/06/20 16:23:05.64 wuXUOHn9.net
>>909
もうマクロに関してそこは諦めたわ
if関数使ったりそういう改善のが1000円や1500円で貰えるからそっちでいってる
同僚から組んで欲しいってのも全部断ってる
58歳のパソコンに疎すぎる人に説明する必要性もないかな
941:デフォルトの名無しさん
20/06/20 17:02:57.89 wVoXfuuE.net
まぁ、「実際の能率の向上」より「誰にでも分かりやすく使い易い」にウエイトが傾いてるってのはよくあることじゃね。
どんな評価方法か知らんけど。
・直接的に恩恵を受ける人の数
⇒あくまで例えばだが、>>906の「3秒マクロ」で仕事が楽になるのが数人しかいない、とか、
「図形2つ」が割と広い範囲で使える上に、他の職場でも応用が利く、とか。
・柔軟性
⇒例えば3秒マクロに何かしら元となるデータがあると仮定して、
そのデータを出力するシステムの仕様に変更があった場合対応できなくなる、とか。
他方、図形2つの方は文字どおり図形2つ作って文字入れてハイパーリンクを加えただけなので、
例えば参照先URLなりが変わったとしても、比較的対応が容易だし、
よほどのことがなければ「使えなくなる」ということが考えられない、とか。
・上司のその時の気分、あるいは好かれ具合
⇒それな
942:デフォルトの名無しさん
20/06/20 17:21:32.15 qvmNBmpu.net
>>910
同じような所が10カ所(ファイル)あったら10000円~15000円もらえるのかな
943:デフォルトの名無しさん
20/06/20 17:21:48.48 XQZF02H8.net
相談もなしに勝手なマクロを組んだことで減点対象になったのだろう
もしかしたら、その作業は近々システムの変更でなくなる予定だったかもしれない
作業以外の目的があったのかもしれない
残業が多いなと思っていたら、
余計なものを作って遊んでいた、減給されないだけましだろう
944:デフォルトの名無しさん
20/06/20 17:41:36.37 qvmNBmpu.net
マクロの変更も有識者間でコードレビューして評価報告書提出して上司に確認のサインもらって
修正連絡票回覧するまでやらないとクレームはいったりするよね
知らない間に勝手にマクロが書き換えられていたとか言われたらやばいだろ
945:デフォルトの名無しさん
20/06/20 18:45:21.31 m9vPjHEn.net
>>906
わかりやすく説明するなり評価方法に基づいたアピールするなりすりゃいいじゃん
946:デフォルトの名無しさん
20/06/21 05:53:32.39 I80zoHyc.net
お前らの職場って大変そうだな
おれんところなんか俺しかVBA触れるやついないから好き放題やってるわ
947:デフォルトの名無しさん
20/06/21 09:05:05 zpzjHnJy.net
俺も俺も
初心者に毛が生えた程度の知識だけど周りはPC素人ばかりだからやりたい放題だ
948:デフォルトの名無しさん
20/06/21 10:08:30.56 7ZJTD4pQ.net
同じく
PCマイスターみたいに見られてるけど、薄々勘付かれているかもしれない
949:デフォルトの名無しさん
20/06/21 13:43:26.96 /utMrS/w.net
エクセルはそこそこ使いこなせるがマクロは全く知らないってな人に
簡易マクロ作っただけで「ハァ?お前天才かよ?」みたいな反応されるよな。
褒められる優越感と小学生でも書けるコードで褒められる自分へ嫌悪感で
葛藤しまくるよな
950:デフォルトの名無しさん
20/06/21 14:00:37.96 ANltB6r3.net
いや、別に。
951:デフォルトの名無しさん
20/06/21 15:15:50.34 0WnnnX3x.net
両方とも別に
952:デフォルトの名無しさん
20/06/21 17:39:52.32 1ON8fipo.net
>>919
他の奴らってそもそも業務が違うだろ
953:デフォルトの名無しさん
20/06/21 17:47:04.76 k1xdFuXh.net
>>922
出来ない正社員と出来るバイトの俺
954:デフォルトの名無しさん
20/06/21 17:50:26.78 HGSDkuyA.net
>>919
読んでるこっちが恥ずかしい
955:デフォルトの名無しさん
20/06/21 18:05:28.37 xIpMoW7x.net
スレチだけどPHPは
ハイパーテキスト・プリプロセッサだってのに
初歩でも神呼ばわりだぜ
【PHP】下らねぇ質問はここに書き込みやがれ 11
URLリンク(itest.5ch.net)
96
> hoge.com/****
>に指定した数字入れて、html出力ってできますか?
103 foreach(
107
>>103
神!おっぱ・(自粛)
956:デフォルトの名無しさん
20/06/21 19:11:40.34 f7O4FwhH.net
よくメニューに[+]があり、
これを押すと隠してあったメニューが表示されるといった仕組みがあるのですが、
これをエクセルで実現することはできるでしょうか。
957:デフォルトの名無しさん
20/06/21 19:46:46.68 HGSDkuyA.net
簡単なのはVisibleプロパティをFalseからTrueにする方法
958:デフォルトの名無しさん
20/06/21 19:54:02.33 apqHGiEy.net
>>926
ユーザーフォームの使用になる
URLリンク(e-tech.life.hyogo-u.ac.jp)
ユーザーフォームのイベントで条件を記述してやるのが良い
959:デフォルトの名無しさん
20/06/21 19:54:53.04 jOeQJVeR.net
>>926
グループ化使うとか
960:デフォルトの名無しさん
20/06/21 20:09:41.65 Ca9zW0qx.net
>>923
100人規模で周りの人達ができない正社員なわけない
バイト数人が使う程度のマクロだろ
961:デフォルトの名無しさん
20/06/21 20:17:13.26 dwey+O0N.net
俺も大したことできないけど零細で偉そうにしてるわ
人生なんて鶏口牛後で十分なんだよ
962:デフォルトの名無しさん
20/06/21 21:52:25.43 LN5eNKcO.net
>>930
100人前後の会社で
60人ほど派遣
20人くらいがバイト
10人くらいのパート
正社員は10人ほどのうち確実に7人はエクセルもまともに使えないレベルなのでWord使ってる
エクセルを使うのは正社員1人派遣1人バイトの俺
3ヶ月に一度現れる謎の5人組はよく分からない
そいつらの給料が月70~80万円って言ってた
俺のバイト代は月12万円くらいだった
この国はおかしいって狂ってるよ
963:デフォルトの名無しさん
20/06/21 22:06:48.15 jOeQJVeR.net
大して優秀なわけでもないやつがちょっと優位な部分があるだけで周りを見下すあるある
964:デフォルトの名無しさん
20/06/22 00:04:33.28 CPlWdThO.net
>>932
Excel vba ができる人が少ないのは会社の重要な業務ではないからだろ
エクセルはあくまで補助的な使い方しかしてないんじゃねーの
965:デフォルトの名無しさん
20/06/22 00:17:00.59 W8AXf1Mi.net
採用条件に入ってないし学校やパソコン教室でも普通は教えないからできないのが普通
そもそもプログラミングとは何か、どういう場面で使うと便利なのかもわかってない人が大半
うっかり省力化すると事務員の首が飛ぶから、人の心があれば黙ってるものだし
966:デフォルトの名無しさん
20/06/22 01:24:44 CPlWdThO.net
一般的なプログラミングの話をするならExcelは不向き
そもそも表計算ソフトの延長でしかない
967:デフォルトの名無しさん
20/06/22 02:04:25.88 6UseFZdn.net
>>934
はいその通りです。
【60代パート】リングファイルを棚にしまう
【社長】ハンコついてパートに渡す <
968:br> 【60代パート】Wordから印刷して社長の机に置く 【50代課長】エクセルからWordにコピペしたファイル名とフォルダをパートに指示 【20代大卒美人派遣】エクセルで原価計算して課長に渡す 【30代バイト】梱包出荷伝票をエクセルに打込み
969:デフォルトの名無しさん
20/06/22 02:11:43.53 NG7/h+3B.net
>>937
多分そういうこと言ってるわけじゃないと思うぞ
970:デフォルトの名無しさん
20/06/22 02:30:48 6UseFZdn.net
>>938
え?
Excel vba を仕事にするのが会社の重要な業務である業界ってどこですか?