[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 07/02 04:32 / Filesize : 267 KB / Number-of Response : 1038
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Excel VBA 質問スレ Part66



1 名前:1000 [2020/05/10(日) 13:43:45 ID:Nkoph0aj.net]
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK

※前スレ
Excel VBA 質問スレ Part65
https://mevius.5ch.net/test/read.cgi/tech/1584430040/

※デフォルト設定

983 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 18:44:26 ID:CPlWdThO.net]
管理者が無能だと会社がなくなる
管理者が有能なら無能な人材に高い給料は出さない

984 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 19:03:11 ID:f1XJDlES.net]
周りは出来ない語りしてもお前が優秀になれるわけじゃないんだよなぁ

985 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 23:08:43.37 ID:eYhHFxw6.net]
VBAでイキるの面白すぎるからやめて

986 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 23:16:11.85 ID:R2BScS4S.net]
やめたら面白くないだろ

987 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 00:55:19 ID:TulROOqi.net]
30代の梱包バイトのおばちゃんがVBAできないとか比較する方がおかしい

988 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 01:00:04 ID:bSgedWTD.net]
VBA素人です
というか、ちょっとだけPHPを書いたことがある程度のプログラム初心者です

セルA1:A5のどこか一箇所に値を入力すれば全てのセルが埋まるようにしたいのです
全てのセルには入力された値に対して決まったパーセンテージをかける
たとえばA1に100と入力されたらA2~5にはそれぞれA1*○%(○はA2~5とも異なる)
A2に100と入力されたらA1及びA3~5にそれぞれA2*○%

多分条件分岐でいうと
if A1が空白でないならA1には入力した値、A2*○%、A3*○%・・・
elseif A2が空白でないなら・・・

みたいな

989 名前:感じになるのかなと思うのですが冗長ですよね…
do Whileで書けるのか、他にスマートな書き方があるのか見当がつきません

フォームでどのセルに入力するか選んで値を入れてボタンを押すと
全てのセルが埋まる、というのが理想です

アドバイスを頂けたらありがたいです
よろしくおねがいします
[]
[ここ壊れてます]

990 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 01:09:31.87 ID:kv8byCI9.net]
for r=1 to 5
if 入力されたセルじゃない場合
cells = 入力された数値かける定数
end if
next

みたいな感じでは?

991 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 01:33:11.82 ID:kv8byCI9.net]
あー、これじゃダメみたい、すみません。



992 名前:デフォルトの名無しさん [2020/06/23(火) 01:53:19.74 ID:bE26MwSl.net]
>>957
ちょっとだけとか書くなよ
全くわかっていない馬鹿だろうが

993 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 02:25:19.01 ID:akfNW9d5.net]
入力セルによらず割合が一定なら100%の値を出してからそれをループで入れろバカか

994 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 03:24:31 ID:TulROOqi.net]
>>957
俺なら入力は1か所(A1)だけにして A2〜A5 は 入力させない or "=A1" にでもするかもな

995 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 05:39:38.41 ID:BwhdgQkj.net]
>>957ユーザーフォームにリストボックスとテキストボックスとコマンドボタンを作成し以下
Dim val As Double
Private Sub UserForm_Initialize()
  With ListBox1
   .AddItem "A1"
   .AddItem "A2"
   End With
End Sub
Private Sub CommandButton1_Click()
  If UserForm1.ListBox1.Value="A1" then
val = UserForm1.TextBox1.Value
 A1
Else If UserForm1.ListBox1.Value="A2" then
 val = UserForm1.TextBox1.Value
 A2
 End If
End Sub
Sub A1()
 Range("A1").value=val
 Range("A2").value=val*0.2
 Range("A3").value=val*0.3
 Range("A4").value=val*0.4
 Range("A5").value=val*0.5
End Sub
Sub A2()
 Range("A1").value=val*0.1
 Range("A2").value=val
 Range("A3").value=val*0.3
 Range("A4").value=val*0.4
 Range("A5").value=val*0.5
End Sub

996 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 07:50:59.28 ID:xSXJEKQO.net]
意図が伝わるようにユーザーフォームで入力させた方がいいように見えるな
visibleのtrue ,false切り替えでうまくやりたい

997 名前:955 mailto:sage [2020/06/23(火) 09:36:33.10 ID:bSgedWTD.net]
ご教示下さったみなさまありがとうございます

>>963
丁寧にありがとうございます
書いて頂いたのでなんとかなりそうです

998 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 10:14:19.39 ID:eVy5K5L9.net]
コピペ

999 名前:961 [2020/06/23(火) 12:34:05.64 ID:5v5sJ6te.net]
>>965
スマホで寝ながら打ったから
Win7のExcel2010にコピペして確認してみたらミスってた
訂正。大文字だったスマソ then>Then
https://i.imgur.com/LQvQjn9.png

1000 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 13:08:23.25 ID:AqGxlhQk.net]
VBEが勝手に大文字に直してくれるから、ステートメントは全部小文字で入力してるわ

1001 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 16:26:51.99 ID:lLVW3adv.net]
UsedRangeの使えなさに絶望しました
あれってなに目的で使えんの?

>>968
おれもそれチェック代わりに使ってるんで
変数はほぼ全て大文字スタートだわ
他言語だとやらないけどVBAはエディタがあれなんで



1002 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 17:18:02.36 ID:JWFUfSAs.net]
>>969
間違った使い方してるだけじゃないのか

1003 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 18:21:08.83 ID:coVE1fyX.net]
>>969
グラフ自動生成するときとかに使ってる

1004 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 18:22:23.82 ID:z7FZNG3t.net]
usedrangeはファイルの中身を検査する時に使うな
個人情報が入ってないかとか

1005 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 18:28:15.83 ID:X4/0OZ1g.net]
UsedRangeは普通に使うぞ。
寧ろ、一番使うかも。

Excelの固定じゃない範囲を取得する場合、これでOKというようなものが無い。
都度考えることになる。

1006 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 21:35:23 ID:LvHFRgi0.net]
値化とか

1007 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 21:40:15 ID:LvHFRgi0.net]
2次元の動的配列にバックデータを突っ込むときに使う

1008 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 22:16:19.70 ID:zDUcrbEK.net]
やっと念願の夢かなって生産現場に異動できそう
PCをあまり使わなくなる職場にいけるから
マクロ組んだりもほとんどしなくて済むから嬉しすぎる
そしてここで教えてくれた人たちへの恩も忘れられんよ

1009 名前:デフォルトの名無しさん mailto:sage [2020/06/23(火) 22:27:25.32 ID:UicElvK7.net]
ひでぇなぁ忘れられちゃうのかぁ残念
汗だくの梱包現場からエアコン効いた部屋に行きたいよ

1010 名前:デフォルトの名無しさん [2020/06/24(水) 10:22:12 ID:XfIA0IcT.net]
Sub Sample1()
Dim Target As Range
Set Target = Range("P:P").FiVBA エラー 91
これで
オブジェクト変数または With ブロック変数が設定されていません。t.Offset(0, 1)
End Sub

何がだめ?

1011 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 10:26:15 ID:7kmsZdqz.net]
FiVBAって命令あるの?



1012 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 13:23:42.08 ID:hNjrAS7L.net]
tってなんだよ
宣言してないオブジェクト変数が動くわけないだろ

1013 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 13:58:43 ID:LpqCs0qI.net]
なにがだめって聞かれても全てがとしか

1014 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 14:29:06 ID:jVCudKEf.net]
ちゃんと内容を確認しないのが駄目

1015 名前:デフォルトの名無しさん [2020/06/24(水) 14:58:07.29 ID:ec8khzg7.net]
ごめん間違えた
これです
Sub Sample1()
Dim Target As Range
Set Target = Range("P:P").Find(What:="田中")
MsgBox Target.Offset(0, 1)
End Sub

1016 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 15:31:45.69 ID:7kmsZdqz.net]
>>983
https://www.moug.net/tech/exvba/0050116.html

ここでも参考にしな

まず確実に言えるのは、Nothingのエラー対処ができてない

1017 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 16:03:07.42 ID:A95Qwidx.net]
>>983
田中がないんだろどうせ

1018 名前:デフォルトの名無しさん [2020/06/24(水) 16:11:20.98 ID:ec8khzg7.net]
Set Target = Range("P:P").Find(What:="田中")

この田中を変数というか特定のセルの値にしたい場合どうしたらいい?
A1のセル内容を参照したいとする

1019 名前:デフォルトの名無しさん [2020/06/24(水) 16:18:53 ID:ec8khzg7.net]
あ、できた
ごめん自分は京都大学霊長類研究所のジェームズという7歳のチンパンジーだからVBAよくわからないんだ
皆さんありがとございまうす

1020 名前:デフォルトの名無しさん [2020/06/24(水) 16:21:57 ID:4/s69xMY.net]
>>987
解決内容を書けチンパンジー

1021 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 17:53:24 ID:A95Qwidx.net]
自己紹介や自分語りはいらん



1022 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 19:08:49.57 ID:Ra7WLueW.net]
>>986
Nothingのエラ―対処が出来て無いってのはみんなが通る道だ。

1023 名前:デフォルトの名無しさん [2020/06/24(水) 19:26:45 ID:aYj5R9EO.net]
自分で使う分にはエラー終了でも正常終了でも変わらんし

1024 名前:デフォルトの名無しさん [2020/06/25(木) 14:24:07.38 ID:UL1INOQI.net]
In Range("R:R")
というのがあるとして
R列全体を選択するのはマストなんだけど
ホントはR7からソレ以下全部にしたい
In Range("R7:R")ではうまく行かないみたいだしこういう場合ってどうしたらいいんだろう

1025 名前:デフォルトの名無しさん [2020/06/25(木) 14:52:26.82 ID:fOnLoXil.net]
usedrangeじゃ駄目なんですか?

1026 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 15:35:07.92 ID:eDJAI9Nl.net]
テーブルにすれば?

1027 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 15:38:48.25 ID:emOdy//g.net]
cellsでそこから最終行まで指定すればいいじゃない

1028 名前:デフォルトの名無しさん mailto:sage [2020/06/25(Thu) 16:00:07 ID:eepaDL1r.net]
colmns.countが最終桁番号だしApplication.Intersectで指定2範囲の重複部分だせるし

1029 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 16:24:03.44 ID:oGWS7APt.net]
直感的にやるならRange(Range("R7"),Range("R7").End(xlDown))でいいんじゃない

1030 名前:デフォルトの名無しさん mailto:sage [2020/06/25(Thu) 17:54:02 ID:xz2BRr ]
[ここ壊れてます]

1031 名前:37.net mailto: >>992
何故最終行までという指定を省こうとするのか?
先に真っ当な手順で実現できてないのに想像で勝手に省いてうまくいかないってどういうつもりなのか?
[]
[ここ壊れてます]



1032 名前:デフォルトの名無しさん mailto:sage [2020/06/25(Thu) 17:54:59 ID:orhJfehX.net]
きたこれ
VBA歴2ヶ月なのに俺は職場のPCの先生から神様扱い

1033 名前:デフォルトの名無しさん [2020/06/25(Thu) 18:26:51 ID:BKkovaqh.net]
何そのダメ先生

1034 名前:デフォルトの名無しさん mailto:sage [2020/06/25(Thu) 18:32:44 ID:0L1EfJ/H.net]
おだてられて浮かれてるだけだなw

1035 名前:デフォルトの名無しさん mailto:sage [2020/06/25(Thu) 18:45:05 ID:goJhPQKd.net]
うー

1036 名前:1001 [Over 1000 Thread .net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 46日 5時間 1分 20秒

1037 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<267KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef