20/06/23 00:55:19 TulROOqi.net
30代の梱包バイトのおばちゃんがVBAできないとか比較する方がおかしい
988:デフォルトの名無しさん
20/06/23 01:00:04 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:デフォルトの名無しさん
20/06/23 01:09:31.87 kv8byCI9.net
for r=1 to 5
if 入力されたセルじゃない場合
cells = 入力された数値かける定数
end if
next
みたいな感じでは?
991:デフォルトの名無しさん
20/06/23 01:33:11.82 kv8byCI9.net
あー、これじゃダメみたい、すみません。
992:デフォルトの名無しさん
20/06/23 01:53:19.74 bE26MwSl.net
>>957
ちょっとだけとか書くなよ
全くわかっていない馬鹿だろうが
993:デフォルトの名無しさん
20/06/23 02:25:19.01 akfNW9d5.net
入力セルによらず割合が一定なら100%の値を出してからそれをループで入れろバカか
994:デフォルトの名無しさん
20/06/23 03:24:31 TulROOqi.net
>>957
俺なら入力は1か所(A1)だけにして A2~A5 は 入力させない or "=A1" にでもするかもな
995:デフォルトの名無しさん
20/06/23 05:39:38.41 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:デフォルトの名無しさん
20/06/23 07:50:59.28 xSXJEKQO.net
意図が伝わるようにユーザーフォームで入力させた方がいいように見えるな
visibleのtrue ,false切り替えでうまくやりたい
997:955
20/06/23 09:36:33.10 bSgedWTD.net
ご教示下さったみなさまありがとうございます
>>963
丁寧にありがとうございます
書いて頂いたのでなんとかなりそうです
998:デフォルトの名無しさん
20/06/23 10:14:19.39 eVy5K5L9.net
コピペ
999:961
20/06/23 12:34:05.64 5v5sJ6te.net
>>965
スマホで寝ながら打ったから
Win7のExcel2010にコピペして確認してみたらミスってた
訂正。大文字だったスマソ then>Then
URLリンク(i.imgur.com)
1000:デフォルトの名無しさん
20/06/23 13:08:23.25 AqGxlhQk.net
VBEが勝手に大文字に直してくれるから、ステートメントは全部小文字で入力してるわ
1001:デフォルトの名無しさん
20/06/23 16:26:51.99 lLVW3adv.net
UsedRangeの使えなさに絶望しました
あれってなに目的で使えんの?
>>968
おれもそれチェック代わりに使ってるんで
変数はほぼ全て大文字スタートだわ
他言語だとやらないけどVBAはエディタがあれなんで
1002:デフォルトの名無しさん
20/06/23 17:18:02.36 JWFUfSAs.net
>>969
間違った使い方してるだけじゃないのか
1003:デフォルトの名無しさん
20/06/23 18:21:08.83 coVE1fyX.net
>>969
グラフ自動生成するときとかに使ってる
1004:デフォルトの名無しさん
20/06/23 18:22:23.82 z7FZNG3t.net
usedrangeはファイルの中身を検査する時に使うな
個人情報が入ってないかとか
1005:デフォルトの名無しさん
20/06/23 18:28:15.83 X4/0OZ1g.net
UsedRangeは普通に使うぞ。
寧ろ、一番使うかも。
Excelの固定じゃない範囲を取得する場合、これでOKというようなものが無い。
都度考えることになる。
1006:デフォルトの名無しさん
20/06/23 21:35:23 LvHFRgi0.net
値化とか
1007:デフォルトの名無しさん
20/06/23 21:40:15 LvHFRgi0.net
2次元の動的配列にバックデータを突っ込むときに使う
1008:デフォルトの名無しさん
20/06/23 22:16:19.70 zDUcrbEK.net
やっと念願の夢かなって生産現場に異動できそう
PCをあまり使わなくなる職場にいけるから
マクロ組んだりもほとんどしなくて済むから嬉しすぎる
そしてここで教えてくれた人たちへの恩も忘れられんよ
1009:デフォルトの名無しさん
20/06/23 22:27:25.32 UicElvK7.net
ひでぇなぁ忘れられちゃうのかぁ残念
汗だくの梱包現場からエアコン効いた部屋に行きたいよ
1010:デフォルトの名無しさん
20/06/24 10:22:12 XfIA0IcT.net
Sub Sample1()
Dim Target As Range
Set Target = Range("P:P").FiVBA エラー 91
これで
オブジェクト変数または With ブロック変数が設定されていません。t.Offset(0, 1)
End Sub
何がだめ?
1011:デフォルトの名無しさん
20/06/24 10:26:15 7kmsZdqz.net
FiVBAって命令あるの?
1012:デフォルトの名無しさん
20/06/24 13:23:42.08 hNjrAS7L.net
tってなんだよ
宣言してないオブジェクト変数が動くわけないだろ
1013:デフォルトの名無しさん
20/06/24 13:58:43 LpqCs0qI.net
なにがだめって聞かれても全てがとしか
1014:デフォルトの名無しさん
20/06/24 14:29:06 jVCudKEf.net
ちゃんと内容を確認しないのが駄目
1015:デフォルトの名無しさん
20/06/24 14:58:07.29 ec8khzg7.net
ごめん間違えた
これです
Sub Sample1()
Dim Target As Range
Set Target = Range("P:P").Find(What:="田中")
MsgBox Target.Offset(0, 1)
End Sub
1016:デフォルトの名無しさん
20/06/24 15:31:45.69 7kmsZdqz.net
>>983
URLリンク(www.moug.net)
ここでも参考にしな
まず確実に言えるのは、Nothingのエラー対処ができてない
1017:デフォルトの名無しさん
20/06/24 16:03:07.42 A95Qwidx.net
>>983
田中がないんだろどうせ
1018:デフォルトの名無しさん
20/06/24 16:11:20.98 ec8khzg7.net
Set Target = Range("P:P").Find(What:="田中")
この田中を変数というか特定のセルの値にしたい場合どうしたらいい?
A1のセル内容を参照したいとする
1019:デフォルトの名無しさん
20/06/24 16:18:53 ec8khzg7.net
あ、できた
ごめん自分は京都大学霊長類研究所のジェームズという7歳のチンパンジーだからVBAよくわからないんだ
皆さんありがとございまうす
1020:デフォルトの名無しさん
20/06/24 16:21:57 4/s69xMY.net
>>987
解決内容を書けチンパンジー
1021:デフォルトの名無しさん
20/06/24 17:53:24 A95Qwidx.net
自己紹介や自分語りはいらん
1022:デフォルトの名無しさん
20/06/24 19:08:49.57 Ra7WLueW.net
>>986
Nothingのエラ―対処が出来て無いってのはみんなが通る道だ。
1023:デフォルトの名無しさん
20/06/24 19:26:45 aYj5R9EO.net
自分で使う分にはエラー終了でも正常終了でも変わらんし
1024:デフォルトの名無しさん
20/06/25 14:24:07.38 UL1INOQI.net
In Range("R:R")
というのがあるとして
R列全体を選択するのはマストなんだけど
ホントはR7からソレ以下全部にしたい
In Range("R7:R")ではうまく行かないみたいだしこういう場合ってどうしたらいいんだろう
1025:デフォルトの名無しさん
20/06/25 14:52:26.82 fOnLoXil.net
usedrangeじゃ駄目なんですか?
1026:デフォルトの名無しさん
20/06/25 15:35:07.92 eDJAI9Nl.net
テーブルにすれば?
1027:デフォルトの名無しさん
20/06/25 15:38:48.25 emOdy//g.net
cellsでそこから最終行まで指定すればいいじゃない
1028:デフォルトの名無しさん
20/06/25 16:00:07 eepaDL1r.net
colmns.countが最終桁番号だしApplication.Intersectで指定2範囲の重複部分だせるし
1029:デフォルトの名無しさん
20/06/25 16:24:03.44 oGWS7APt.net
直感的にやるならRange(Range("R7"),Range("R7").End(xlDown))でいいんじゃない
1030:デフォルトの名無しさん
20/06/25 17:54:02 xz2BRr
1031:37.net
1032:デフォルトの名無しさん
20/06/25 17:54:59 orhJfehX.net
きたこれ
VBA歴2ヶ月なのに俺は職場のPCの先生から神様扱い
1033:デフォルトの名無しさん
20/06/25 18:26:51 BKkovaqh.net
何そのダメ先生
1034:デフォルトの名無しさん
20/06/25 18:32:44 0L1EfJ/H.net
おだてられて浮かれてるだけだなw
1035:デフォルトの名無しさん
20/06/25 18:45:05 goJhPQKd.net
うー
1036:1001
Over 1000 Thread .net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 46日 5時間 1分 20秒
1037:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています