VBAなんでも質問スレ Part2 [転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2015/05/21(木) 10:52:44.71ID:KLv0vQmm
VBAを使った質問ならなんでもござれ
本来の対象であるオフィスアプリを操作する以外の話もOK

ゲーム作り、Webアクセス、外部アプリの操作
COM(ActiveX)、Win32API、.NET Framework、DirectXなどなど
VBAで実行するものであればなんでも質問してください

VBAを開発環境としていろいろ作っちゃいましょう

前スレ

VBAなんでも質問スレ
http://peace.2ch.net/test/read.cgi/tech/1342087380/

関連スレ

Excel VBA 質問スレ Part36 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/tech/1419718732/

Access VBA 質問スレ Part1
http://peace.2ch.net/test/read.cgi/tech/1328536426/

VBプログラマ質問スレ(Ver.6.0 まで) part64
http://peace.2ch.net/test/read.cgi/tech/1393069842/

Excel総合相談所 118 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/bsoft/1430352555/
328デフォルトの名無しさん
垢版 |
2017/06/05(月) 21:06:49.56ID:bd1ggU41
その文字を含むセルを、行ごと削除したり、行ごとコピーしたりと、いろいろしたいので質問致しました。
2017/06/05(月) 21:25:48.60ID:nSGQpg3a
鮮やかな丸投げっぷりにワラタ
作成依頼OKな Excel VBAスレと間違えてない?
2017/06/05(月) 21:31:47.51ID:tRFV5HQ5
>>328
とりあえず、複数行を選択するところをマクロの記録で見てみたら?
ctrlキー押しながら選択するのとshiftキーを押しながらのとで。
2017/06/05(月) 21:41:12.12ID:jKyX/qwq
検索対象のセル範囲でForループを回す
セル値に特定文字を含むセルが見つかる度にEntireRowを取得して変数に入れるかUnionで選択対象の範囲をマージしていく
ループ終了後にSelectする
以上
332デフォルトの名無しさん
垢版 |
2017/06/05(月) 21:45:35.27ID:epzJZZwH
>>327
Ctrl+Fで検索しろやボケナス
ちゃんと行選択までしてくれるぜ
333デフォルトの名無しさん
垢版 |
2017/06/05(月) 22:37:03.17ID:bd1ggU41
ごめんなさい、質問者です。
ここじゃなかったのですね。上に上がったやり方でできそうなのでやってみます。ありがとうございます
2017/06/06(火) 05:49:03.11ID:tznXutzN
色々細かい条件でどんなコードが効率いいか、変わってくるでしょ。

例えばそのセルがあるのは、特定の行だけとか、検索文字列はセルに完全一致なのか含まれるのか、など。
2017/06/06(火) 09:11:47.41ID:YhE+Nuz8
331だが、同じ行に該当セルが複数ある場合は無駄が生じるな
実現したい機能次第だが、工夫が必要かもな
336デフォルトの名無しさん
垢版 |
2017/06/07(水) 19:31:10.77ID:e13xfCG0
はじめまして。以下2点、教えていただけると幸いです。
環境は、OS:Windows7, Excel2010です。よろしくお願いします。

1.プルダウンの初期値設定
セルA1にりんご、A2にバナナ、・・・のようにA列にある項目をプルダウンで選択したいです。
このとき、「A列のj行目(パラメータ選択可能)を初期値にしたプルダウンをB1に設置する」VBAのコマンドを教えていただきたいです。

2.ファイル名の変更
aaa.txtというファイルをデスクトップに出力するマクロを作れました。
このマクロ実行後、再度実行するとaaa(2).txtのファイルを、再度実行するとaaa(3).txtのファイルを出力・・・
このようなVBAのコマンドを教えていただきたいです。
2017/06/07(水) 21:49:32.12ID:nqbSOdK9
>>336
コマンドはありません
2017/06/07(水) 22:23:27.64ID:L3ua+fDn
>>336
txtファイルをデスクトップに出力っていう日本語の破壊力がやべぇ
2017/06/08(木) 05:33:24.44ID:1DKX/Vru
>>336
1
・B1セルを選択してからマクロの記録を実行
・入力規則でリストを選択にリストの内容でA列を選択する
・マクロ記録の終了をする
・できたコードを修正してA列の任意のセルをデフォルトにするように変更する

2
・デスクトップにaaa.txtが存在するかチェックする。
・存在しない場合はaaa.txtを作成して終了。
・存在する場合はDo~Loop中にデスクトップにaaa(i).txtが存在するかチェックする
・存在する場合はiをカウントアップして次のループ
・存在しない場合はそのiを使用してaaa(i).txtを作成して終了。
2017/06/25(日) 17:10:56.20ID:/fEFwdln
A1セルに =NOW()-TODAY() と入力すると
現在時刻が表示されますが。

MsgBox Range("a1")
とすると 0.0110212・・・と言ったような数値が出ます。

Dim now As Date 
now=Range("a1")
と型を指定した変数に格納してやると 
MsgBox now で 21:49:32 といった一般的な時間表記を示せますが、

変数化を省略して
MsgBox Range("a1")〜に補足コードを書くなどで同じ処理を実現する方法は無いのでしょうか?
2017/06/25(日) 17:20:36.10ID:A4A49pvi
MsgBox Range("A1").Text
とか
MsgBox Format(Range("A1"), "hh:mm:ss")
とか
2017/06/25(日) 17:26:03.97ID:/fEFwdln
>>341
なんと!!
変数をだらだら定義すること無く綺麗さっぱり解決できました!ありがとうございました。m(_ _ )m
2017/07/17(月) 17:20:20.62ID:7pjXcMGR
プロシージャの中で1回しか使わないのに、わざわざ変数にするやつとかいるよね。(しかもハンガリアン記法で)

100行に満たない程度のコードなら、Withステートメント使ったほうがむしろ可読性は上がる。
2017/07/17(月) 17:25:26.05ID:l3sSLpQS
マシンパワーが貧弱だった大昔ならともかく、今時はリソースを気にする必要なんてないんだから、可読性を最優先で記述するべきだよ。
2017/07/23(日) 22:54:52.46ID:EbUz/UVB
>>343
ああ、俺だ。
Ubound(配列)とか、For〜Nextの中で何回も実行すると、
なんか遅いような気がして、一度変数に入れちまう。
2017/07/24(月) 03:07:48.10ID:/3vdoRrW
>>345
何回も実行するなら変数に入れたほうがいいんじゃね?
2017/09/01(金) 23:04:37.73ID:RmCwgyLh
>>345
(1)
For I1 = 1 to UBound(xxx)
For I2 = 1 to UBound(xxx)
(2)
J=UBound(xxx)
For I1 = 1 to J
For I2 = 1 to J

普通に考えて本のチョット早いと思われますが、記述の労力ほどじゃない。
他の方の書いてますが、今は、処理速度が物凄く早くなっています。
気にしなくていいと思います。
ただし、私はEXCELでVBAを書くのですが、シートのセルに書き出すと物凄く遅くなる。
VBAの配列とかメモリーならばほとんど気にしなくていいです。
ですから、メモリー内で処理して最後の最後にシートに書くようにしてます。
2017/09/02(土) 08:26:52.52ID:tqo/3wkP
>>347
> ですから、メモリー内で処理して最後の最後にシートに書くようにしてます。
基本中の基本だからいちいち書かなくてよろし
2017/09/05(火) 10:53:29.80ID:WmSrV0rS
アノニマスに入会したいんですがVBA知ってるだけで入れますか?
あと入会ってどうやんの? スーツ着て履歴書持って事務所に面接に行くの?
350デフォルトの名無しさん
垢版 |
2017/09/05(火) 12:25:17.40ID:P2jRu54V
たまにハローワークに求人出てるから行ってみれば?
2017/09/12(火) 02:10:43.27ID:2wFcaigK
超初心者です
同じブック内の複数のシートにある顧客データをUserFormを用いて(検索するイメージ)抽出し、別のシートへ出力するコードを書きたいのですがいまいちわかりません。
大変困っているのでヒントをくださればありがたいです。
2017/09/12(火) 02:30:21.88ID:U3/YorLf
>>351
超初心者には無理です
パソコン教室に通ってせめて初級をクリアしてから質問してください
2017/09/12(火) 04:10:40.96ID:2wFcaigK
>>352
返信ありがとうございます
Excel自体触ったことない超初心者ですが頑張っているところです( ??? )
2017/09/12(火) 08:28:28.15ID:GFFccSR9
>>351
自称初心者がどこでUserFormとか覚えたの?
まずはシート上でやってみようね
355デフォルトの名無しさん
垢版 |
2017/09/12(火) 12:27:40.35ID:7XJfZGpJ
どこで覚えようとお前の知った事じゃねえだろw
なんだこのバカはwww
2017/09/12(火) 13:06:30.39ID:N1ygkJfx
>Excel自体触ったことない超初心者

ユーザーフォームを作ったことはあるのか?
 無けりゃ、この時点でやろうとしていることはもう無理

VBAはほんの少しでも書いたことはあるのか?
まぁ最初は>>354の言うようにシート上で実現して、それをユーザーフォームにもっていくのが順当
というか触ったこと無いって時点で釣り確定
2017/09/12(火) 16:38:53.70ID:2wFcaigK
VBA参入門書とネットの知識を詰め込みました。
Excel初心者は本当です。友達に教えてもらいつつやっています。気分を害された方、すみません。
>>356さん非常に分かりやすいです。
二日間くらい最初からコードを書こうとしてもがいていましたが、マクロの記録が使えそうな気がします。
そのコードをいじってボタンで起動するユーザーフォームとくっつけるイメージで挑戦してみます。
2017/09/12(火) 16:41:08.80ID:2wFcaigK
>>354さんもありがとうございます!参考&励みになります
2017/09/12(火) 20:34:49.57ID:/wKXVszF
このスレで一番の基地外が満を持して遅れて登場
2017/09/12(火) 20:51:47.27ID:U3/YorLf
俺のことかな?
2017/09/13(水) 00:17:05.57ID:DHqL5rdG
>>357
ユーザーフォームでその機能を実現する必然性が感じられない
フィルタオプション機能を用いて、検索結果の出力先を新規シートに設定するだけで事足りると思うぞ
2017/09/14(木) 07:47:53.75ID:w7wWQUJY
フィルタオプションとマクロの記録で8割方完成できるな
2017/09/15(金) 10:19:31.10ID:wFtq+9vG
ADOの事でちょっと質問です
変数を定義する時に

Dim wkR as New ADODB.Recordset

ってするんだけど、RecordsetとRecordの違いって何?
364
垢版 |
2017/09/15(金) 10:57:55.87ID:oEkV+GvG
http://matsuri.2ch.net/test/read.cgi/morningcoffee/1472464096/
2017/09/18(月) 06:42:59.71ID:xbe9SlrW
>>361-362 ありがとうございます、簡単なプログラムですが完成して感動しました。
Ifとマクロの記録が万能すぎることを肝に銘じてこれからもがんばります( ??? )
2017/09/18(月) 15:10:56.93ID:7Xxpypu9
>>365
万能過ぎないけどね。
そればっかり使ってる人は永遠に初心者なままだし、色々な面で出来の悪いプログラムになる。
自動生成されたコードのそれぞれの意味を理解して自分なりに書けるようになると上達する。

例えば
Range("B4").Select
Selection.Value=10
のようなコードが生成されると思うけど意味を考えたら
Range("B4").Value=10
で良いとわかるよね。
2017/09/18(月) 20:44:49.78ID:ydCO3vgD
>>363
Recordset オブジェクト
https://msdn.microsoft.com/ja-jp/library/cc364264.aspx
Record オブジェクト
https://msdn.microsoft.com/ja-jp/library/cc364270.aspx
2017/09/18(月) 23:50:59.42ID:XctjYupl
すみませんお力添えをお願いします!
エクセルマクロ(VBA)の件でお尋ねいたしたく思います!
まずグラフの系列名はセル参照で表示させてます
シート名:あいうえお
適用グラフ:グラフ4
系列範囲:A11:Z11
必要なデータ選択は全ての系列で済ませています
あとはグラフで不要な系列を削除したいため、グラフに乗せたくない系列名は”×”になるようにしてます
この系列名”×”をVBAで自動的に削除させることは可能でしょうか?
またグラフは別シートの数値入力をもって自動作成される仕様にしているので、トリガーは設けません
デフォルトだと全部”×”のため(初めは数値データの入力がないため)
数値が入ると正しい系列名に変更されるため、VBAではまず”×”で削除して、”×”以外の系列名に変わったら復活するという構想を練っています
とりあえず、まず”×”を消すコードを見よう見まねで書いてみたのですが動作しませんでした
消すのは良いですが復活させるのも組み込むとなるとちんぷんかんぷんです
是非ともご教示お願いします!
Sub test()
Dim d As Long
Dim i As Long
Dim j As Long
For i = 2 To Sheets.Count
d = Range("A11:Z11").End(xlUp).Row
With Worksheets(i).ChartObjects("グラフ 4").Shapes.AddChart.Chart
.ChartType = xlLineMarkers
For j = .SeriesCollection.Count To 1 Step -1
If .SeriesCollection(j).Name <> "×" Then
.SeriesCollection(j).Delete
End If
Next j
End With
Next
End Sub
2017/09/19(火) 20:55:54.78ID:2SFxAhMD
>>367
説明サイトへのリンク、ありがとう。
取り敢えず、「階層構造のデータ間を移動する手段として」のRecordオブジェクトは使うこと無さそうw
2017/09/20(水) 01:17:31.22ID:2dxgF4qE
IF文初心者ですが
3つ数字の中から一番小さい数を判定したいのですが、
elseや入れ子で複数書けば判定できるというのは推測がつきますが
最も簡潔に記述するとしたらどんな記述方法がありますでしょうか?

例)
33 12 3

3を抽出
2017/09/20(水) 05:19:03.75ID:mkPuPLWs
>>370
最小値 = WorksheetFunction.Min(Array(33, 12, 3))
2017/09/20(水) 05:37:31.94ID:mkPuPLWs
>>370
x = 33
y = 12
z = 3
If x < y And x < z Then
  最小値 = x
ElseIf y < x And y < z Then
  最小値 = y
Else
  最小値 = z
End If
2017/09/21(木) 21:28:21.10ID:j1SDXypf
>>372
>>371
明確な答えをありがとうございます。
やはりIFの場合は372が妥当なようですね。
2017/09/21(木) 22:56:33.81ID:8rkXkN3+
>>372は < じゃなくて <= にしないと誤判定する
2017/09/22(金) 06:56:36.59ID:zUC9dslV
例題の対象が3ではなくて1000とかに増えたら破綻するだろw
2017/09/22(金) 07:13:14.29ID:TPoybrYY
>>375
数字3つという前提を勝手に変えるこういう馬鹿はなんだろう
2017/09/22(金) 09:34:43.90ID:KphHXryq
汎用性を考慮しないのか。
なかなかひどい。こういう人もいるという参考になったわ。
2017/09/22(金) 09:37:13.81ID:oVXNeyl2
ソートアルゴリズム書くだけやん
2017/09/22(金) 09:54:47.89ID:yLI54yGL
372のはアルゴリズムと言うよりその場しのぎの対応
2017/09/22(金) 10:13:30.00ID:yLI54yGL
配列に入れてループで最小値と比較して小さければ最小値を更新していくのが定石なのでは。
2017/09/22(金) 10:29:30.23ID:WIc1mdfR
だからMin関数で一発なのに、無駄に車輪の再発明をしたがるやつが多くてリンダ困っちゃう
2017/09/22(金) 10:32:40.77ID:4is4PUWl
>>379
順次比較も立派なアルゴリズムの一種なんだが
2017/09/22(金) 14:42:52.69ID:KphHXryq
これはひどい
2017/09/22(金) 14:57:48.38ID:WETwNkme
IF初心者とか言ってる人に何言ってるんだか

あといつからこのスレはEXCEL VBA限定になったんだ
2017/09/22(金) 20:39:03.91ID:zUC9dslV
>elseや入れ子で複数書けば判定できる
>最も簡潔に記述するとしたらどんな

という問いに、elseや入れ子の回答するのは無能以前に答えになってないのとちがう?
2017/09/22(金) 22:15:07.62ID:250/7oh7
え?え?日本語理解できてる?
質問には「Elseを使わずに」なんてどこにも書いてないぞ

ざっくり意訳すれば「IfとElseの数を最小に」する方法を聞いてるんだろ
2017/09/23(土) 06:12:18.34ID:6cN/4Ux4
372のは374が書いてるように、例えば
x=1
y=1
z=3
と入れただけで誤判定する。アルゴリズムの最低限を割ってるぞ。
372がベストアンサー(笑)だと質問者が思ったなら気の毒なので念のため。
2017/09/23(土) 07:50:16.98ID:nAanI8EG
そもそも計算量も最少じゃないしな
普通に

最小値 = x
If y < 最小値 Then 最小値 = y
If z < 最小値 Then 最小値 = z

ってやる方がわかりやすい
2017/09/23(土) 10:07:44.78ID:hX9NlXap
うん、ベストアンサーはMin使った方だね。
俺だったら迷わずMin使用する。
同時にMin使わない方法も考える。
配列ループも考えた。

でも、別にIf文使っても良いんじゃない?
そんな目くじらを立てるようなことじゃない。
390デフォルトの名無しさん
垢版 |
2017/09/23(土) 12:22:56.52ID:/uotOgAp
>>386が分かってないバカ多すぎw
2017/09/23(土) 14:36:58.57ID:OMtgmcpv
だから372はif elseだとしても最小(計算量的に)の答えにもなってないし、そもそも答えとして間違ってるって話だろ
2017/09/23(土) 17:06:13.24ID:HTwX+3ra
それは勉強する奴と仕事にしてる奴のスタンスの違いだな。
仕事にしてる奴はIfを使わなきゃならないなんてことに遭遇しないから、はなっから抜けてる。
2017/09/23(土) 23:00:39.63ID:9AVefP05
必ずIfを使う縛りなら>>388がベストアンサー
ソートアルゴリズムの最初の1回目のループを展開してるだけなんだけど、基本中の基本のやり方
394デフォルトの名無しさん
垢版 |
2017/09/23(土) 23:28:57.04ID:UvR7p8sn
>>392
if文の使い方を聞かれてmin()関数を教えるような人はプログラムを仕事にしないで欲しいのです
いえ、仕事をしないで欲しいのです
2017/09/23(土) 23:49:29.12ID:9AVefP05
仕様書はちゃんと読んで、条件は無視しちゃいけないよね
2017/09/24(日) 02:12:05.73ID:3B64fACL
勉強のため何が何でもIfだけで解決しなきゃいけなかったのか、
まだ初心者だからMinという便利な物があることを知らなかったのか
それによって変わってきちゃうからー
2017/09/24(日) 08:43:50.06ID:LX+6AD0q
>>395
仕様書ならそれが正解
しかし案件定義なら顧客が何をしたいかを読み取ってより良い方法を提案することも必要
そもそも>>370にはIf使えとは書いてないし
2017/09/24(日) 09:20:40.69ID:SDtHFGLj
>>394
分かってねえなあ。
勉強を教える仕事じゃないならユーザーにとって一番使いやすいとか、速度が速いとか、ユーザーが満足するようなものかどうかが大事なのであって、どんなコードじゃなければならないとかの要望は普通無い。
そして、メンテナンス性とかコードの書き方に関してもMinの方が良いとなればそもそもの問い掛け自体仕事で発生することは無い。

そして実際には、何でMinじゃ駄目なのと問い掛けられない奴は仕事の出来ない奴ということになる。
(もちろん明確に理由が有るならIfで書く。)
指示通りにしか作れない奴じゃ単なるコーダって奴になるしかない。

仕事ではMinを使わないなら明確な理由が存在するし、打ち合わせなんかのやり取りで既に意思統一されてる筈だ。
つまり今回の問い掛けのような事態は存在しない。
399デフォルトの名無しさん
垢版 |
2017/09/24(日) 10:07:44.74ID:lViLIhLn
>>393
だな、簡素で分かりやすく奇麗なコードだ
400デフォルトの名無しさん
垢版 |
2017/09/24(日) 15:00:43.73ID:3BjqQEbI
>>398
なんか仕事をしてる体で話してますけど
あなたの想像上の仕事では自分にとって都合の悪い事態は存在しないのですね
さぞかし楽しかろうとは思いますが
あなたは社会に出ないでください
2017/09/24(日) 16:46:42.97ID:jWeMnfEt
>>400
仕事をしたことの無い奴には分かるまいw
2017/11/08(水) 05:55:55.96ID:mrDDFdOE
こっちを再利用?
403デフォルトの名無しさん
垢版 |
2017/11/08(水) 09:41:10.42ID:VRSOCYqC
再利用したいけどExcelの話をしたいときに困るのかな
2017/11/08(水) 10:15:34.15ID:6WBHyYXn
そのうち立つんじゃね
2017/11/08(水) 11:10:32.82ID:JKxKdsR3
「Excelの話」したいんだったら総合相談所でやれ
406デフォルトの名無しさん
垢版 |
2017/11/08(水) 11:59:42.12ID:VRSOCYqC
なるほどなるほど
407デフォルトの名無しさん
垢版 |
2017/11/08(水) 12:50:47.32ID:+KUB1/9h
早速質問
今vbaでマップ使って
とある表の集計を行なっております
一つのkeyに対しアイテムが複数あるので
配列で入れようと思ったのですがうまくいきません
何か良い方法はありませんか?
2017/11/08(水) 16:45:58.99ID:pE/cp7rq
もう少し具体的にどうぞ
409デフォルトの名無しさん
垢版 |
2017/11/08(水) 21:23:36.05ID:+KUB1/9h
>>408
一つのキーに対して複数のアイテムがある
これをどうにかこうにか出来ないか

やりたいことは
キーが重複された二次元配列を
グループ化&合計を取りたい
410デフォルトの名無しさん
垢版 |
2017/11/08(水) 21:28:10.43ID:aQlO1Uq5
>>409
エクセルならピボットテーブルでいいんじゃない?
411デフォルトの名無しさん
垢版 |
2017/11/08(水) 21:32:09.19ID:+KUB1/9h
>>410
自動で計算させるんだよ
412デフォルトの名無しさん
垢版 |
2017/11/08(水) 21:33:56.61ID:aQlO1Uq5
>>411
ピボットテーブルをvbaで作ればいい
2017/11/08(水) 21:38:43.05ID:vt31E4Mm
エスパーじゃないんだから、もっと具体的に説明しないと、何がしたくて何ができないのか判んないよ。
そして多分だけど普通にifで分岐するプログラムを書くだけだと思う。
414デフォルトの名無しさん
垢版 |
2017/11/08(水) 21:40:37.09ID:0sSRKP/b
いや多分forでループするプログラムを書くだけだと思う
415デフォルトの名無しさん
垢版 |
2017/11/08(水) 22:38:17.07ID:+KUB1/9h
データシート
キー 金額a 金額b
1 10 20
2 20 50
1 30 90

結果(期待)
キー 金額a 金額b
1 40 110
2 20 50



上のような感じのシートがあって
集計かけたり
平均とったり
最大値だったりしたい
416デフォルトの名無しさん
垢版 |
2017/11/08(水) 23:08:47.37ID:aQlO1Uq5
>>415
そのくらいの事を自分でできないなら
ピボット使った方がいいと思うぞ
バグって計算結果が合わないから
417デフォルトの名無しさん
垢版 |
2017/11/08(水) 23:25:51.57ID:0sSRKP/b
そのくらいの事を自分でできないから質問してんだろ
そのくらいの事を理解できないなら質問スレに来ない方がいいのに
418デフォルトの名無しさん
垢版 |
2017/11/08(水) 23:38:17.91ID:aQlO1Uq5
そのくらいの事も判らない人にも実現できる方法を提案してるだろ
2017/11/09(木) 00:17:55.65ID:hDRDp7cw
https://i.imgur.com/wtkTdlA.png
上のように各列の情報に応じて、一定の条件にヒットしたら評価欄に追記、ということをしているのですが、
上手い書き方が思いつかず、冗長で読みにくいコードになってしまいます
https://i.imgur.com/cE0kOho.png

どうすれば綺麗で読みやすいコードになるでしょうか?

特に、変数(ここでは「評価」)の参照先のセルに書き込みつつ、変数の値自体も更新するスマートな方法と
If文で2つの条件が当てはまった場合に両方の処理を実行させる(ここでは40点以下と60点未満のIf文を一つで済ませるとか)方法があれば知りたいです
2017/11/09(木) 03:11:02.61ID:HAMnFTNh
>>419
配列を使え
あとソースを読んだり修正したりやりにくいから画像にせずそのままテキストとして貼ってくれ

科目 = Array("国語", "算数", "理科")
For j = 0 to 2
  点数 = i.Offset(0, j + 1)

  If 点数 <= 40 Then
    i.offset(0, -1).Value = i.offset(0, -1).Value & 科目(j) & "の点数が以下略" & vbCrLf

みたいな感じで教科の数に関わりなく記述を1回にできる
条件が3つ以上ある時はCaseで分ける方法もあるけど、どんどん文字列を追加するならIfを並べる今の書き方で別に悪くない
2017/11/09(木) 08:39:48.02ID:m3IDSHjM
ありがとうございます、やってみます
(コードは行数制限とインデントが反映されなかったのでつい画像に…すみません)
422デフォルトの名無しさん
垢版 |
2017/11/10(金) 08:15:39.86ID:vvDXnBRS
オートフィルの連続データでA1が0なら終わりでそれ以外なら下にオートフィルの連続データを追加して行くってどうやればいい?
2017/11/10(金) 08:52:12.12ID:EDTrdPIL
何をどこまで追加すんの?
424デフォルトの名無しさん
垢版 |
2017/11/10(金) 09:18:59.30ID:vvDXnBRS
下に一つオートフィルの連続データを追加してもしもその数が0以外ならばその下に一つづつ追加してもし0になったら終わるってことです

オートフィルの連続データまでは成功しました!
2017/11/10(金) 12:58:08.94ID:MIqJX5DT
>>424
何をやりたいのかさっぱりわからんから
> オートフィルの連続データまでは成功しました!
のコードを晒してくれ
2017/11/10(金) 22:07:12.41ID:KbRkXeO5
何をどーしたいのかよーわからんが、
オートフィルの連続データが完成したならDo  While Loopでも使えばいいんじゃね
427デフォルトの名無しさん
垢版 |
2017/11/11(土) 10:59:01.85ID:t1iacSS7
そうですね連続データと探す作業分けてDo until使ってみたら目的は達成できました ありがとございます
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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