Excel VBA 質問スレ Part66
レス数が1000を超えています。これ以上書き込みはできません。
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK
※前スレ
Excel VBA 質問スレ Part65
https://mevius.5ch.net/test/read.cgi/tech/1584430040/
※デフォルト設定 30代の梱包バイトのおばちゃんがVBAできないとか比較する方がおかしい VBA素人です
というか、ちょっとだけPHPを書いたことがある程度のプログラム初心者です
セルA1:A5のどこか一箇所に値を入力すれば全てのセルが埋まるようにしたいのです
全てのセルには入力された値に対して決まったパーセンテージをかける
たとえばA1に100と入力されたらA2~5にはそれぞれA1*○%(○はA2~5とも異なる)
A2に100と入力されたらA1及びA3~5にそれぞれA2*○%
多分条件分岐でいうと
if A1が空白でないならA1には入力した値、A2*○%、A3*○%・・・
elseif A2が空白でないなら・・・
みたいな感じになるのかなと思うのですが冗長ですよね…
do Whileで書けるのか、他にスマートな書き方があるのか見当がつきません
フォームでどのセルに入力するか選んで値を入れてボタンを押すと
全てのセルが埋まる、というのが理想です
アドバイスを頂けたらありがたいです
よろしくおねがいします for r=1 to 5
if 入力されたセルじゃない場合
cells = 入力された数値かける定数
end if
next
みたいな感じでは? >>955
ちょっとだけとか書くなよ
全くわかっていない馬鹿だろうが 入力セルによらず割合が一定なら100%の値を出してからそれをループで入れろバカか >>955
俺なら入力は1か所(A1)だけにして A2〜A5 は 入力させない or "=A1" にでもするかもな >>955ユーザーフォームにリストボックスとテキストボックスとコマンドボタンを作成し以下
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 意図が伝わるようにユーザーフォームで入力させた方がいいように見えるな
visibleのtrue ,false切り替えでうまくやりたい ご教示下さったみなさまありがとうございます
>>961
丁寧にありがとうございます
書いて頂いたのでなんとかなりそうです >>963
スマホで寝ながら打ったから
Win7のExcel2010にコピペして確認してみたらミスってた
訂正。大文字だったスマソ then>Then
https://i.imgur.com/LQvQjn9.png VBEが勝手に大文字に直してくれるから、ステートメントは全部小文字で入力してるわ UsedRangeの使えなさに絶望しました
あれってなに目的で使えんの?
>>966
おれもそれチェック代わりに使ってるんで
変数はほぼ全て大文字スタートだわ
他言語だとやらないけどVBAはエディタがあれなんで usedrangeはファイルの中身を検査する時に使うな
個人情報が入ってないかとか UsedRangeは普通に使うぞ。
寧ろ、一番使うかも。
Excelの固定じゃない範囲を取得する場合、これでOKというようなものが無い。
都度考えることになる。 2次元の動的配列にバックデータを突っ込むときに使う やっと念願の夢かなって生産現場に異動できそう
PCをあまり使わなくなる職場にいけるから
マクロ組んだりもほとんどしなくて済むから嬉しすぎる
そしてここで教えてくれた人たちへの恩も忘れられんよ ひでぇなぁ忘れられちゃうのかぁ残念
汗だくの梱包現場からエアコン効いた部屋に行きたいよ Sub Sample1()
Dim Target As Range
Set Target = Range("P:P").FiVBA エラー 91
これで
オブジェクト変数または With ブロック変数が設定されていません。t.Offset(0, 1)
End Sub
何がだめ? tってなんだよ
宣言してないオブジェクト変数が動くわけないだろ ごめん間違えた
これです
Sub Sample1()
Dim Target As Range
Set Target = Range("P:P").Find(What:="田中")
MsgBox Target.Offset(0, 1)
End Sub Set Target = Range("P:P").Find(What:="田中")
この田中を変数というか特定のセルの値にしたい場合どうしたらいい?
A1のセル内容を参照したいとする あ、できた
ごめん自分は京都大学霊長類研究所のジェームズという7歳のチンパンジーだからVBAよくわからないんだ
皆さんありがとございまうす >>984
Nothingのエラ―対処が出来て無いってのはみんなが通る道だ。 自分で使う分にはエラー終了でも正常終了でも変わらんし In Range("R:R")
というのがあるとして
R列全体を選択するのはマストなんだけど
ホントはR7からソレ以下全部にしたい
In Range("R7:R")ではうまく行かないみたいだしこういう場合ってどうしたらいいんだろう cellsでそこから最終行まで指定すればいいじゃない colmns.countが最終桁番号だしApplication.Intersectで指定2範囲の重複部分だせるし 直感的にやるならRange(Range("R7"),Range("R7").End(xlDown))でいいんじゃない >>990
何故最終行までという指定を省こうとするのか?
先に真っ当な手順で実現できてないのに想像で勝手に省いてうまくいかないってどういうつもりなのか? きたこれ
VBA歴2ヶ月なのに俺は職場のPCの先生から神様扱い このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 46日 5時間 1分 20秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。