ttps://oshiete.goo.ne.jp/qa/5352661.html 0657デフォルトの名無しさん2018/11/15(木) 23:28:15.36ID:XqpfGkJo 分かりづらそうなので追記で、下記のところです。 宜しくお願いします a = 10 b = 200 c = 30
Max = a
If b > Max Then Max = b ElseIf c > Max Then Max = c End If 0658デフォルトの名無しさん2018/11/15(木) 23:37:03.06ID:dI+Dsxy9 Max = a If b > Max Then Max = b Else If c > Max Then Max = c End If 0659デフォルトの名無しさん2018/11/16(金) 06:18:18.01ID:biDBAQdb>>658 ありがとうございます 試してみたいと思います 0660デフォルトの名無しさん2018/11/16(金) 06:57:12.53ID:fQoG7lNZ そもそも657では最大値求められないだろ。 なぜ他の2つと比較してから決めないのか 0661デフォルトの名無しさん2018/11/16(金) 07:24:20.18ID:biDBAQdb すいません、まだ初心者でまだ理解が追いついていなくて とりあえず最大値求めるにはこういう形...とかで覚えようとしてて....頑張ります 0662デフォルトの名無しさん2018/11/16(金) 07:30:47.41ID:1oL4uemZ 658でも最大値は求められない 試しに a = 1 b = 2 c = 3 で試してみるといい。Maxが2になってしまう
Ifだけでやる場合の正解の一例 Max = a If b > Max Then Max = b If c > Max Then Max = c 0663デフォルトの名無しさん2018/11/16(金) 07:35:16.96ID:1oL4uemZ>>661 If Elseの構文は、最初のIfの条件が成立したらElse以降は処理されずEnd Ifまで飛ばされる つまり、 a = 1 b = 2 c = 3 だった場合、 b > Maxが成立したらc > Maxの部分は飛ばされてしまうからMaxは2のまま終わってしまう 0664デフォルトの名無しさん2018/11/16(金) 07:44:30.26ID:fQoG7lNZ elseやelseifは先行条件でTrueにならない場合にしか実施されない仕組みなことを理解しましょう 0665デフォルトの名無しさん2018/11/16(金) 08:11:14.61ID:nU0jfNiC>>661 このレベルを形で覚えようとしている貴方にプログラミングは向いてない 0666デフォルトの名無しさん2018/11/16(金) 09:26:27.62ID:RKO+v0zL ID変ったかも知れませんが>>656です 皆さんありがとうございます
現在のマクロは下記ですが上手くいかないです。 Option Explicit Sub practice() Dim i As Long i = 4 Dim fullPass As String 'セルのB3に C:\Users\Public\動物まとめ.xlsxと記述 fullPass = Range("B3")
Dim wb As Workbook Dim Anothersheet As Worksheet
Workbooks.Open fullPass Set Anothersheet = wb.Worksheets("カピバラ情報") Sheets.Add After:=ActiveSheet Range("A1").Select
Do While Cells(5, i).Value <> "" i = i + 1 Loop Call wb.Close End Sub
以下はスマホ上で書いてるんで動くかは不明です。 0683デフォルトの名無しさん2018/12/27(木) 09:20:24.73ID:lhYnw8ev Option Explicit Sub practice() Dim i As Long Dim fullPath As String Dim wb As Workbook 'Anothersheetじゃ分かりにくいんでopnShtに変更。 Dim opnSht As Worksheet '追加シートは変数に受けないの? Dim addSht As Worksheet
'B3に出鱈目書いて動かしたらどうなるんだろう? Set wb = Workbooks.Open(fullPath) Set opnSht = wb.Worksheets("カピバラ情報") With Thisworkbook Set addSht = .WorkSheets.Add( After:=.WorkSheets("Sheet1")) End With
'Range("A1").Selectって何の為に有るの?
'iの初期値を一番最初に書いてたけど、初めて見たとき何だか分からんかった。 '使う直前に関連処理と一緒にまとめた方が分かり易いよね。 i=4 Do While opnSht.Cells(5, i).Value <> "" i = i + 1 Loop '元のCall wb.Closeなどという書き方をしたことが無いのでいつもの自分の書き方に変更。 wb.Close False End Sub 0684デフォルトの名無しさん2018/12/27(木) 09:22:53.65ID:lhYnw8ev>>680 フォーカスを制御すべきじゃない。 いきなりRangeやCellsを使うから上手くいかないのであって、きちんとブックやシートから書けばフォーカスを制御しなければならないことは滅多に無い。 0685デフォルトの名無しさん2018/12/27(木) 09:26:03.58ID:lhYnw8ev 早速間違いだ。 fullPassと書いてる所が一ヶ所ある。 fullPathに直しておいてね。 0686デフォルトの名無しさん2018/12/27(木) 11:21:46.87ID:coxr7jtk>>684 まぁ、そうかもね。 でも最初はいろいろ試してもいいんじゃない? 0687デフォルトの名無しさん2018/12/27(木) 11:57:21.88ID:psUgzr4+>>682‐685 ありがとうございます 深夜のご指摘から>>685まで参考にしていて
念のためにいうと、元々のコードには情報を取得するコードが全く無いからこのコードだけじゃ取り込めないのは当たり前だよね。 0690デフォルトの名無しさん2018/12/27(木) 13:47:48.84ID:psUgzr4+ すいません、 不覚に気づき、 dim j as long j = 1 を追加し、ループを Do While opnSht.Cells(5, i).Value <> "" addSht.cells(j,1) = opnSht.Cells(i, 5) j = i i = i + 1 Loop にして上手くいきました、ありがとうございます。 0691デフォルトの名無しさん2018/12/27(木) 13:57:20.08ID:psUgzr4+ 細かい修正として j = i i = i + 1 の部分も i = i + 1 j = i - ○ のようにして、 無駄にできてしまう空白もなくしました。